摘要:当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8字节。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来。下列情况都不会导致产生ICMP差错报文:(
当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8字节。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的协议字段来判断)和用户进程(根据包含在IP数据报前8字节中的TCP或UDP报文首部中的TCP或UDP端口号来判断)联系起来。
下列情况都不会导致产生ICMP差错报文:
(1)ICMP差错报文(但是,ICMP査询报文可能会产生ICMP差错报文);
(2)目的地址是广播地址或多播地址(D类地址)的IP数据报;
(3)作为数据链路层广播的数据报:
(4)不是IP分片的第一片:
(5)源地址不是单个主机的数据报,这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。
这些规则是为了防止过去允许ICMP差错报文对广播分组响应所带来的广播风暴。
以下简要介绍ICMP各类报文的含义。
目标不可到达(类型3):如果路由器判断出不能把IP数据报送达目标主机,则向源主机返回这种报文。另一种情况是目标主机找不到有关的用户协议或上层服务访问点,也会返回这种报文。出现这种情况的原因可能是IP头中的字段不正确:或是数据报中说明的源路由无效;也可能是路由器必须把数据报分段,但IP头中的D标志已置位。
超时(类型11):路由器发现IP数据报的生存期已超时,或者目标主机在一定时间内无法完成重装配,则向源端返回这种报文。
源抑制(类型4):这种报文提供了一种流量控制的初等方式。如果路由器或目标主机缓冲资源耗尽而必须丢弃数据报,则每丢弃一个数据报就向源主机发回一个源抑制报文,这时源主机必须减小发送速率。另一种情况是系统的缓冲区已用完,并预感到行将发生拥挤,则发出源抑制报文。但是与前一种情况不同,涉及的数据报尚能提交给目标主机。
参数问题(类型12):如果路由器或主机判断出IP头中的字段或语义出错,则返回这种报文,报文头中包含一个指向出错字段的指针。
路由重定向(类型5):路由器向直接相连的主机发出这种报文,告诉主机一个更短的路径。例如,路由器R1收到本地网络上的主机发来的数据报,R1检査它的路由表,发现要把数据报发往网络X,必须先转发给路由器R2,而路由器R2又与源主机在同一网络中。于是路由器R1向源主机发出路由重定向报文,把路由器R2的地址告诉它。
回声(请求/响应,类型8/0):用于测试两个节点之间的通信线路是否畅通。收到回声请求的节点必须发出回声响应报文。该报文中的标示符和序列号用于匹配请求和响应报文。当连续发出回声请求时,序列号连续递增。常用的ping程序就是这样工作的。
时间戳(请求/响应,类型13/14):用于测试两个节点之间的通信延迟时间。请求方发出本地的发送时间,响应方返回自己的接收时间。这种应答过程如果结合强制路由的数据报实现,则可以测量出指定线路上的通信延迟。
地址掩码(请求/响应,类型17/18):主机可以利用这种报文获得它所在的LAN的子网掩码。首先主机广播地址掩码请求报文,同一LAN上的路由器以地址掩码响应报文回答,告诉请求方需要的子网掩码。通过子网掩码可以判断出数据报的目标节点与源节点是否在同一LAN中。
返回目录:通信工程师考试培训互联网技术重点汇总
编辑相关推荐:
[1] [2]
通信工程师备考资料免费领取
去领取