網絡中兩臺主機的通訊過程(TCP通訊)

兩臺主機通訊有兩種狀況:1.在同一網段中 2.不在同一網段中前端

(1.)在同一網段的通訊過程服務器

主機在應用層上的操做:網絡

  TCP/IP協議上tcp的端口對應的各類應用程序,客戶機要訪問某個應用程序就會要求打開主機的這個固定的端口。而客戶機本身會打開一個大於1024的隨機端口用來跟對方的主機進行通訊。用戶使用應用程序編輯信息,一個單一的會話,實際上就是一個主機應用層之間的邏輯的軟件鏈接。tcp

主機在傳輸層的操做:代理

  對數據分段(Segment),添加TCP報頭(包含源端口,目的端口,順序號,確認序列號等)接口

分段的緣由:進程

(A):可同時多個應用程序發送數據。ip

(B):數據包過大產生錯誤時,還需從新傳送,即佔帶快又佔時間,小數據包對數據流影響就小不少。路由

(C):各類網絡傳輸介質有其最大的傳輸單元限制,不容許在網絡上出現巨大的數據包。域名

主機在網絡層的操做:

  當傳輸層爲數據分段添加了TCP頭以後,將數據下發給網絡層處理。網絡層會爲傳輸層傳來的數據包添加IP報頭(包含源IP地址,目的IP地址)封裝成數據包

主機在數鏈路層的操做:

  數據鏈路層在數據包的前面封裝上數據幀頭,在數據包的後面封裝上校驗位,從而把數據包封裝成數據幀。(添加源MAC地址和目的MAC地址,若是主機不知道目標MAC地址則想交換機發送ARP廣播從而獲得目標MAC地址)

 

主機對物理層的操做:

將從邏輯鏈路層發送過來數據幀轉換成能在物理線路上傳輸的電子信號,傳遞給網絡上的轉發設備交換機,由交換機進行處理。

 交換機對數據幀的處理:

交換機接收到數據流後根據發送過來的數據幀的MAC地址查找目的主機,將數據發送給目的主機。轉發過程不改變數據幀結構。

 目的主機接收到數據幀的操做:

當目的主機接收到數據幀後對比目的MAC,如是發送給本身的,則拆去數據幀頭,發往網絡層,網絡層對比目的IP,如相同則拆包發往傳輸層,傳輸層再對比目的端口,確認相同則拆去數據段交給應用程進行數據組裝。

 

(2.)位於不一樣網段上的兩臺主機之間的通訊過程

主機A上的工做:

因爲主機A和主機B並不在同一個網段,主機A是不可能經過ARP解析到主機B的MAC地址的,同時,主機A也是一個沒有路由能力的網絡節點,因此主機A是不可能依靠本身的力量把數據發送到主機B上去的。主機A必須依靠網絡中的路由器將數據包路由到相應的目的網絡。

  主機A網絡配置:配置本身IP和子網掩碼 同時配置網關(誰爲主機提供訪問其餘網段的可能,默認網關就填誰的IP地址。‘路由器、代理服務器’)

  [DNS:DNS提供目的地址的域名解析,如在局域網的不一樣網段內,可填本局域網內的DNS服務器。若是訪問INTERNET外網的域名,則填寫ISP的DNS服務器。]

填寫了默認網關以後,主機A經過ARP解析,就能夠知道路由器A的MAC地址。當主機A要向主機B發送文件時,就能夠經過路由器A將數據包發送到目的地。

例: 主機A發送數據到其餘網段的B主機過程。

1.主機A應用層數據到傳輸層被分段,打上TCP頭(含源端口,目的端口),再向下發給網絡層,打上IP地址(含源IP,目的IP),再向下發送給數據鏈路層,打上數據幀(含源MAC,目的MAC),因爲不知道目的MAC,則在MAC上打上於網關(路由器接口)的MAC地址,發往路由器A。

 2.路由器A收到消息後,從新封裝數據幀(得知發送到B主機須要通過路由器B),因而修改源MAC地址爲路由器A的MAC地址,目標地址爲B的MAC地址,(路由器A進行NAT地址轉換)

 3.路由器B收到路由器A的信息,覈對地址,檢查IP,修改MAC,源MAC改成路由器B的MAC,(假如主機B在路由器B的子網中)目標MAC填寫主機B的MAC,即下一步將信息發送給主機B。

4.主機B接收到數據後對數據拆幀、包,TCP頭,檢查其目的地址與校驗,從新整合這些數據流以後,將這個數據流傳遞給應用層處理。

總結:

對於處於同一交換機的lan來講,進行通訊,須要知道目標的ip和mac地址,經過發生廣播數據包(通常2層目標mac地址爲FFFFFFFF,3層目標ip就爲目標ip),會像處於同一lan的全部ip進行比較,找到目標ip後向源發送一個單播包,這樣就知道了目標ip的mac地址,可是若是ip不在一個網段或者同一個lan,這時經過arp廣播,是不行的,須要路由器轉發,這就須要配置源ip的網卡以及掩碼,網關(網關須要配置成路由器接口的ip),這樣數據包的目的mac就填充成了路由器接口的mac,發生數據包到路由器,而後路由器拆包,檢查2層mac地址,發現目標mac爲本身的mac,欣喜若狂,而後拆掉3層檢查ip,發現目標ip不是本身,而後拿着目標ip的網絡號和路由表中的表項進行比較,找到最優的(最長匹配原則),若未找到就丟棄,並給源返回一個icmp錯誤,若是找到,從新封包(目標mac爲下一跳ip對應的mac地址),把數據發生下一跳地址,當數據包到後,老是進行拆包,先檢查2層mac地址是否爲本身的,若是是,再拆掉3層ip頭,檢查目標ip是否爲本身的,若是是,再拆4層,檢查目標端口號是否在監聽或者等待數據中,若是是,就把拆掉的應用數據發生給當前端口對應的進程,若未找到對應的端口,則會設置rst錯誤

注意:1.數據通訊是雙向的,好比ping ,既能夠發生數據又能夠接收數據

   2.對於路由器接口直連的網絡,直接就在路由表中生成,其餘的須要配置,(通常配置就是好比華爲 ip route-static 源ip 掩碼 下一跳地址),既要路由表配置目標ip的路由,讓其能夠到達目的地,也要配置回來的,就是源ip對應的路由,讓其能夠返回一個迴應,這纔是一個可以ping通的關鍵

arp -a查看路由表

tracert 查看到達目標ip通過多少路由,多少跳

相關文章
相關標籤/搜索