計(jì)算機(jī)網(wǎng)絡(luò)系列博文——目錄
因特網(wǎng)控制報(bào)文協(xié)議(Internet Control MessageProtocol,ICMP)
用于主機(jī)和路由器間溝通網(wǎng)絡(luò)層信息;
ICMP位于IP之上,ICMP分組由IP分組承載,主機(jī)收到一個(gè)指明上層協(xié)議為ICMP的IP數(shù)據(jù)報(bào)時(shí),它分解出數(shù)據(jù)報(bào)的有效載荷并交付給ICMP;
功能
ICMP支持主機(jī)或路由器:
- 差錯(cuò)(或異常)報(bào)告
- 網(wǎng)絡(luò)探詢
兩類ICMP 報(bào)文:
-
差錯(cuò)報(bào)告報(bào)文(5種)
- 目的不可達(dá)
- 源抑制(Source Quench)
- 超時(shí)/超期
- 參數(shù)問(wèn)題
- 重定向 (Redirect)
-
網(wǎng)絡(luò)探詢報(bào)文(2組)
- 回聲(Echo)請(qǐng)求與應(yīng)答報(bào)文(Reply)
- 時(shí)間戳請(qǐng)求與應(yīng)答報(bào)文
ICMP報(bào)文
- 類型字段
- 編碼字段
- 源字段 引起該ICMP報(bào)文首次生成的IP數(shù)據(jù)報(bào)的首部和前8字節(jié);

ICMP報(bào)文.png
例外
幾種不發(fā)送 ICMP差錯(cuò)報(bào)告報(bào)文的特殊情況
- 對(duì)ICMP差錯(cuò)報(bào)告報(bào)文不再發(fā)送 ICMP差錯(cuò)報(bào)告報(bào)文
- 除第1個(gè)IP數(shù)據(jù)報(bào)分片外,對(duì)所有后續(xù)分片均不發(fā)送ICMP差錯(cuò)
報(bào)告報(bào)文 - 對(duì)所有多播IP數(shù)據(jù)報(bào)均不發(fā)送 ICMP差錯(cuò)報(bào)告報(bào)文
- 對(duì)具有特殊地址(如127.0.0.0 或 0.0.0.0)的IP數(shù)據(jù)報(bào)不發(fā)送
ICMP 差錯(cuò)報(bào)告報(bào)文
幾種 ICMP 報(bào)文已不再使用
- 信息請(qǐng)求與應(yīng)答報(bào)文
- 子網(wǎng)掩碼請(qǐng)求和應(yīng)答報(bào)文
- 路由器詢問(wèn)和通告報(bào)文
ICMP應(yīng)用
Traceroute
- 源主機(jī)向目的主機(jī)發(fā)送一系列UDP數(shù)據(jù)報(bào)
- 第i組IP數(shù)據(jù)報(bào)TTL =i,i = 1,2,3……
- 目的端口號(hào)為不可能使用的端口號(hào)
- 當(dāng)?shù)趎組數(shù)據(jù)報(bào)(TTL=n)到達(dá)第n個(gè)路由器時(shí):
- 路由器丟棄數(shù)據(jù)報(bào)
- 向源主機(jī)發(fā)送ICMP報(bào)文(type=11, code=0)
- ICMP報(bào)文攜帶路由器名稱和IP地址信息
- 當(dāng)ICMP報(bào)文返回到源主機(jī)時(shí),記錄RTT
- 停止
- UDP數(shù)據(jù)報(bào)最終到達(dá)目的主機(jī)
- 目的主機(jī)返回“目的端口不可達(dá)”ICMP報(bào)文 (type=3,code=3)
- 源主機(jī)停止
Ping
- ping程序發(fā)送一個(gè)類型8,編碼0的ICMP報(bào)文到指定主機(jī);
- 目的主機(jī)發(fā)回一個(gè)類型0,編碼0的ICMP回顯回答;
源抑制報(bào)文
- 最初用于執(zhí)行擁塞控制的ICMP報(bào)文;
- 實(shí)踐中很少使用;
- 擁塞路由器向主機(jī)發(fā)送一個(gè)源抑制報(bào)文以強(qiáng)制該主機(jī)減小發(fā)送速率;