目录
前言
Internet控制消息协议ICMP(Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。使用基于ICMP的应用时,需要对ICMP的工作原理非常熟悉。
一、ICMP
ICMP是(Internet Control Message Protocol)Internet控制报文协议。
ICMP协议是一种面向无连接的协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。ICMP用来传递差错、控制、查询等信息
ICMP规定,目的主机必须返回ICMP应答给消息源主机。
1. ICMP控制报文
- 拥塞控制与源站抑制报文
当一个路由器接收IP数据报的速度比其处理IP数据报的速度快,或一个路由器传入数据报的速率大于传出数据报的速率时,就会产生拥塞(Congestion)现象。这时路由器可以通过发送源站抑制(Source Quench)报文来抑制源主机发送IP数据报的速率,避免可能产生的差错。
源站抑制报文的类型字段为4,代码字段只能为0。源站抑制技术进
行拥塞控制的方法如下:
(1) 当路由器发生拥塞时,便发出ICMP源站抑制报文。拥塞的判别可以用三种方法:一是检查路由器缓存区是否已满;二是给缓存区输出队列设置一个阈值,判断队列中数据报的个数是否超过阈值;三是检测某输入线路的传输率是否过高。
(2) 源主机收到抑制报文后,按一定的速率降低发往目标主机的数据报传输率。
(3) 如果在一定的时间间隔内源主机没有收到抑制报文,便认为拥塞已解除,源主机可以逐渐恢复到原来数据报的流量。
2. 路由控制与重定向报文
ICMP Redirect重定向消息用于支持路由功能。
如图所示,主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文。
网关RTB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RTA,因为此转发路径是更优的路径,所以RTB会向主机发送一个Redirect消息,通知主机直接向另一个网关RTA发送该报文。
主机收到Redirect消息后,会向RTA发送报文,然后RTA会将该报文再转发给服务器A。
2. ICMP差错检测
ICMP Echo Request和ICMP Echo Reply分别用来查询和响应某些信息,进行差错检测。
报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP
差错报文有如下特点:
- ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中