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

ICMP 協定深度解析 (一):協定原理與封包格式

     編輯:VC 教學

ICMP (Internet Control Message Protocol) 與 IP 同屬網路層 (OSI Layer 3),核心功能:主機探測、路由維護、路由選擇、流量控制。本文詳述三種核心訊息類型格式與用途。

1. 回送請求/回應 (Type 8/0) — Ping 基礎

Type(8/0) | Code(0) | Checksum | Identifier | Sequence Number | Data...
  • 發送 Type 8,收到 Type 0 表示主機存活。
  • Identifier/Sequence Number 協助配對請求與回應。
  • Checksum 計算:ICMP 訊息全體 (含 Type) 以 16 位元為單位反碼相加再取反。

2. 逾時訊息 (Type 11) — Traceroute 核心

Type(11) | Code(0/1) | Checksum | Unused | IP Header + 64 bits Original Datagram
  • Code 0:傳送逾時 (TTL=0);Code 1:重組逾時。
  • 夾帶原始 IP 標頭與 64 位元資料,供發送端識別進程/埠號。

3. 目的地不可達 (Type 3) — 錯誤回報

Type(3) | Code(0-5) | Checksum | Unused | IP Header + 64 bits Original Datagram
  • Code 0:網路不可達、1:主機不可達、2:協定不可用、3:埠不可達、4:需分片但 DF=1、5:來源路由失敗。
  • Code 0,1,4,5 由閘道器產生;2,3 由目的主機產生。

理解封包結構是實作 Ping、Traceroute、掃描工具的基礎。下集將介紹 Windows Socket 程式設計基礎。

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