第6章 ICMP:Internet控制报文协议

6.1 引言

ICMP是IP层的组成部分,传递差错报文和相关信息。

  • 封装在IP数据报中
  • 协议号:1

6.2 ICMP报文的类型

类型描述类型
0回显应答查询
3目的不可达差错
4源站抑制差错
5重定向差错
8回显请求查询
9路由器通告查询
10路由器请求查询
11超时差错
12参数问题差错
13时间戳请求查询
14时间戳应答查询
15信息请求查询
16信息应答查询
17地址掩码请求查询
18地址掩码应答查询

不产生ICMP差错的情况

  1. ICMP差错报文
  2. 广播/多播地址的数据报
  3. 链路层广播的数据报
  4. 非第一个分片
  5. 源地址不是单个主机

6.3 ICMP地址掩码请求与应答

  • 无盘系统获取子网掩码
  • 格式:类型(17/18)+ 标识符 + 序列号 + 掩码

6.4 ICMP时间戳请求与应答

  • 查询当前时间(UTC午夜后的毫秒数)
  • 格式:类型(13/14)+ 标识符 + 序列号 + 三个时间戳

时间戳字段

  • 发起时间戳(orig)
  • 接收时间戳(recv)
  • 发送时间戳(xmit)

6.5 ICMP端口不可达差错

  • UDP目的端口无进程时产生
  • 包含IP首部 + UDP首部的8字节

ICMP不可达报文格式

  • 类型:3
  • 代码:0-15
  • 包含原始数据报的IP首部 + 前8字节

6.6 ICMP报文的4.4BSD处理

不同类型ICMP报文的处理方式:

  • 内核处理(回显请求、时间戳请求、地址掩码请求)
  • 用户进程处理(回显应答、时间戳应答)
  • 忽略(信息请求等)

6.7 小结

ICMP是IP的辅助协议,提供差错报告和查询功能。常见类型包括回显、目的不可达、时间戳、地址掩码等。