在學(xué)習(xí) TCP 連接之前,還要學(xué)習(xí)一下 TCP 頭部格式。因為 TCP 連接建立,需要用 TCP 包來交換和管理數(shù)據(jù),下面看一下 TCP頭部格式。
TCP 頭部里每個字段都為管理 TCP 連接和控制數(shù)據(jù)流起了重要作用。
16 位端口號:告知主機該報文段是來自哪里(源端口)以及傳給哪個上層協(xié)議或應(yīng)用程序(目的端口)的。
進行 TCP 通信時,客戶端通常使用系統(tǒng)自動選擇的臨時端口號,而服務(wù)器則使用知名服務(wù)端口號。所有知名服務(wù)使用的端口號都定義在/etc/services 文件中。
32 位序號(sequence number):一次 TCP 通信(從 TCP 連接建立到斷開)過程中個傳輸方向上的字節(jié)流的每個字節(jié)的編號。
32 位確認(rèn)號(acknowledgement number):用作對另一方發(fā)送來的 TCP 報文段的響應(yīng)其值是收到的 TCP 報文段的序號值加1。
4 位頭部長度(header length):標(biāo)識該 TCP 頭部有多少個 32bit ( 4 Byte 因為最大能表示 15 ,所以 TCP頭部最長是 60 Byte。
6 位標(biāo)志位包含如下幾項:
URG 標(biāo)志,表示緊急指針是否有效。
ACK 標(biāo)志,表示確認(rèn)號是否有效,一般稱攜帶 ACK 標(biāo)志的 TCP 報文段為“確認(rèn)報文段”。
PSH 標(biāo)志,提示接收端應(yīng)用程序應(yīng)該立即從 TCP 接收緩沖區(qū)中讀走數(shù)據(jù),為接收后續(xù)數(shù)據(jù)騰出空間(如果應(yīng)用程序不將接收到的數(shù)據(jù)讀走,它們就會直停留在TCP 接收緩沖區(qū)中)。
RST 標(biāo)志,表示要求對方重新建立連接,一般稱攜帶 RST 標(biāo)志的 TCP 報文段為“復(fù)位報文段”。
SYN 標(biāo)志,表示請求建立 個連接,一般稱攜帶 SYN 標(biāo)志的 TCP 報文段為“同步報文段”。FIN 標(biāo)志,表示通知對方本端要關(guān)閉連接了,一般稱攜帶FIN 標(biāo)志的 TCP 報文段為“結(jié)束報文段”。
16 位窗口大?。╳indow size):是 TCP 流量控制的一個手段。這里說的窗口,指的是接收通告窗口( Receiver Window,RWND)。它告訴對方本端的 TCP 接收緩沖區(qū)還能容納多少字節(jié)的數(shù)據(jù),這樣方就可以控制發(fā)送數(shù)據(jù)的速度。
16 位校驗和(TCP checksum):由發(fā)送端填充,接收端對 TCP 報文段執(zhí)行 CRC 算法,以檢驗 TCP 報文段在傳輸過程中是否損壞。注意,這個校驗不僅包括 TCP 頭部,也包括數(shù)據(jù)部分。這也是 TCP 可靠傳輸?shù)囊粋€重要保障。
16 位緊急指針(urgent pointer):是一個正的偏移量。它和序號字段的值相加表示最后一個緊急數(shù)據(jù)的下一字節(jié)的序號。確切地說,這個字段是緊急指針相對當(dāng)前序號的偏移,不妨稱之為“緊急偏移”。TCP 的緊急指針是發(fā)送端向接收端發(fā)送緊急數(shù)據(jù)的方法。
綜上,你需要注意如下幾點:
TCP 的包是沒有 IP 地址的,那是 IP 層上的事,但是有源端口和目的端口。
一個TCP 連接需要四元組( src_ip,src_port,dst_ip,dst_port )來表示是同一個連接 準(zhǔn)確說是五元組,還有一個是協(xié)議但因為這里只是強調(diào) TCP 協(xié)議,所以,只說四元組。
Sequence Number 是包的序號,用來解決網(wǎng)絡(luò)包亂序(reordering )問題。
Acknowledgement Number 就是 ACK ,用于確認(rèn)收到,用來解決不丟包的問題。
Window Advertised Window ,也就是著名 的滑動窗口 Sliding Window ),用于解決流量控制問題。
TCP Flag ,也就是包的類型,主要是用于操控 TCP 的狀態(tài)機的。
-
通信
+關(guān)注
關(guān)注
18文章
6206瀏覽量
137810 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7815瀏覽量
90949 -
TCP
+關(guān)注
關(guān)注
8文章
1402瀏覽量
81039 -
接收端
+關(guān)注
關(guān)注
0文章
20瀏覽量
8691
發(fā)布評論請先 登錄
TCP協(xié)議如何優(yōu)化

TCP協(xié)議詳細解析

大俠 求助啊 關(guān)于TCP模塊中的數(shù)據(jù)格式
請問SIM800C AT HTTP和ONENET提交數(shù)據(jù)的head頭部怎么處理?
labview采用TCP傳輸數(shù)據(jù)時轉(zhuǎn)化字符串的編碼格式是哪種?
tcp報文格式詳解

TCP IP相關(guān)知識的詳細資料說明免費下載

tcp和udp協(xié)議的異同

詳解TCP報文的頭部結(jié)構(gòu)
如何解釋TCP報文的內(nèi)容
TCP 協(xié)議深度解析

關(guān)于TCP協(xié)議總結(jié)的硬核干貨

評論