首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

TCP/IP 學習筆記補遺:真實封包擷取分析與連線流程詳解

     編輯:VC 教學

實驗環境與資料來源

  • 網路環境:ADSL 寬頻
  • 封包內容:透過 Outlook 寄送郵件(xiaojin8039@163.com → xiaoj@njb.swirebev.com),系統擷取的 IP 封包
  • 協定類型:所有封包均為 TCP 協定

關鍵觀察發現

1. IP 封包分片情況

所有 IP 封包均未分片,傳輸過程保持原始大小,推測與網路環境良好有關。

2. IP 標頭與 TCP 標頭大小

  • IP 標頭固定 20 位元組,未見含選項情況
  • TCP 標頭偶含選項,大小 24~44 位元組不等;建立連線協商階段通常帶選項,一般為 28 位元組

3. TCP 連線建立與結束步驟

  1. 客戶端發送建立連線的 TCP 封包
  2. 伺服器端回應同意建立連線
  3. 客戶端再次確認(三向交握完成)
  4. 伺服器端發送伺服器資訊
  5. 雙方開始資料傳輸
  6. 客戶端發送結束連線指令
  7. 伺服器端回應結束連線 TCP 封包
  8. 客戶端確認同意結束連線(四向揮手完成)

4. 完整 TCP 連線封包詳細記錄

記錄包含:封包序號、資料大小(不含 IP/TCP 標頭)、客戶端/伺服器端 IP ID、Sequence 號、ACK 號。關鍵規律:

  • 除連線協商階段外,每個 Sequence 值等於上一 Sequence 值加上資料大小
  • SYN 標記佔用 1 位元組(第 1、2 列)
  • FIN 標記出現在第 30、31 列
  • 每筆資料皆含發送方起始 Sequence 與期望對方回應的 ACK 值

5. 擷取程式功能

  • 擷取本機網卡所有 TCP 協定 IP 封包
  • 未加密郵件內容可識別並擷取郵件標頭
  • 擷取封包可儲存為 scan.bin,支援匯入相同格式檔案
  • 原始碼含其他功能,部分尚未完成,歡迎協助改進

6. 作者聲明

受限於筆者水平,內容難免有誤,歡迎批評指正。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved