ICMP 区分错误消息

网络工程 协议论 icmp
2022-02-28 01:55:47

发送错误时,Internet 控制消息协议能否判断是哪个数据报出错?

2个回答

在许多情况下,ICMP 错误消息包含导致错误的数据包的标头。

示例:来自“服务器”(172.19.41.35) 对使用 iperf2 从“客户端”(172.19.41.135) 生成的未经请求的 UDP 数据包的 ICMP Type3 代码 3“端口不可达”响应1

蓝框显示导致错误的数据包;这种情况下的错误是响应系统在端口 udp/5001 上没有打开的套接字(因为 iperf2 没有在响应系统上运行)。

Wireshark 数据包分析/ICMP 类型代码 3“端口不可达”消息的剖析

1请注意,ICMP、UDP 和 TCP 都没有客户端服务器的概念——这些都是应用层概念。如果有的话,还有发起者响应者的概念。

ICMP 错误消息将包含原始数据的 IP 标头和前 64 位(八个八位字节)。请参阅RFC 792,互联网消息控制协议

Internet Header + 64 位数据数据报

互联网报头加上原始数据报数据的前 64 位。主机使用此数据将消息与适当的进程匹配。如果更高级别的协议使用端口号,则假定它们位于原始数据报数据的前 64 个数据位中。