TCP 是用於在不可靠的因特網上提供可靠的、端到端的字節流通信的協議。
一 TCP服務模型
TCP 提供的服務具有以下主要特徵:
(1)面向連接的傳輸、傳輸數據前需要先建立連接, 數據傳輸完畢要釋放連接。
(2)端到端通信, 不支持廣播通信。
(3)高可靠性,確保傳輸數據的正確性,不出現丟失或亂序。
(4)全雙工方式傳輸。
(5)採用字節流方式,即以字節爲單位傳輸字節序列。如果字節流太長, 將其分段。
(6)提供緊急數據傳送功能,即當有緊急數據需要發送時,發送進程會立即發送,接收方收到後會暫停當前工作,讀取緊急數據並做相應處理。
TCP數據傳輸機制
1. TCP的段結構
源端口 | 目標端口 |
序列號 | |
確認號 | |
頭長度 | | 標誌 | 窗口 |
校驗和 | 緊急數據指針 |
選項(可變長度) | |
數據 |
因爲TCP是應用於大數據量傳輸的情況,所以需要將長的數據流分段。
TCP地址與IP地址不同,IP地下是字節地址,一個節點可以運行多個應用, TCP的地址是節點的某個應用的地址, 這種應用在計算機內部是進程。 多個進程的數據傳遞通過不同的端口完成, 因此在TCP段結構中,以 “端口” 表示地址的。
- 源端口: 16bit, 源節點進程端口
- 目標端口: 16bit, 目標節點端口
- 序列號: 32bit, TCP對字節流中的每個字節都編號
- 確認號: 32bit
- 頭長度:4bit
- 標誌: 6bit, 該字段包含對其它字段的說明或對控制功能的標誌。 具體的設置如下:
ACK 說明確認字段中的數據有意義
URG 說明緊急數據指針字段中的數據有意義
FIN 標誌是最後的TCP數據段, FIN也稱爲"完成"
PSH 指出接收方不必等待一定量的數據再向應用提供數據, 而是立即提供該數據段, PSH也稱爲“推”
RST 在有異常情況發生時,發送方通知接收方暫時終止連接,釋放與連接有關的緩衝區, 中斷TCP傳輸, RST也稱爲"復位"
SYN 在建立初始連接時,允許雙方共同確定初始序列號, SYN 也稱爲"同步"。
7. 窗口: 16bit
8. 校驗和: 16bit
9. 緊急數據指針: 16bit
10. 選項: 可變長度, 選項一般包含兩個內容, 一是在通信雙方容量相差很大時,必須在初始建立連接時, 確定可接收的段的最大尺寸; 另一個是在使用高帶寬線路傳輸大型文件時,允許用 16 bit來代替 32bit的窗口字段
11. 數據: 可變大小, 用戶提供的數據。
2 TCP端口號
端口號可以在0~65535範圍內的端口號。對於這65536個端口號有以下的使用規定
(1) 端口號小於256的定義爲常用端口,服務器一般都是通過常用端口號來識別的,端口號由Internet端口號分配機構(Internet Assigned Numbers Authority IANA) 來管理;
(2) 客戶端通常對所使用的端口號不關心,只面保證該端口號在本機上是唯一的;
(3)大多數 TCP/IP實現給臨時端口分配1024~5000之間的端口號。大於5000的端口號爲其它服務器預留的。
常用的TCP協議所使用的端口
協議名稱 | 協議內容 | 使用的端口號 |
FTP(控制) | 文件傳輸服務 | 21 |
20 | ||
TELNET | 遠程登錄 | 23 |
GOPHER | 菜單驅動信息檢索 | 70 |
HTTP | 超文本傳輸協議 | 80 |
SMTP (發) | 簡單郵件傳送協議 | 25 |
POP3 (收) | 接收郵件(與SMTP對應) | 110 |