目的地不可达消息 (Destination Unreachable Message)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
IP 字段
Destination Address (目的地址)
原始数据报数据中的源网络和地址。
ICMP 字段
Type (类型)
3
Code (代码)
- 0 = 网络不可达 (net unreachable);
- 1 = 主机不可达 (host unreachable);
- 2 = 协议不可达 (protocol unreachable);
- 3 = 端口不可达 (port unreachable);
- 4 = 需要分片但设置了 DF 标志 (fragmentation needed and DF set);
- 5 = 源路由失败 (source route failed).
Checksum (校验和)
校验和是从 ICMP Type 开始的 ICMP 消息的反码和的 16 位反码。计算校验和时, 校验和字段应置零。此校验和将来可能被替换。
Internet Header + 64 bits of Data Datagram (互联网头部 + 数据报数据的 64 位)
互联网头部加上原始数据报数据的前 64 位。主机使用这些数据将消息与适当的进程匹配。如果高层协议使用端口号, 则假定它们位于原始数据报数据的前 64 个数据位中。
描述
如果根据网关路由表中的信息, 数据报互联网目的地字段中指定的网络不可达 (例如, 到该网络的距离为无穷大), 网关可以向数据报的互联网源主机发送目的地不可达消息。此外, 在某些网络中, 网关可能能够确定互联网目的主机是否不可达。这些网络中的网关可以在目的主机不可达时向源主机发送目的地不可达消息。
如果在目的主机中, IP 模块因为指定的协议模块或进程端口未激活而无法投递数据报, 目的主机可以向源主机发送目的地不可达消息。
另一种情况是数据报必须分片才能被网关转发, 但 Don't Fragment (不分片) 标志已设置。在这种情况下, 网关必须丢弃该数据报, 并可以返回目的地不可达消息。
代码 0, 1, 4 和 5 可能从网关收到。代码 2 和 3 可能从主机收到。