我是靠谱客的博主 负责路人,最近开发中收集的这篇文章主要介绍icmp,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ICMP协议是一种面向无连接的协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递和网络安全具有极其重要的意义。需要注意的是icmp并不会为ip网络提供可靠性,它只会表明某些类型的故障或配置信息。例如当丢包以后,它并不会重传这个数据,而只是返回一个故障信息,告诉主机是什么原因导致的丢包。
在ipv4中协议字段置1表示该报文封装了icmp。在ipv6中下一头部字段置58表示该报文封装了icmpv6.
在这里插入图片描述
Icmp可分为两大类:有关ip数据报传递的icmp报文(差错报文)以及有关信息采集和配置的icmp报文(查询或信息类报文)。在这里插入图片描述

所有icmp报文头部都有以上固定的4个字节,在icmpv4中为类型字段保留了42个值用于确定特定的报文,但是只有8个是常用的。代码字段可用于进一步确定报文的含义。Icmpv4的校验和字段校验整个icmpv4报文。
ICMPv4报文的类型和代码字段的值与ICMPv4报文类型的对应关系在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Icmp差错报文的特点
报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点:
(1) ICMP差错报文都是由路由器发送到源主机的,因为IP数据报中含有源主机的IP地址,报告给源主机是最可行的方案,另外,发出IP数据报的源主机最需要知道数据是否到达目标主机。
(2) ICMP差错报文只提供IP数据报在传输过程中的差错报告,并不规定对各类差错应采取什么样的处理措施。具体对差错的处理,由收到ICMP差错报文的源主机将相应的差错与应用程序联系起来才能进行相应的差错处理。
(3) ICMP差错报文不享受任何优先权,也没有特别的可靠性保证措施,与普通的IP数据报一样进行传输,传输过程中可能被丢失、损坏,甚至被抛弃。
(4) ICMP差错报文是伴随着抛弃出错的IP数据报而产生的。
(5) 当路由器发送一份参数错误等的ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。
(6) 在有些情况下,为了防止在网络中产生大量的ICMP差错报文(广播风暴),影响网络的正常工作,即使发生差错,也不会产生ICMP差错报文,这些情况包括:
● ICMP报文发生差错。这是为了避免差错报文无休止产生而规定的(但ICMP查询报文可能会产生ICMP差错报文)。
● 目的地址是广播地址或多播地址(D类地址)的IP数据报。
● 作为链路层广播的数据报。
● 不是IP分片的第一片。
● 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、回送地址、广播地址或多播地址。
ICMP控制报文
1.拥塞控制与源站抑制报文
当一个路由器接收IP数据报的速度比其处理IP数据报的速度快,或一个路由器传入数据报的速率大于传出数据报的速率时,就会产生拥塞(Congestion)现象。这时路由器可以通过发送源站抑制(Source Quench)报文来抑制源主机发送IP数据报的速率,避免可能产生的差错。源站抑制报文的类型字段为4,代码字段只能为0。源站抑制技术进行拥塞控制的方法如下:
(1) 当路由器发生拥塞时,便发出ICMP源站抑制报文。拥塞的判别可以用三种方法:一是检查路由器缓存区是否已满;二是给缓存区输出队列设置一个阈值,判断队列中数据报的个数是否超过阈值;三是检测某输入线路的传输率是否过高。
(2) 源主机收到抑制报文后,按一定的速率降低发往目标主机的数据报传输率。
(3) 如果在一定的时间间隔内源主机没有收到抑制报文,便认为拥塞已解除,源主机可以逐渐恢复到原来数据报的流量。
2. 路由控制与重定向报文
假如源主机要向目标主机发送IP数据报,源主机的默认路由是路由器1,则源主机先把IP数据报送到路由器1,再由路由器1进行路由选择。路由器1经过选路后,把IP数据报送到路由器2。同时路由器1也发现源主机要发送到目标主机的IP数据报以后可以直接发送到路由器2(因为路由器1和路由器2同在一个网络中),则路由器1向源主机发送一个ICMP重定向报文,告诉它可以直接把IP数据报送到路由器2。这样,就使源主机始终保持着一个动态的、既小且优的路径表。
Icmp的应用
Ping利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。Ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, Ping给出来了传送的时间和TTL 的数据。
在这里插入图片描述
Tracert是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
在这里插入图片描述

最后

以上就是负责路人为你收集整理的icmp的全部内容,希望文章能够帮你解决icmp所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部