网络层—ICMP

来源:互联网 发布:java优秀开源代码 编辑:程序博客网 时间:2024/06/10 00:04

本文主要介绍ICMP(Internet Control Message Protocol)网际控制报文协议,对IP数据报进行差错报告,提高交付的机会。

        ICMP报文是在IP数据报里面的,是作为IP数据报中数据的一部分。ICMP报文有两种类型,一个是ICMP差错报告报文,另外一个是ICMP询问报文。ICMP报文的前4个字节是统一的格式,一共有三个字段:类型、代码、检验和(IP数据报的首部也有检验和,但是它不检验数据部分),接下来又有4个字节,和ICMP的类型有关,最后面是数据字段,长度和ICMP的类型有关。
      ICMP差错报告报文:一共有五种报文
(1)终点不可达
如果不能够交付就发送这个报文
(2)源点抑制
如果由于拥塞丢弃数据的时候,这时候就要向发送方发送这个报文,让发送方放慢一点速度
(3)时间超过
如果收到了生存时间为0的IP数据报,就要发送该报文
(4)参数问题
如果IP数据报的首部某些字段的值不正确,就发送该报文
(5)改变路由(重定向)
这个报文要好好理解下:主机一般是不和每一台路由器都定期进行路由信息交互的。而是这样,当主机开始想要传送数据的时候,不管目的地是哪里,先将IP数据报传送到网络上的某个默认的路由器(这个是预先指定的),由于路由器之间进行了交换路由信息,所以这个默认的路由器知道到每一个路由器的最佳路径。如果默认路由器发现了这个目的地不应该首先交给默认路由器,而是另外的一个路由器的话,那么就发送改变路由报文,通知主机。主机于是就记录下来,下次发送到这个目的地的时候就不通过默认路由器了。
应用ICMP的地方有PING(Packet InterNet Groper)以及traceroute。
0 0