10:08:51.006836 IP 58.16.246.110.25479 > 58.16.246.220.5016: P 33025:33041(16) ack 33228 win 5840 0x0000: 4500 0038 d14f 4000 4006 0805 3a10 f66e E..8.O@.@...:..n 0x0010: 3a10 f6dc 6387 1398 2e78 1088 5a1a ac28 :...c....x..Z..( 0x0020: 5018 16d0 6196 0000 0000 000c 8000 0015 P...a........... 0x0030: 0000 0000 a716 f4f8 ........
IP Header45 4 //協議版本 ipv4 4bit 5 //IHL位 20字節, 表示IP Header長度 以32bit為除數計算出的IP頭部長度 本區域值 = IP頭部長度 / 32 最長的IP包頭長度可以為480bit00 // 服務類型 Type of Service Precedence和TOS。定義IP協議包的處理方法,它包含如下子字段 過程字段(優先權):3位,設置了數據包的重要性,取值越大數據越重要,取值范圍為:0(正常)~ 7(網絡控制) 延遲(時延)字段:1位,取值:0(正常)、1(期特低的延遲) 流量(吞吐量)字段:1位,取值:0(正常)、1(期特高的流量) 可靠性字段:1位,取值:0(正常)、1(期特高的可靠性) 成本(開銷)字段:1位,取值:0(正常)、1(期特最小成本) 未使用(保留位):1位,恒設為0 TOS目前不太使用。而Precedence則用于QOS應用。(TOS字段的詳細描述RFC 1340 1349)00 38 //IP數據報文總長d1 4f //標識符(Identifier):長度16比特。該字段和Flags和Fragment Offest字段聯合使用,對大的上層數據包進行分段(fragment)操作。如果數據包原始長度超過MTU,那么將他分段為更小的數據包.然后路由器在每片數據包的標志字段打上相同的標記,以便接收設備可以識別出屬于一個數據包的分段.分段的數據包不會在數據鏈路的另外一端重新組合,直到最終目的地才會重組.40 00 //標記(Flags):長度3比特 分段序號(Fragment Offset):長度13比特40 //TTL06 //協議(Protocol):長度8比特。標識了上層所使用的協議。TCP=06 UDP=17 ICMP=01 其他請查看cat /etc/protocols08 05 //頭部校驗(Header Checksum):長度16位,由于IP包頭是變長的,所以提供一個頭部校驗來保證IP包頭中信息的正確性。3a 10 f6 6e 3a 10 f6 dc tcp Header6387 //src port 本地端口254791398 //dest port 目標端口50162e78 1088 //Sequence Number 順序號5a1a ac28 //ack num 確認號5018 //tcp頭長度 20字節 5018 2進制01010000 00011000 5 0101 //表示tcp長度 20字節 0000 00 //保留 無意義 011000 //6bit 標志位
URG: (Urgent Pointer field significant)緊急指針。用到的時候值為1,用來處理避免TCP數據流中斷
ACK: (Acknowledgment fieldsignificant)置1時表示確認號(AcknowledgmentNumber)為合法,為0的時候表示數據段不包含確認信息,確認號被忽略。
PSH: (Push Function),PUSH標志的數據,置1時請求的數據段在接收方得到后就可直接送到應用程序,而不必等到緩沖區滿時才傳送。
RST: (Reset the connection)用于復位因某種原因引起出現的錯誤連接,也用來拒絕非法數據和請求。如果接收到RST位時候,通常發生了某些錯誤。
SYN: (Synchronize sequence numbers)用來建立連接,在連接請求中,SYN=1,ACK=0,連接響應時,SYN=1,ACK=1。即,SYN和ACK來區分 Connection Request和Connection Accepted。
FIN: (No more data from sender)用來釋放連接,表明發送方已經沒有數據發送了。
16d0 6196 0000 data0000 000c 8000 0015 0000 0000 a716 f4f8 //承載的數據體