ICMP:Internet控制报文协议

1、引言

  ICMP被认为是IP层的一部分。它传递差错报文及其他需要注意的事项。

2、ICMP报文的类型

  通过ICMP报文中的8位类型和8位代码确定报文类型。

以下情况不会造成ICMP差错报文:

  1. ICMP差错报文
  2. 目的地址是广播地址的IP数据报
  3. 作为链路层广播的数据报
  4. 不是IP分片的第一片
  5. 源地址不是单个主机的数据报,即源地址不能是零地址、环回地址、广播地址和多播地址

以上的规则是为了防止产生广播风暴。

3、ICMP地址掩码请求与应答

  此报文用于无盘系统在引导过程中获取自己的子网掩码。

  标识符和序列号字段有发送端任意选择设定,这些值在应答时返回,发送端就可把应答与请求进行匹配。

  假定请求的主机知道自己的Internet地址,然后向目的地址255.255.255.255广播地址掩码请求报文,这时地址掩码域中全部为“0”,知道正确地址掩码的路由器就会返回一个地址掩码应答报文,该应答报文中就包含了请求主机所需的地址掩码。

4、ICMP时间戳请求和应答

  此报文允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始算的毫秒数(Coordinated Universal Time, UTC)。

  

  请求端填写发起时间戳,然后发送报文。应答系统受到请求报文时,填写接收时间戳,在发送应答时填写发送时间戳。提供三个字段的原因是,让发送方分别计算发送请求的时间和发送应答的时间。

  考虑到报文传送的时间,实际校时需要进行调整(difference - RTT/2)。

5、ICMP端口不可达差错

  ICMP的一个规则是,ICMP差错报文必须包含生成该差错报文的数据报IP首部,还必须至少包括跟在该IP首部后面的前8个字节,如上图所示。

  UDP首部包含了源端口号、目的端口号、长度和校验和。

  IP首部被送回是因为其包含了协议字段,使得ICMP可知道如何解释后面的8个字节。

6、ICMP报文的4.4BSD处理

  

后面还会介绍Ping程序所使用的回应请求和应答报文、处理IP路由的ICMP报文。

猜你喜欢

转载自www.cnblogs.com/mofei004/p/8994949.html