介紹
TCP和UDP使用同一網絡層(IP),但TCP提供了面向鏈接、可靠的傳輸層服務網絡
TCP傳輸給IP層的信息單位稱爲報文段或段指針
TCP經過以下方式保證可靠性:code
- 應用數據被分割成TCP認爲最合適發送的數據塊
- TCP發送一個段後,會啓動一個定時器等待目的端確認收到該段,不然重發
- 當TCP接收端收到數據,會發送一個確認
- TCP保持首部和數據校驗和,接收端發現校驗和有差錯就丟棄報文段
- TCP將對收到的數據重排序,保證順序交給應用層
- TCP接收端必須丟棄重複數據
- TCP提供了流量控制,避免「快」主機壓垮「慢」主機
TCP提供字節流傳輸服務,它交換的數據都是由字節(8位)構成blog
TCP不解釋字節流內容,也就說它不知道傳輸的是二進制仍是字符,這個內容由應用層解釋排序
TCP首部
由圖可知,TCP首部最少5*4=20
字節ci
- 端口:經過TCP首部的源、目的端口,和IP首部的源、目的IP,能夠惟一肯定一個鏈接
- 序號:下一字節數據的序號。每發送一字節數據,序號+1,到達
2^31-1
後置0
- 確認序號:確認端指望接收下一字節的序號,值爲上次成功接收數據序號+1
- 首部長度:表明首部佔了多少個32位,4位表明最多
2^4=16
個32位word,也就是64字節
- 標誌位:6個標誌位
- URG:緊急指針有效
- ACK:確認序號有效
- PSH:接收方應該儘快將這個報文段交給應用層
- RST:重建鏈接
- SYN:同步序號用來發起一個鏈接
- FIN:發送端完成發送任務
- 窗口大小:接收端指望接收的字節數,TCP基於該窗口大小進行流量控制
- 校驗和:覆蓋TCP首部和TCP數據,發送端計算和存儲,接收端驗證
- 緊急指針:表明一個正偏移,表示緊急數據的序號到哪結束。當URG=1該值纔有意義,該偏移加上序號字段的值等於緊急數據最後一字節的序號
- 選項:最多見選項爲MSS,表明最長報文段大小