ICMP协议

ICMP协议1、ICMP简介ICMP全名为(INTERNETCONTROLMESSAGEPROTOCOL)网络控制消息协议。ICMP的协议号为1。ICMP报文就像是IP报文的小弟,总顶着IP报文的名头

大家好,又见面了,我是你们的朋友全栈君。

1ICMP简介

ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议。

ICMP的协议号为1

ICMP报文就像是IP报文的小弟,总顶着IP报文的名头出来混。因为ICMP报文是在IP报文内部的,如图:

//images0.cnblogs.com/blog/318837/201406/271146595546398.jpg

图:IP数据报

 

2ICMP类型

ICMP报文主要有两大功能:查询报文和差错报文。

 

3、目的不可达(Destination Unreachable Message)

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |     Code      |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                             unused                            |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|      Internet Header + 64 bits of Original Data Datagram      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下去,都会返回寄件人,并附上无法邮寄的原因。同理,当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type3IP报文的源发送方。报文中的Code就表示发送失败的原因。

Code

0 = net unreachable;

1 = host unreachable;

2 = protocol unreachable;

3 = port unreachable;

4 = fragmentation needed and DF set;

5 = source route failed.

 

4、超时(Time Exceeded Message)

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |     Code      |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                             unused                            |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|      Internet Header + 64 bits of Original Data Datagram      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

网络传输IP数据报的过程中,如果IP数据包的TTL值逐渐递减为0时,需要丢弃数据报。这时,路由器需要向源发送方发送ICMP超时报文(Type11)Code0,表示传输过程中超时了。

一个IP数据报可能会因为过大而被分片,然后在目的主机侧把所有的分片重组。如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code1,表示分片重组超时了。

 

5、参数错误报文(Parameter Problem Message)

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |     Code      |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|    Pointer    |                   unused                      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|      Internet Header + 64 bits of Original Data Datagram      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

当路由器或主机处理数据报时,发现因为报文头的参数错误而不得不丢弃报文时,需要向源发送方发送参数错误报文(Type12)。当Code0时,报文中的Pointer表示错误的字节位置。

 

6、源冷却(Source Quench Message)

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |     Code      |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                             unused                            |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|      Internet Header + 64 bits of Original Data Datagram      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

路由器在处理报文时会有一个缓存队列。如果超过最大缓存队列,将无法处理,从而丢弃报文。并向源发送方发一个ICMP源冷却报文(Type4),告诉对方:“嘿,我这里客满了,你迟点再来。”

 

7、重定向(Redirect Message)

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |     Code      |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                 Gateway Internet Address                      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|      Internet Header + 64 bits of Original Data Datagram      |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

想像一下,在公司中,有人来你的项目组问你某某某在哪儿。你一想,我们组没有这人啊。你肯定就会说,我们组没有这号人,你去其他组看看。当路由收到IP数据报,发现数据报的目的地址在路由表上没有,它就会发ICMP重定向报文(Type5)给源发送方,提醒它想要发送的地址不在,去其他地方找找吧。

 

8、请求回显或回显应答(Echo or Echo Reply Message)

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |     Code      |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|           Identifier          |        Sequence Number        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Data …

+-+-+-+-+-

Type(8)请求回显报文(Echo)Type(0)回显应答报文(Echo Reply)

请求回显或回显应答报文属于查询报文。Ping就是用这种报文进行查询和回应。

 

9、时间戳或时间戳请求(Timestamp or Timestamp Reply Message)

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |      Code     |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|           Identifier          |        Sequence Number        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Originate Timestamp                                       |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Receive Timestamp                                         |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Transmit Timestamp                                        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

时间戳报文是用来记录收发以及传输时间的报文。Originate Timestamp记录的是发送方发送报文的时刻;Receive Timestamp记录的是接收方收到报文的时刻;Transmit Timestamp表示回显这最后发送报文的时刻。

 

10、信息请求或信息响应

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|     Type      |      Code     |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|           Identifier          |        Sequence Number        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

这种报文是用来找出一个主机所在的网络个数(一个主机可能会在多个网络中)。报文的IP消息头的目的地址会填为全0,表示this,源地址会填为源IP所在的网络IP

 

总结

 //images0.cnblogs.com/blog/318837/201407/022057280438792.jpg

图:ICMP知识点思维导图 

 

参考

http://www.rfc-editor.org/info/rfc792RFC792

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154276.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • snmp trap报文格式_linux接收snmptrap

    snmp trap报文格式_linux接收snmptrap转载地址:https://blog.csdn.net/eric_sunah/article/details/19557683SNMP的报文格式SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。在实际网络传输环境下,S…

    2022年8月21日
    6
  • 2a锂电池充电管理芯片_锂电池电压检测芯片

    2a锂电池充电管理芯片_锂电池电压检测芯片:兼容PD和QC快充充电器输入单节锂电池2A充电板1.2应用:便捷充电设备等1.3电池组:3.7V锂电池组,多并或单串,充满4.2V

    2022年9月27日
    2
  • 树的叶子结点与完全二叉树结点计算方法[通俗易懂]

    树的叶子结点与完全二叉树结点计算方法[通俗易懂]一:完全二叉树中结点问题分析:设叶子节点个数为n0,度为1的节点个数为n1,度为2的节点个数为n2侧有n0+n1+n2=n(1)对于二叉树有:n0=n2+1(2)由(1)(…

    2022年5月6日
    97
  • DotNetTextBox控件添加外挂插件功能的图文教程。

    DotNetTextBox控件添加外挂插件功能的图文教程。在使用DotNetTextBox在线编辑器的时候,你可能觉得控件内置的功能不能满足你的编辑需要,这时DotNetTextBox控件强大的外挂插件功能就发挥作用了,使用外挂插件功能,你就能自行DIY任何自己想实现的功能,而且使用也非常简单,下面我们就为大家演示了为DotNetTextBox增加一个插入网页按钮(button)外挂插件的步骤:第一步:首先用VS2005打开system_dn…

    2022年10月19日
    1
  • opencv高斯金字塔_高斯求和公式

    opencv高斯金字塔_高斯求和公式一、图像金字塔图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像素采样的方式,生成N个不同分辨率的图像。把具有最高级别分辨率的图像放在底部,以金字塔形状排列,往上是一系列像素(尺寸)逐渐降低的图像,一直到金字塔的顶部只包含一个像素点的图像,这就构成了传统意义上的图像金字塔。获得图像金字塔一般包括二个步骤:1.利用低通滤波器平滑图像 2.对平

    2022年10月15日
    2
  • stm32f103c8t6数据手册「建议收藏」

    stm32f103c8t6数据手册「建议收藏」STM32F103ZET6(中文)-豆丁网(docin.com)https://www.docin.com/p-304006862.html?docfrom=rrela

    2022年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号