Tcp/IP數(shù)據(jù)包分析
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 Header
45
4 //協(xié)議版本 ipv4 4bit
5 //IHL位 20字節(jié), 表示IP Header長度 以32bit為除數(shù)計算出的IP頭部長度 本區(qū)域值 = IP頭部長度 / 32 最長的IP包頭長度可以為480bit
00 // 服務(wù)類型 Type of Service
Precedence和TOS。定義IP協(xié)議包的處理方法,它包含如下子字段
過程字段(優(yōu)先權(quán)):3位,設(shè)置了數(shù)據(jù)包的重要性,取值越大數(shù)據(jù)越重要,取值范圍為:0(正常)~ 7(網(wǎng)絡(luò)控制)
延遲(時延)字段:1位,取值:0(正常)、1(期特低的延遲)
流量(吞吐量)字段:1位,取值:0(正常)、1(期特高的流量)
可靠性字段:1位,取值:0(正常)、1(期特高的可靠性)
成本(開銷)字段:1位,取值:0(正常)、1(期特最小成本)
未使用(保留位):1位,恒設(shè)為0
TOS目前不太使用。而Precedence則用于QOS應(yīng)用。(TOS字段的詳細(xì)描述RFC 1340 1349)
00 38 //IP數(shù)據(jù)報文總長
d1 4f //標(biāo)識符(Identifier):長度16比特。該字段和Flags和Fragment Offest字段聯(lián)合使用,對大的上層數(shù)據(jù)包進(jìn)行分段(fragment)操作。如果數(shù)據(jù)包原始長度超過MTU,那么將他分段為更小的數(shù)據(jù)包.然后路由器在每片數(shù)據(jù)包的標(biāo)志字段打上相同的標(biāo)記,以便接收設(shè)備可以識別出屬于一個數(shù)據(jù)包的分段.分段的數(shù)據(jù)包不會在數(shù)據(jù)鏈路的另外一端重新組合,直到最終目的地才會重組.
40 00 //標(biāo)記(Flags):長度3比特 分段序號(Fragment Offset):長度13比特
40 //TTL
06 //協(xié)議(Protocol):長度8比特。標(biāo)識了上層所使用的協(xié)議。TCP=06 UDP=17 ICMP=01 其他請查看cat /etc/protocols
08 05 //頭部校驗(Header Checksum):長度16位,由于IP包頭是變長的,所以提供一個頭部校驗來保證IP包頭中信息的正確性。
3a 10 f6 6e 3a 10 f6 dc
tcp Header
6387 //src port 本地端口25479
1398 //dest port 目標(biāo)端口5016
2e78 1088 //Sequence Number 順序號
5a1a ac28 //ack num 確認(rèn)號
5018 //tcp頭長度 20字節(jié) 5018 2進(jìn)制01010000 00011000
5 0101 //表示tcp長度 20字節(jié)
0000 00 //保留 無意義
011000 //6bit 標(biāo)志位
URG: (Urgent Pointer field significant)緊急指針。用到的時候值為1,用來處理避免TCP數(shù)據(jù)流中斷
ACK: (Acknowledgment fieldsignificant)置1時表示確認(rèn)號(AcknowledgmentNumber)為合法,為0的時候表示數(shù)據(jù)段不包含確認(rèn)信息,確認(rèn)號被忽略。
PSH: (Push Function),PUSH標(biāo)志的數(shù)據(jù),置1時請求的數(shù)據(jù)段在接收方得到后就可直接送到應(yīng)用程序,而不必等到緩沖區(qū)滿時才傳送。
RST: (Reset the connection)用于復(fù)位因某種原因引起出現(xiàn)的錯誤連接,也用來拒絕非法數(shù)據(jù)和請求。如果接收到RST位時候,通常發(fā)生了某些錯誤。
SYN: (Synchronize sequence numbers)用來建立連接,在連接請求中,SYN=1,ACK=0,連接響應(yīng)時,SYN=1,ACK=1。即,SYN和ACK來區(qū)分 Connection Request和Connection Accepted。
FIN: (No more data from sender)用來釋放連接,表明發(fā)送方已經(jīng)沒有數(shù)據(jù)發(fā)送了。
data
0000 000c 8000 0015 0000 0000 a716 f4f8 //承載的數(shù)據(jù)體
posted on 2010-01-21 12:38 Khan 閱讀(4301) 評論(4) 編輯 收藏 引用 所屬分類: GCC/G++ 、跨平臺開發(fā) 、周邊技術(shù)