傳輸控制協定(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協定的資料,它包含有上層資料的報頭。