一、IP報文頭:
IP報文頭的長度一般在20到60個字節之間,報文頭前20個字節是固定的,後面的可變。
版本:佔4bit,表示IP協議的版本號,一般爲IPV4。
首部長度:佔4bit,表示IP報文頭的長度。20-60個字節。
服務類型:佔8bit,用來獲取更好的服務。前3位表示報文優先級,後幾位表示要求更低時延、更高的吞吐量、更高的可靠性、更低的路由代價等。對應位爲1即有相應要求,爲0則不要求。
總長度:佔16bit,表示報文總長度。一個IP報文的最大長度爲65535個字節。
標識:佔16bit,標記當前分片爲第幾個分片。
標誌:佔3bit,表示該報文是否爲分片,後續是否還有分片。
片偏移:佔13bit,表示當前分片在原報文中的相對位置。
生存時間:佔8bit,表示報文還能生存多久。每經過1ms或者一個網關,TTL的值自動減1,當生存時間爲0時,報文將被認爲目的主機不可到達而丟棄。使用過Ping命令的用戶應該有印象,在windows中輸入ping命令,在返回的結果中即有TTL的數值。
協議:佔8bit,表示上層使用的協議,可能是TCP、UDP、ICMP。
首部校驗和:佔16bit,用於檢驗IP報文頭部在傳播的過程中是否出錯,主要檢驗報文頭中是否有某個或幾個bit被修改。
源IP地址:佔32bit,4個字節,每個字節爲0~255之間的整數。
目IP地址:佔32bit。
二、TCP報文頭:
源目端口:各佔16bit。
序列號:佔32bit,TCP通信過程中,通過序列號保證傳輸過程中數據的有序性。
確認號:佔32bit,用於響應TCP報文段,給收到的TCP報文段的序號加1。
頭部長度:佔4bit,表示TCP報文首部的長度。
保留:佔6bit,今後使用。
標誌:佔6bit,URG(緊急指針是否有效)ACK(表示確認號是否有效)PSH(提示接收端應用程序應該立即從TCP接收緩衝區讀走數據)RST(表示要求對方重新建立連接)SYN(表示請求建立一個連接)FIN(表示通知對方本端要關閉連接)
窗口大小:佔16bit,用於TCP流量控制,告訴對端TCP緩衝區還能容納多少字節。
校驗和:佔16bit,發送端填充,接收端對報文段執行CRC算法以檢驗TCP報文段在傳輸中是否損壞。
緊急指針:佔16bit,在URG標誌設置了時纔有效。與序號字段的值相加後表示最後一個緊急數據的下一字節的序號,可以說這個字段是緊急指針相對當前序號的偏移。
選項:長度不定,但長度必須以是32bits的整數倍。常見的選項包括MSS、SACK、Timestamp等等。
轉載: