系列TCP/IP協議-TCP協議概述(011)

林灣村龍貓發表於2019-05-10

一、引言

TCP協議(Transmission Control Protocol 傳輸控制協議)不同於UDP協議,它是一個面向連線(一對一)的,可靠(做了差錯控制)的位元組流(不限長度)服務。TCP的可靠性通過下面方式來控制:

  • 將應用資料分割成TCP認為最合適長度的資料塊。減少IP層的分片現象的發生。
  • 當TCP傳送一份資料包後,它啟動一個定時器,等待目的端確認收到這份資料包。如果不能及時收到一個確認,將重發該資料包。確定對方收到資料了。
  • 當TCP接收端收到一個資料包時候,會傳送一份確認資料包。告訴對方已經收到資料了。
  • TCP將對它的首部和資料部分做校驗和。防止傳輸中出錯。
  • TCP會對收到的資料進行排序,按照正確的順序提交給應用。
  • TCP會拋棄重複的資料。
  • TCP還能提供流量控制。TCP連線的每一方都有固定大小的緩衝空間。

二、TCP資料包結構

TCP資料包是封裝在IP資料包中的

圖1.TCP嵌入IP資料包

TCP首部,如果不計算任選欄位,通常為20個位元組。

圖2.TCP結構圖

  • 每個TCP段都包含源端和目的端的埠號。
  • 序號用來標識從TCP發端向TCP收端傳送的資料位元組流,它表示在這個報文段中的的第一個資料位元組。序號欄位包含由這個主機選擇的該連線的初始序號ISN(Initial Sequence Number)。
  • 既然每個傳輸的位元組都被計數,確認序號包含傳送確認的一端所期望收到的下一個序號。
  • 首部長度給出首部中32bit(一個字,兩個位元組)的數目。長度為4bit。需要這個值是因為任選欄位的長度是可變的。
  • 在TCP首部中有6個標誌位元。
    • URG:緊急指標( urgent pointer)有效。
    • ACK:確認序號有效。
    • PSH:接收方應該儘快將這個資料包交給應用層。
    • RST:重新建立連線。
    • SYN:同步序號用來發起一個連線。只有在三次握手的時候才會有。
    • FIN:傳送端完成傳送任務。只有在結束時候才有。
  • 視窗大小:TCP的流量控制由連線的每一端通過宣告的視窗大小來提供。視窗大小為位元組數,起始於確認序號欄位指明的值,這個值是接收端正期望接收的位元組。
  • 檢驗和:覆蓋了整個的 TCP資料包。
  • 緊急指標:當URG標誌置1時緊急指標才有效。緊急指標是一個正的偏移量,和序號欄位中的值相加表示緊急資料最後一個位元組的序號。
  • 最常見的可選欄位是最長報文大小,又稱為 MSS(Maximum Segment Size)。

都看到這裡了,要不要掃二維碼關注一下微信公眾號林灣村龍貓

微信公眾號rudy_tan_home

相關文章