【计算机网络】ICMP协议

【计算机网络】 ICMP协议

解决什么问题?

​ 为什么要制定一个ICMP协议,其最开始的主要目的为提高IP数据报交付成功的机会。

什么是ICMP?

​ ICMP的英文全称为(Internet Control Message Protocol),中文全称为网络控制报文协议。允许主机或路由提供报告差错情况和提供有关异常情况的报告。所以说ICMP协议是发挥一个相当于负责报告IP数据包有没有在传输过程中“出事”的作用。

ICMP协议的具体形式

​ 其在真实的网络传输中是装在IP数据报中的,而IP层位于网络层,所以ICMP并不是一种高层协议。ICMP的报文作为IP数据报的数据,加上数据包的首部,组成IP数据报发送出去。

在这里插入图片描述
其报文格式如下图所示
在这里插入图片描述

ICMP报文的种类

​ ICMP的种类分为:ICMP差错报告报文和ICMP询问报文。可以根据类型的值对应ICMP报文的种类,类型值为一个8位数字范围是0~15。代码字段表示在某种类型中的不同情况,可以理解位进一步细分类型。我们知道ICMP数据报作为IP数据报的形式进行传输,但是IP数据报在进行校验和时不会检验IP数据报的内容,所以要保证ICMP经过传输后仍然正确单独进行校验和校验。
在这里插入图片描述
具体解释一下报文类型

(1)终点不可达

​ 当路由器或主机不能交付数据报时就向源主机发送终点不可达报文。
在这里插入图片描述
(2)时间超过

​ 当路由器收到生存数据为0的数据报时,除丢弃该数据外,还向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据片时就把以及收到的数据片全部丢弃,并向主句发送超时报文。
在这里插入图片描述
(3)参数问题

​ 当路由器或者目的主机收到的数据报的首部中有的字段值不正确时,就丢弃该数据报并向源点发送参数问题报告。

(4)改变路由

顾名思义当路由器发生变化时,路由器把改变的路由器报文发送给主机,让主机知道下一次应该发送给另外的路由,也就是更好的路由。因为互联网中主机的数量远大于路由器的数量,主机刚开始工作时出于效率的考虑会设置一个默认路由,如果默认路由发现发往某个地址的最佳路由应当经过网络上的另一个路由器R,就用改变路由报文告诉主机。

​ 所有的ICMP差错报告报文中的数据字段都具有相同的样式,其作为IP数据报的数据部分进行发送,用ICMP差错报文的前8个字节,就是前面提到的类型/代码校验和还有后面随类型不同的四个字节,加上IP数据报的首部和数据字段的前8个字节。
在这里插入图片描述
还有几种不应该发送ICMP差错报文的情况:

1.对于发送的ICMP差错报告报文,不再发送ICMP差错报告报文,就是说ICMP差错报告报文传输错误也不再发送了,不然停不下来了

2.对于比较大的数据报,只发送第一个分片数据报的ICMP差错报告报文,后续的数据报片都不再发送ICMP差错报告报文

3.具有多播地址的数据报,不发送ICMP差错报告报文

4.具有特殊地址的(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文。

ICMP询问报文

(1)回送请求和回送回答。ICMP回送请求报文是由主机或路由器向某一个特定的目的主机发出询问。收到次请求报文的主机就得向路由器或主机发送ICMP回送回答报文。这中询问报文可以用来测试目的站是否可到达以及了解其有关状态。

(2)时间戳请求或时间戳回答。ICMP发出时间戳请求报文后,就能收到对方响应的ICMP时间戳报文,,利用在报文中记录的时间戳就很容易计算出往返时延。

ICMP的应用

ping(Packet InterNet Groper) 是我们经常使用的一个指令用来检查网络通信是否正常。PING使用了ICMP的回送请求和回送回答报文,是应用层直接使用ICMP的例子,直接使用IP数据报,没有通过运输层的TCP或者UDP。
在这里插入图片描述
tracert的IP数据报中封装的是无法交付的UDP数据,数据报中设置了生存时间TTL,每通过一个路由器TTL就减1,直到TTL为0了,就把该报文丢弃并向源主机发送一个ICMP时间超过差错报文。当最后一个数据报到达主机时,数据报TTL为1,不再转发。但是数据报中封装的时无法交付的UDP数据报,因此要向源主机发送ICMP终点不可达差错报文,这样就能知道到达目的主机所经过的所有路由器的IP地址。

据报中封装的时无法交付的UDP数据报,因此要向源主机发送ICMP终点不可达差错报文,这样就能知道到达目的主机所经过的所有路由器的IP地址。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ICMP(Internet Control Message Protocol,互联网控制消息协议)是计算机网络中常用的一种协议,它主要用于在IP网络中传递控制信息和错误报告。 ICMP协议的功能主要包括以下几点: 1. 错误报告:当在IP数据报传输过程中出现错误时,ICMP会生成错误报文,将错误信息返回给源主机,以便发现和修复网络问题。比如,当目的主机不可达、数据报超时或路由错误等情况发生时,ICMP会发送相应的错误报文。 2. 网络差错处理:ICMP协议可用于报告网络中的差错情况,如数据报被丢弃或无法交付等。通过这些差错报文网络管理员可以了解网络中存在的问题,并进行适当的处理和调整。 3. 回送请求与回显应答:ICMP协议中的“回送请求和回显应答”功能可用于测试主机或路由器是否可达。源主机会发送“回送请求”消息,目的主机收到后需返回相应的“回显应答”消息,以确认连接正常。这个功能通常被用于网络诊断、故障排除和性能测试等方面。 4. 时间戳和时间戳应答:ICMP协议中的“时间戳”功能可用于同步网络中的时钟。源主机发送时间戳请求消息,目的主机收到后会在应答消息中返回自己的时钟时间。这个功能在网络性能测试和调试中有着重要的作用。 总的来说,ICMP协议提供了一套用于网络信息传递、错误报告和网络故障诊断的机制。它通过生成和传输特定的控制消息,使得数据在IP网络中能够正常传递,且有助于网络管理员发现和解决网络中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值