了解TCP/IP協議

?OSI (Open System Interconnection 開放式系統互聯) 參考模型:

具體可參考:OSI參考模型

? ? ? ? 它是由ISO國際標準化組織定義的一個標準,但只作為參考模型,所謂參考模型定義就是:供設備生產廠商或者軟件廠商參考用的網絡通信模型,而不是一個強制標準。TCP/IP 脫胎于OSI模型,所以要了解TCP/IP之前要先學習OSI。

OSI模型將網絡通信的工作分為7層:也可以理解為7個步驟

OSI模型

1. 應用層:通常最具有代表性的協議:http、ftp、smtp、OICQ(QQ)等

2. 表示層:主要對數據進行處理,包括格式轉化、加密、解密、壓縮

3. 會話層:管理會話

4. 傳輸層:分配端口號port,建立連接 (TCP UDP)同時控制傳輸過程和資源開銷

5. 網絡層:提供路由選擇(路由器),分配IP地址并尋址

6. 數據鏈路層:提供容錯處理,差錯控制,另一方面會將網絡地址轉化為mac地址,在物理層面進行尋址

7. 物理層:傳輸介質(網線、光纖),轉化為二進制流通過光信號或電信號傳輸


對于我來說,并不需要深入理解每一層的機制,因為大部分的工作只停留在前4層。

TCP/IP 將OSI模型改寫為4層

OSI TCP/IP關系

TCP協議(Transmission Control Protocol):傳輸控制協議


為了更好的理解TCP協議,可參考《使用wireshark分析TCP/IP協議中TCP包頭的格式

1. 建立連接(3次握手)

? ? 1>. 客戶端向服務端發送SYN包,并進入SYN_SEND狀態,等待服務器確認

? ? 2>. 服務器接收到SYN包,必須確認接收狀態,發送ACK包響應,同時發送自己的SYN包,并 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ? 進入SYN_RECV狀態

? ? ?3>. 客戶端接收到SYN+ACK包,進入ESTABLISHED狀態,并向服務器發送SYN包確認ACK,服務器接收到ACK包,并進入ESTABLISHED狀態

當客戶端和服務端都進入ESTABLISHED狀態,客戶端和服務端就可以開始雙向傳遞數據了。

具體流程如圖:

3次握手

2. 關閉連接

? ? 1>. 主動關閉方向被動關閉端發送FIN包,并進入FIN_WAIT1狀態

? ? ?2>. 被動關閉端接收到FIN包后,向主動關閉方發送ACK包,并進入CLOSE_WAIT;主動關閉 ? ?方接收到ACK包,向被動關閉方發送ACK包,并進入FIN_WAIT2狀態。

? ? ? 3>. 被動關閉方發送FIN包,并進入LAST_ACK狀態

? ? ? 4>. 主動關閉方接收到FIN后,向被動關閉方發送ACK包,此時主動關閉方進入TIME_WAIT狀態,在2MSL(生命周期)時間后關閉連接;被動關閉方在接收到ACK后,關閉連接


3. 保證可靠 ?:也是TCP最重要的特點


UDP協議(User Diagram Protocol)用戶數據報協議


UDP和TCP的最主要的區別在于可靠性的保證上面,主要體現在沒有3次握手的過程。

UDP非常簡單

特點:1. ?可靠性差 ,它不會去關注數據報是否傳輸成功,是否丟失

? ? ? ? ? 2. 性能好


TCP/UDP報文格式


TCP和UDP選擇問題

因為TCP基本可以使用所有場景,所用用TCP不會錯,但是有些場景需要考慮性能和不需要可靠性保證,所以不需要所有數據的傳輸可靠,所以選擇UDP,比如,視頻聊天等

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容