TCP和UDP頭部格式的瞭解?
tcp頭部格式如下圖所示:
1.源埠號,16位,傳送方的埠號。
2.目標埠號,16位,傳送方的目標埠號。
3. 32為序列號,sequence number,保證網路傳輸資料的順序性。
4. 32位確認號,acknowledgment number,用來確認確實有收到相關封包,內容表示期望收到下一個報文的序列號,用來解決丟包的問題。
5. 頭部大小,4位,偏移量:最大值為0x0F,即15,
單位為32位(bit),單位也就是4個位元組,給出頭部佔32bit的數目。沒有任何選項欄位的TCP頭部長度為20位元組;最多可以有60(15*4)位元組的TCP頭部。
6. Reserved 4位 ,預留欄位,都為0
7. TCP標誌位
(1)CWR:Congestion window reduced,擁塞視窗減少。擁塞視窗減少標誌被髮送主機設定,用來表明它接收到了設定ECE標誌的TCP包。擁塞視窗是被TCP維護的一個內部變數,用來管理髮送視窗大小。
(2)ECN-Echo:顯式擁塞提醒迴應。當一個IP包的ECN域被路由器設定為11時,接收端而非傳送端被通知路徑上發生了擁塞。ECN使用TCP頭部來告知傳送端網路正在經歷擁塞,並且告知接收端傳送段已經受到了接收端發來的擁塞通告,已經降低了傳送速率。
(3)URG:為1時,緊急指標(urgent pointer)有效,配合緊急指標使用
(4)ACK:為1時,確認號有效
(5)PSH: 為1時,接收方應該儘快將這個報文段交給應用層
(6)RST:為1時,釋放連線,重連。
(7)SYN:為1時,發起一個連線。
(8)FIN:為1時,關閉一個連線。
8. 16位視窗大小:佔16bit。此欄位用來進行流量控制,主要用於解決流控擁塞的問題。單位為位元組數,這個值是本機期望一次接收的位元組數。
9. 16位校驗值: 佔16bit。對整個TCP報文段,即TCP頭部和TCP資料進行校驗和計算,並由目標端進行驗證。
10. 16位緊急指標:佔16bit。它是一個偏移量,和序號欄位中的值相加表示緊急資料最後一個位元組的序號。
11. 32位Tcp選項:一般包含在三次握手中。
UDP頭部結構
頭部結構中各部分的作用:
(1)16位源埠號 記錄源埠號,在需要對方回信時選用。不需要時可用全0。
(2)16位目的埠號 記錄目標埠號。這在終點交付報文時必須要使用到。
(3)長度 UDP資料報的長度(包括資料和首部),其最小值為8B(即僅有首部沒有資料的情況)。
(4)校驗和 檢測UDP資料報在傳輸中是否有錯,有錯就丟棄。該欄位時可選的,當源主機不想計算校驗和,則直接令該欄位為全0。當傳輸層從IP層收到UDP資料報時,就根據首部中的目的埠,把UDP資料報通過相應的埠,上交給程序。如果接收方UDP發現收到的報文中目的埠號不正確(即不存在對應埠號的應用程序),就丟棄該報文,並由ICMP傳送“埠不可達”差錯報文交給傳送方。