計算機網絡——Tcp三次握手&四次揮手

計算機網絡——Tcp三次握手&四次揮手

本文主要參考:小書go的博客以及計算機網絡

OSI、TCP/IP及五層協議體系結構

OSI體系結構(自上而下各層爲):應用層、表示層、會話層、運輸層、網絡層、數據鏈路層、物理層;
TCP/IP體系結構:應用層、運輸層、網際層IP、網絡接口層;
五層協議體系結構:應用層、運輸層、網絡層、數據鏈路層、物理層;

TCP

傳輸控制協議TCP(Transmisson Control Protocol):提供面向連接的,可靠的數據傳輸服務,屬於傳輸層協議。

TCP報文首部
  1. 源端口和目的端口,各佔2個字節,分別寫入源端口和目的端口;
  2. 序號,佔4個字節,TCP連接中傳送的字節流中的每個字節都按順序編號。例如,一段報文的序號字段值是 301 ,而攜帶的數據共有100字段,顯然下一個報文段(如果還有的話)的數據序號應該從401開始;
  3. 確認號(類似於ACK?不是=v=,後面有ACK),4個字節,是期望收到對方下一個報文的第一個數據字節的序號。例如:B發送一段序號爲300數據長度爲200的數據給A,A接收完之後期望收到B發來後面序號爲500開始的數據,所以A發送給B的報文中確認號爲500;
  4. 數據偏移,4位,指出TCP報文的數據距離TCP報文段的起始處的偏移量;
  5. 保留位,6位;
  6. 緊急URG,1位。當URG=1時,緊急指針纔有校,表明報文中有緊急數據;
  7. 確認ACK,僅當ACK=1時,確認字段纔有效,TCP規定,在建立連接後所有報文的傳輸都必須把ACK設置爲1;
  8. 推送PSH,當兩個應用進程進行交互式通信時,有時在一端的應用進程希望在鍵入一個命令後立即就能收到對方的響應,這時就將PSH設置爲1;
  9. 復位RST,RST=1時,表明TCP連接中出現嚴重差錯,必須釋放連接,重新進行連接;
  10. 同步SYN,在建立連接時用來同步序號。當SYN=1,ACK=0,表明是連接請求報文,若同意鏈接,則響應報文中應設置SYN=1,ACK=1;
  11. 終止FIN,用來釋放連接。當FIN=1,表明此報文的發送方的數據已經發送完畢,並且要求釋放;
  12. 窗口,2字節。通知接收方,發送本報文需要多大的空間來接收;
  13. 檢驗和,2字節。檢驗首部和數據兩部分;
  14. 緊急指針 ,2字節。指出本報文段中的緊急數據的字節數;
  15. 選項,長度可變,定義一些其他的可選參數。
TCP連接的建立(三次握手)

在這裏插入圖片描述

最開始的時候客戶端和服務器都是處於CLOSED狀態。主動打開連接的時客戶端,被動打開連接的服務器。
在這裏插入圖片描述