經過我對網絡上IP數據包的跟蹤,對我寫的《TCP/IP學習筆記》進行補充。通過本文,可以加深對TCP/IP的認識。
●網絡環境:ADSL寬帶
●IP數據包內容:通過Outlook發送郵件,帳號是[email protected],給我的其他郵箱[email protected]發送郵件,系統從而捕獲的IP包。
●所有IP包均為TCP協議
1、關於IP包的分片情況:
所有的IP包均不分片,也就是IP包傳輸過程從不進行分片,均保持原始IP包的大小。這可能跟網絡環境較好有關。
2、關於IP首部和TCP首部的大小:
IP首部的大小均為20,未見到包括選項的情況。但TCP首部有時會包括選項,大小為24到44不等,建立連接時的協商都帶有選項數據,一般為28。
3、關於TCP連接的步驟:
(1)客戶端發送建立報文的TCP報文給服務器端;
(2)服務器端發送同意建立TCP連接的報文給客戶端;
(3)客戶端再次進行確認;
(4)服務器端發送服務器信息;
(5)客戶端發送數據,服務器端發送數據;
(6)客戶端發送結束連接的命令;
(7)服務器端發送結束連接的TCP報文給客戶端;
(8)客戶端發送同意結束連接的TCP報文給服務器端;
4、TCP連接的具體過程,包括P包的唯一標識符ID、TCP報文連接的sequence和ACK數據,這是一個完整的TCP連接建立和結束的過程:
序號數據大小客戶端服務器端IPIDsequenceACKIPIDsequenceACK102732098660028020547073904671124209866002930274209866002939046711254565470839046711252098660029514275209866002939046711816054709390467118120986600437113547103904671181209866004381227620986600433904671294918547113904671294209866005510182772098660055390467131211185471239046713122098660073121027820986600733904671330133154713390467133020986600831402792098660083390467136115342802098660083390467136116854714390467136120986601171735281209866011739046713691885471539046713692098660152196282209866015239046713772037547163904671377209866015821141428320986601583904671414220547173904671414209866157223993284209866157239046714142405471839046714142098662570255285209866256539046714142638547193904671414209866257027628620986625703904671452289547203904671452209866257629054721390467145250986625763002872098662576390467146231028820986625763904671462
(1)數據大小不包括IP首部和TCP首部的大小。
(2)除開始協商建立連接外,每一個sequence均等於上一sequence值加數據大小。開始協商的SYN標記要占用一個字節。
(3)1和2行數據設置了SYN標志。
(4)30和31行數據設置了FIN標志。
(5)每個數據都包括發送方數據的起始字節sequence和期待對方發送數據位置的Ack值。
5、程序說明:
(1) 該程序收集通過本機網卡的所有協議為TCP的IP包。
(2) 對於未加密的郵件內容,可以進行識別並獲得郵件首部內容。
(3) 對於采集的數據包可以進行保存,文件名為scan.bin,也可以導入符合該格式的文件。數據格式請見源程序。
(4) 源程序中還包括其他功能,有些尚未完成,有興趣的讀者可以幫我完成和修改.
6、由於筆者水平有限,上述內容難免有錯誤和不足之處,歡迎批評指正,先謝了。
本文示例代碼或素材下載