第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差错的情况
- ICMP差错报文
- 广播/多播地址的数据报
- 链路层广播的数据报
- 非第一个分片
- 源地址不是单个主机
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的辅助协议,提供差错报告和查询功能。常见类型包括回显、目的不可达、时间戳、地址掩码等。