天天看點

TCP資料段格式

傳輸控制協定(TCP)通常從應用程式中得到大段的資訊資料,然後将它分割成若幹個資料段。TCP會為這些資料段編号并排序,這樣,在目的方的TCP協定棧才可以将這些資料段再重新組成原來應用資料的結構。由于TCP采用的是虛電路連接配接方式,這些資料段在被發送出去後,發送方的TCP會等待接收方TCP給出一個确認性應答,那些沒有收到确認應答的資料段将被重新發送。

當發送方主機開始沿分層模型向下發送資料段時,發送方的TCP協定會通知目的方的TCP協定去建立一個連接配接,也就是所謂的虛電路。這種通信方式被稱為是面向連接配接

的。在這個初始化的握手協商期間,雙方的TCP層需要對接收方在傳回确認應答之前,可以連續發送多少數量的資訊達成一緻。随着協商過程的深人,用于可靠傳輸的信道就被建立起來。

TCP是一個全雙工的、面向連接配接的、可靠的并且是精确控制的協定,但是要建立所有這些條件和環境并附加差錯控制,并不是一件簡單的事情。是以,毫無疑問,TCP是複雜的,并在網絡開銷方面是昂貴的。然而,由于如今的網絡傳輸同以往的網絡相比,已經可以提供更高的可靠性,是以,TCP所附加的可靠性就顯得不那麼必要了。

TCP報頭一共24位元組:

源端口号(16bit) 目的端口号(16bit)
序列号(32bit)
确認應答号(32bit)
頭長度(4) 保留(6) 代碼位(6) 視窗(16)
校驗和(16) 緊急(16)
選項(0或32,若有的話)
資料(可變)

目的端口号 在目的主機上請求應用程式的端口号。

序列号 一個由TCP用于将資料編排回原來正确s的順序或用于對丢失或損壞的資料進行重傳的編号,這樣的處理過程稱為順序控制(排序)。

确認應答号 用于說明下一個所期望接收的TCP八位組資料。

頭長度 在TCP頭中包含的32位字的數量。用來指明資料的起始位置。TCP頭的長度(即使包含有選項)是一個32位的整數倍。

保留 總是被設定為零。

代碼位 用于建立及結束會話的控制功能。

視窗 是發送方将被允許的發送視窗尺寸,用八進制形式表示。

校驗和 循環備援校驗(CRC),山于TCP不相信它的低層,是以會檢驗所有的資料。此CRC用于檢驗報頭和資料字段。

緊急 當緊急指針代碼位被設定時為有效字段,如果有效,這個值指明了目前序列号的八位組的偏移值,即第一個非緊急資料的起始位置。

選項 在需要時,可以是0或32位的倍數。也就是說,沒有選項存在時,選項的大小為0。然而,如果所使用的選項所占用的字段不是32位的整倍數,則需要填充若幹個0來確定資料始于32位的邊界上。

資料 指被傳送到傳輸層的TCP協定的資料,它包含有上層資料的報頭。