ICMP协议

简介

  ICMP是封装在IP数据报当中的

  ICMP通常被IP层或更高的协议使用,ICM报文时在IP数据报内部被传输的。




  类型字段可以有15个不同的值,主要用来描述报文的作用,下图介绍了类型和代码分表代表了那些请求或响应



  有几种情况都不会产生ICMP差错报文:

1.ICMP差错报文
    因为已经是报的差错报文了,如果它还产生差错报文会产生死循环

2.目的地址是广播或多播地址的IP数据报

3.作为链路层广播的数据报

4.不是IP分片的第一片
    只有ip分片的第一片才带有端口信息,没有端口信息返回的ICMP没有作用

5.源地址不是单个主机的数据报

例子

  拿最常用的ping来说,他就是依靠ICMP协议来进行确认的,下面看下ICMP报文格式



  下图是抓包的例子



1.类型是8,代码是0 对照上述的类型表可以发现该报文是一个请求报文。

2.checksum是校验和

3.identifier(be)和identifier(le)
    是标识符,只不过wireshark考虑到windows系统和liunx系统发出ping报文的
    字节顺序不一样,分别告诉信息,其本质内容是没有变的
    (windows为LE:little-endian byte order,Linux为BE:big-endian)
    
4.sequence number(BE)和sequence number(LE)
    同identifier一样

  这里是回显报文,和刚才的查询报文明显的区别就是在类型和代码上的。



原文地址:https://www.cnblogs.com/zhengyazhao/p/13151665.html