1.概述緩存
TCP提供了一種可靠的面向鏈接的字節流運輸層服務。
TCP將用戶數據打包成報文段,它發送後啓動一個定時器,另外一端收到的數據進行確認,對失序的數據從新排序,丟棄重複數據,TCP提供端到端的流量控制,並計算和驗證一個強制性的端到端的檢驗和。
許多流行的應用程序如:Telnet, Rlogin, FTP,SMTP 都使用TCP。
- 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字節
3.最大報文長度MSS
MSS默認值爲536字節。注:MSS=TCP報文段長度-TCP首部長度