【計算機網路】TCP IP通訊處理過程

1.資料包首部

每個分層中都會對所傳送的資料附加一個首部,其中包含了該層必要的資訊,如傳送端地址、接收端地址以及協議等相關資訊。
1


2.傳送資料包

1)應用程式處理

進行編碼處理(相當於表示層功能),管理何時建立通訊何時傳送資料等功能(相當於會話層功能)。建立連線後將資料傳送給下一層的TCP,再做實際的轉發處理。

2)TCP模組的處理

TCP根據應用的提示,負責建立連線、傳送資料以及斷開連線。提供可靠傳輸。

在資料前端附加一個TCP首部,包括源埠號、目標埠號(用以識別傳送主機跟接收主機上的應用)、序號以及校驗和(判斷資料是否被損壞)。再將資料傳送給IP。

3)IP模組的處理

IP在TCP傳過來的資料前附加IP首部,包括接收端IP、傳送端IP、上層協議等資訊。

IP包生成後,參考路由控制表決定接收此IP包的路由或主機。隨後將資料傳送給連線這些路由器或主機網路介面驅動程式,以實現真正的資料傳送。

如果不知道接收端MAC地址,則通過ARP查詢。

4)網路介面(乙太網驅動)的處理

在接收到的資料前面附加乙太網首部進行傳送處理。乙太網首部中包含接收端MAC地址、傳送端MAC地址以及標誌乙太網型別的乙太網資料協議。傳送處理中的FCS由硬體計算,新增到包的最後。FCS為了判斷資料包在傳輸過程中是否被破壞。
2


3.經過資料鏈路的包

包流動時,從前往後依次被附加了乙太網包首部、IP包首部、TCP包首部(或UDP包首部)以及應用自己的包首和資料。而包的最後則被新增了乙太網包尾。

每個包首部中至少包含兩個資訊:一個是傳送端和接收端地址,另一個是上一層的協議型別。

經過每個協議分層時,都必須有識別包傳送端和接收端的資訊。乙太網會用MAC地址,IP會用IP地址,而TCP/IP則會用埠號作為識別兩端主機的地址。


4.資料包接收處理

包的接收流程是傳送流程的逆序過程。

1)網路介面(乙太網驅動)的處理

主機接收到乙太網包以後,首先從包首部找到MAC地址判斷是否為發給自己的包。如果不是則丟棄資料。

如果是發給自己的包,就查詢包首部中的型別域,確定傳送過來的資料型別,傳給相應的子程式進行處理(若是IP型別作為傳給IP,若是ARP型別則傳給ARP處理),若沒有對應的型別,則丟棄資料。

2)IP模組的處理

IP模組收到包以後,做相似處理。如果包首部的IP地址與自己的IP地址匹配,則接收資料並查詢上一層協議。如果上一層是TCP就傳給TCP處理,如果是UDP則傳給UDP處理。對於路由器,往往接收端地址不是自己的地址,此時需要藉助路由控制錶轉發資料。

3)TCP模組的處理

TCP模組首先會計算校驗和,判斷資料是否被破壞。然後檢查是否按照序號接收資料。最後檢查埠號,確定具體的應用程式。

資料接收完畢後,接收端會傳送一個“確認回執”給傳送端。如果該資訊一直未到達,那麼傳送端會認為接收端沒有接收資料而一直反覆傳送。

資料完整地接收以後,會傳給由埠號識別的應用程式。

4)應用程式的處理

接收端應用程式會直接接收傳送的資料。如果接收正常,會返回“處理正常”的回執,否則會傳送相應的錯誤資訊。
3

——《圖解TCP IP》學習筆記