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