趣谈网络协议【6】—— ICMP
--- --- 课程笔记:《趣谈网络协议》 刘超
ICMP 互联网控制报文协议
* 该协议支持主机或路由器
作用: 差错(或异常)报告
网络探询
分类:
- 差错报告报文(5种)
- 目的不可达
- 源抑制: 路由器等缓存已满,后续到达的IP数据报被丢弃
- 超时/超期:TTL超时
- 参数问题:
- 重定向:不该发送到当前的路由器上
- 网络探询报文(2种)
- 回声(Echo)请求与应答报文(Reply) —— ping
- 时间戳请求和应答报文

几种不发送ICMP差错报文的特殊情况:
- 对ICMP差错报告报文不再发送ICMP差错报告报文;
- 除第1个IP数据报分片外,对所有后续分片均不发送ICMP差错报告报文;
- 对所有多播IP数据均不发送ICMP差错报告报文;
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的IP数据报不发送ICMP差错报告报文
几种ICMP报文已不再使用:
- 信息请求与应答报文;
- 子网掩码请求和应答报文;
- 路由器查询和通告报文
ICMP报文的格式:ICMP报文封装到IP数据包中传输


ICMP网络探询报文的应用举例: ping

ICMP 数据包内包含多个字段。最重要的是两个,第一个是类型字段,对于请求数据包而言该字段为 8;另外一个是顺序号,主要用于区分连续 ping 的时候发出的多个数据包。每发出一个请求数据包,顺序号会自动加 1。为了能够计算往返时间 RTT,它会在报文的数据部分插入发送时间。
ICMP 应答包,应答数据包的类型字段为 0,顺序号为接收到的请求数据包中的顺序号,然后再发送出去给主机 A。
ICMP差错报告报文的应用举例: Traceroute

Traceroute 还有一个作用是故意设置不分片,从而确定路径的 MTU。要做的工作首先是发送分组,并设置“不分片”标志。发送的第一个分组的长度正好与出口 MTU 相等。如果中间遇到窄的关口会被卡住,会发送 ICMP 网络差错包,类型为“需要进行分片但设置了不分片位”。每次收到 ICMP“不能分片”差错时就减小分组的长度,直到到达目标主机。
参考:
MOOC 江苏电子信息职业学院《路由交换技术与应用》史红彦 、朱东进
总有一股莫名其妙的执拗劲儿......
浙公网安备 33010602011771号