1.概述
TCP提供了一種可靠的面向連接的字節流運輸層服務。
TCP將用戶數據打包成報文段,它發送后啟動一個定時器,另一端收到的數據進行確認,對失序的數據重新排序,丟棄重復數據,TCP提供端到端的流量控制,並計算和驗證一個強制性的端到端的檢驗和。
許多流行的應用程序如:Telnet, Rlogin, FTP,SMTP 都使用TCP。
- TCP的主要特點:
-
- TCP是面向連接的運輸層協議
- 每一條TCP連接只能有兩個端點,每一條TCP連接只能是點對點的
- TCP提供可靠交付的服務
- TCP提供全雙工通信
- 面向字節流。
-
- 面向字節流的含義:雖然應用程序和TCP交互是一次一個數據塊,但TCP把應用程序交下來的數據僅僅是一連串的無結構的字節流
2.TCP首部
TCP報文段的首部格式如圖所示:
各自段的含義:
- 源端口和目的端口:各占兩個字節,端口是運輸層與應用層的服務接口,運輸層的復用和分解功能都要通過端口才能實現。
- 序號:占4字節,序號范圍是[0,2^32-1]。TCP把在一個TCP連接中傳輸的數據流中的每一個字節都編上一個序號。
- 確認號:是期望收到對方的下一個報文段的數據第一個字節的序號
-
- 若確認號 == N,則表明到序號N-1為止的所有數據都已正確收到。
- 首部長度:最大60字節
- 保留:6bit, 均為0.
- 緊急URG:當URG=1時,表示報文段中有緊急數據,應盡快傳送,而不要按照原來的排隊順序傳送,與“緊急指針”字段配合使用。
- 確認比特ACK:只有當ACK = 1時確認號才有效。
- 推送比特PSH:當發送端PSH=1時,並立即創建一個報文段發送出去,接收TCP收到PSH為1的報文段后,不在等到整個緩存都填滿后在向上交付,而是盡快的交付給應用進程。
- 復位比特(RST):復位比特也稱重建比特或重置比特。當RST=1時,表明TCP連接中出現嚴重差錯,必須釋放連接,然后在重新建立連接。
- 同步比特SYN:在建立連接是用來同步序號。SYN=1, ACK=0表示一個連接請求報文段。SYN=1,ACK=1表示同意建立連接。
- 終止比特FIN:用來釋放一個連接。FIN=1時,表明此報文段的發送端的數據已經發送完畢,並要求釋放運輸連接。
- 窗口:用來控制對方發送的數據量。單位為字節。TCP連接的一端根據設置的緩存空間大小確定自己的接收窗口大小。然后通知發放已確定的發送窗口上限。
-
- 窗口的值是經常在動態變化
- 檢驗和:檢驗和字段檢驗的范圍包括首部和數據這兩部分
- 緊急指針:緊急指針在URG=1時才有效,它指出本報文段中的緊急數據的字節數。
- 選項:長度可變,最長可達40字節
MSS默認值為536字節。注:MSS=TCP報文段長度-TCP首部長度
