更新时间:2023-09-03 08:02
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
1:ICMP是为了解决两大问题
反馈分组传送和到达中出现的各种错误
查询主机或路由器信息
2:ICMP是网络层协议,但它不直接传递给下层(数据链路层),而是被封装为IP数据报传递给下层
3:在IP数据报中,协议字段为1则为ICMP报文
ICMP报文分为差错报告报文和查询报文,
1:差错报告报文
1:差错报告报文总是发给数据源站,以下4中情况不产生ICMP报文
(1):携带ICMP的数据报不再产生ICMP报文
(2):若数据报进行了分片,只有第一个分片能产生ICMP报文
(3):多播地址的数据报,不产生ICMP报文
(4):特殊地址(如127.0.0.0或0.0.0.0)不产生ICMP报文
2:ICMP差错报告报文含有出现差错原始数据报的首部和数据部分的前8个字节,这8个字节可以提供传输层(TCP或UDP)关于数据报出错部分相关信息,如端口号(TCP和UDP)和序号
3::差错报文类别有
(1):终点不可达:原因可能有网络不可达,主机不可达,端口不可达,协议不可达等,有些是路由器发出,有些是目的主机发出,但即使源点没有收到终点不可达ICMP,也不能确定目的主机已经收到了数据报,因为如以太网这样的网络,没有数据报确认机制,必须由上层确认
(2):源点抑制:源点抑制提供了拥塞控制,当路由器或者主机因拥塞丢弃数据报时,每个被丢弃的数据报都要向源点发送源点抑制报文
源点抑制作用有:
1:告诉源点数据报被丢弃
2:要求源点放慢发包速度.
说明:
1:没有一种机制告诉源点拥塞已经得到缓解,源点只有不断放慢发包速度,直到不再收到源点抑制数据报
2:在多对1发包的情况下,发送方速度不一致,产生拥塞后,路由器或目的主机不知道那个源点该对拥塞负责,他们只知道向被丢弃的数据报源点发送ICMP
(3):超时:有两种情况:
1:生存时间(实际是跳数)递减为0,数据报被丢弃,向源点发送ICMP超时报文,这种报文只有可能是路由器发送
2:当目的主机收到一个分片时,就会启动一个分片计时器,如果计时器内分片没完全到达,则发送超时报文并丢弃已经收到的所有分片
(4):参数问题:数据报首部出现错误或者首部缺少一些选项发送此报文,主机和路由器都可能发送此报文
(5):改变路由(非常重要):路由器要经常更新自己的路由表,网络上主机的数量远远大于路由器的数量,如果主机也动态更新,将产生无法忍受的通信量,所以主机使用静态路由选择,一般情况下,开始时主机只知道默认路由地址,IP数据报将被发送到默认路由器,但也许此数据报应该被发到另外的路由器,默认路由器知道这种情况后,转发此数据报,并向源点发送改变路由ICMP,让主机刷新自己的路由表,主机的路由表通过这种方式进行更新
说明:改变路由是唯一一个不会丢弃数据报的差错报告报文
2:查询报文
1:此报由源点发出,再由目的点以指定的格式进行回答
2:查询报文类别有:
(1):回送请求与回答:一般用于源主机或源路由器判断目的主机或目的路由器能否与其通信,主机和路由器都能发送此报文,此报文包括了回送请求报文和回送回答报文,ping命令便是此报文
(2):时间戳请求和回答:包括时间戳请求报文和时间戳回答报文,它能够确定IP数据报在两台机器的往返时间,即使两个路由器本地时间不同步,但他们的往返时间仍然是精确的,具体计算方法参考书上