【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

ICMP (网际控制报文协议)

原创 2015年07月09日 10:33:16

        曾经看过这样的一道面试题,icmp报文是基于什么传输层协议进行传输的?顺着他的思路传输层的两个主要协议tcp和udp,区别也就是在于是否保障可靠性的传输。当时还没有系统的学习过ICMP的报文结构和组成,因此也没有过多思考,基于tcp。然而实际上来说,ICMP报文是不基于传输层的协议进行传输的,它只是对ip功能的一个补充。

        ICMP报文通过ip报文发送,ICMP报文当做是ip数据包的数据部分,而IP数据包又被放倒了以太网的数据帧中的数据区。

        我们知道ip数据报的首部有一个协议类型的字段,这个部分封装的是传输层的协议的类型,当ip数据部分为ICMP报文时,这里的首部协议类型字段也将改为1,表示为ICMP报文。

                                                                  

        那么,ICMP到底是什么样的报文,它有什么用处吗?

        首先,ICMP报文分为了三类:差错控制类,请求/应答类,通知类。这三类报文包括了所有的ICMP报文的类型。

        我们先看看ICMP报文的结构:

                                                           

        icmp的不同的报文的类型中,首部的结构是确定的。其中校验和部分和ip首部的校验和的计算方法相同,并且这个计算方法贯穿于整个的icmp报文中。

        类型1:差错空中类报文

                 发送差错控制类的报文的规则如下:

                                                          1. icmp差错控制报文的数据区包括发生差错的ip数据包的首部和数据区的至少前64bite。

                                                           2.仅能向数据包的源端发送差错控制报文,不能向中间的路由器报告差错。

                                                           3.当携带差错控制的报文发生差错时,不再报告差错。

                                                           4.对于进行了分片的ip数据包,紧能对第一个分片应用icmp协议。

                  1.目的站不可达

                                当路由器无法转发或者交付数据时,使用icmp报文通知数据包的发送者,并且告诉不可达的原因。

                  2.超时报文

                                发送超时报文的两种情况:1 TTL值为0  

                                                                                 2 数据报分片重组超时。

                  3 参数错误报告

                                  不是以上两种情况的错误时,就会向源主机报告此报文。

        类型2:请求/应答类报文

                   1.回送请求和回送应答报文

                                  测试网络的连通性的时候,可以用这种类型的报文,ping 的应用。

                    2.地址掩码请求和应答报文

                                  当主机使用子网编码时,为了知道本网络中的子网掩码,主机可以向路由器发送地址掩码请求报文,路由器收到这个报文后,发送携带有掩码的应答报文。

                                  (此时,主机可能知道路由器的IP地址,这时就直接发给路由器,也肯那个不知道ip地址,这时就要以广播的方式进行发送,路由器收到后再单播给主机。)

                    3.时戳请求和应答报文

                                

                     4.路由器通告和路由器恳求报文

                                   通告报文:是路由器在网络中定时的向主机发送自己存在的通告,告诉主机自己还在正常的运行着。

                                  恳求报文:这个报文是主机发送的,用于需找默认的路由

                                  (注意,这两种报文都是可以主动发送的,当一种报文发送后,另外的一种报文在接收方作为响应报文发送给发送方。)

        类型3:单向通知控制类报文

                     1.源站抑制报文

                                   这种报文产生的原因是:路由器接收的数据是有上限的,不能无限的接收,当路由器中缓冲区快满时,路由器会向源主机发送这种类型的报文,告诉主机要降低发送速度。如果一段时间内,源主机没有收到源站抑制的报文,就会提高发送速度。

                      2.重定向报文

                                 路由器选路时,不一定都选择最近的路,优化路由选路。

         我们回到开始提出的问题,icmp到底是基于什么传输层的协议的,答案是它根本不基于传输层的协议,只是封装在了ip数据包中。

         icmp报文的应用:ping    traceroute等。

         关于icmp校验和以及ip数据包首部校验和的内容,我会在接下来的时间进行总结。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

网际控制报文协议ICMP

网际控制报文协议ICMP1. 网际控制报文协议ICMP(Internet Control Message Protocol) ICMP:是因特网的标准协议,但不是高层协议,而是IP层的协议。 ICMP...

TCP/IP协议栈概述及各层包头分析

一、摘要   对之前几篇博文涉及到的网络通信协议进行分析,概述出TCP/IP的协议栈模型,最后根据实例对各层包头进行分析。   <span sty

计算机网络学习--网际控制报文协议ICMP及应用(4)

ICMP(网际控制报文协议) 为了更有效的转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMP。ICMP作为IP数据报的数据,加上数据报的首部,组成IP数据报转发出去。 IC...

【网络层】精析网络层 -- 网际控制报文协议ICMP

网际控制报文协议ICMP(Internet Control Message Protocol) 1)报文格式:ICMP报文封装到IP报文的数据部分 而ICMP报文的数据部分为要报告差错的IP数据报的IP头部和数据部分前8个字节(IP地址和端口号) <span style="f
  • mmdev
  • mmdev
  • 2012-11-02 23:27
  • 327

网际协议IP(3)之网际控制报文协议ICMP(Internet Control Message Protocol)

ICMP协议 为了更有效的转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMP。因为ICMP报文是装在IP数据报中,作为其中的数据部分,因此它是IP层的协议。ICMP报文作为I...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)