1. 程式人生 > >TCP/IP通訊過程(以傳送電子郵件為例)

TCP/IP通訊過程(以傳送電子郵件為例)

1.應用程式處理

(1)A使用者啟動郵件應用程式,填寫收件人郵箱和傳送內容,點選“傳送”,開始TCP/IP通訊;
(2)應用程式對傳送的內容進行編碼處理,這一過程相當於OSI的表示層功能;
(3)由A使用者所使用的郵件軟體決定何時建立通訊連線、何時傳送資料的管理,這一過程相當於OSI的會話層功能;
(4)現在可以傳送了,就在傳送的那一刻,建立連線,通過這個TCP連線傳送資料。首先是將應用層資料傳送給下一層的TCP,再做實際轉發處理。
2.TCP模組的處理

傳輸層TCP負責建立連線、傳送資料以及斷開連線。TCP要將應用層發來的資料實現可靠傳輸至對端,需要在應用層資料前段加上TCP首部。(TCP首部包括源埠號和目標埠號,序列號,校驗和)。然後,就可以將附加了TCP首部的包傳送給IP。

3.IP模組的處理

IP層將上層傳來的附加了TCP首部的包當做自己的資料,又在該資料前段加上自己的IP首部,生成IP包。然後參考路由控制表決定接受此IP包的路由或主機,以此傳送到對應的路由器或主機的網路介面的驅動程式,實現真正傳送資料。接下來將MAC地址(若果位置,可以利用ARP查詢)和IP地址交給乙太網的驅動程式,實現資料傳輸。

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

把上層傳來的IP包附加上乙太網首部(該首部包括收、發端的MAC地址,以及標誌乙太網型別的乙太網資料的協議),生成乙太網資料包,通過物理層傳輸給接收端。此外,還要對該太網資料包進行傳送處理,生成FCS(frame check sequence),由硬體計算新增到包的後面,主要是為了判斷資料包是否由於噪聲而破壞。

現在可以通過物理層傳輸了
現在的資料包是這個樣子的(截圖於《圖解TCP/IP》)
這裡寫圖片描述

以下就是包的接收處理了

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

對乙太網資料包首部進行解析,如果發現是發給自己的包,則識別上一層為IP,否則丟棄包。

6.IP模組的處理

IP包首部的解析,如果發現是發給自己的包,則識別上一層為TCP,否則丟棄包。

7.TCP模組的處理

TCP包首部的解析。資料接收完畢後,接收端傳送一個“確認回執”給傳送端,如果該回執資訊未能到達傳送端,則傳送端會認為接收端沒有接收到資料則一直髮送。資料被完整接收後,傳遞給埠號識別的應用程式。

8.應用程式的處理

接收端應用程式接收發送端發來的資料,確認地址,若無此地址,則返回給傳送端一個“無此收件地址”的報錯資訊。若有此地址,則郵件被儲存到本地硬碟,若儲存也能正常進行,則傳送一個“處理正常”給傳送端,否則,如磁碟滿等異常導致未能儲存成功,則傳送一個“處理異常”給傳送端。

現在,接收端就可以閱讀郵件了
總結,整個流程如圖(截圖於《圖解TCP/IP》)
這裡寫圖片描述