UNIX(网络编程-其它套接字编程):03---ICMP协议

一、定义

ICMP协议(Internet Control Message Protocol)是Internet控制消息协议,用于在IP主机、路由器之间传递控制消息。这些控制消息虽然不是用户数据,但是,对于保证用户数据的正确传输有着重要的作用

二、ICMP报文格式

三、ICMP报文的封装

  •  ICMP封装在IP报进行传输。ICMP报文本身被封装在IP数据报的数据区中,而这个IP数据报又被封装在帧数据中。在IP数据报报头中的协议(Protocol)字段设置成1,表示该数据是ICMP报文

四、消息类型的处理

  • ICMPv4消息类型处理

  • ICMPv6消息类型处理

上面表中出现的信息注释

 

五、常用的报文

  • 目的站不可达报文

当路由器不能给数据报找到合适的路由路径,或者主机不能将数据报递交给上层协议时,相应的IP数据报就会被丢弃,然后产生一个目的站不可达差错控制报文给源主机

  • 数据报超时报文

       在数据报的传输过程中,首部的TTL值用于防止数据报因路由表的问题而无休止地在网络中传输。当TTL值为0时,路由器会丢弃当前的数据报,并产生一个 ICMP数据报超时报告。另外在信宿进行分片重组时会启动重组定时器,一旦重组 定时器超时,信宿就会丢弃当前正在重组的数据报,然后产生一个ICMP数据报超 时报告,并向信源发送该超时报告。 

       数据报超时报告的类型和代码的含义如表所示。类型值11表示是数据报超时报文,代码“0”表示TTL超时,代码“1”表示分片重组超时

  • 只讲述回送请求或会送应答报文

该报文用于确定两个网络设备之间是否能够正常通讯。主机或路由器向某个目的主机发送ICMP回送请求报文,任何收到回送请求的目的主机都会生成一个回送应答报文,并发返回给源主机

六、不会导致产生ICMP差错报文的情况

  • ICMP差错报文(ICMP查询报文可能会产生ICMP差错报文)
  • 目的地址是广播地址或多播地址的IP数据报
  • 作为链路层广播的数据报
  • 不是IP分片的第一片
  • 源地址不是单个主机的数据报

这些规则是为了防止ICMP差错报文对广播分组响应所带来的广播风暴

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/89921000