程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> TCP/IP學習筆記補遺

TCP/IP學習筆記補遺

編輯:關於VC++

經過我對網絡上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連接建立和結束的過程:

序號 數據大小 客戶端 服務器端 IPID sequence ACK IPID sequence ACK 1 0 273 2098660028 0       2 0       54707 3904671124 2098660029 3 0 274 2098660029 3904671125       4 56       54708 3904671125 2098660029 5 14 275 2098660029 3904671181       6 0       54709 3904671181 2098660043 7 113       54710 3904671181 2098660043 8 12 276 2098660043 3904671294       9 18       54711 3904671294 2098660055 10 18 277 2098660055 3904671312       11 18       54712 3904671312 2098660073 12 10 278 2098660073 3904671330       13 31       54713 3904671330 2098660083 14 0 279 2098660083 3904671361       15 34 280 2098660083 3904671361       16 8       54714 3904671361 2098660117 17 35 281 2098660117 3904671369       18 8       54715 3904671369 2098660152 19 6 282 2098660152 3904671377       20 37       54716 3904671377 2098660158 21 1414 283 2098660158 3904671414       22 0       54717 3904671414 2098661572 23 993 284 2098661572 3904671414       24 0       54718 3904671414 2098662570 25 5 285 2098662565 3904671414       26 38       54719 3904671414 2098662570 27 6 286 2098662570 3904671452       28 9       54720 3904671452 2098662576 29 0       54721 3904671452 5098662576 30 0 287 2098662576 3904671462       31 0 288 2098662576 3904671462      

(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、由於筆者水平有限,上述內容難免有錯誤和不足之處,歡迎批評指正,先謝了。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved