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

1、引言

TCP協議(Transmission Control Protocol 傳輸控制協議)不一樣於UDP協議,它是一個面向鏈接(一對一)的,可靠(作了差錯控制)的字節流(不限長度)服務。TCP的可靠性經過下面方式來控制:微信

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

2、TCP數據包結構

TCP數據包是封裝在IP數據包中的 指針

圖1.TCP嵌入IP數據包

TCP首部,若是不計算任選字段,一般爲20個字節。 cdn

圖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)。

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

微信公衆號rudy_tan_home
相關文章
相關標籤/搜索