ICMP协议

来源:互联网 发布:斑马旅游 知乎 编辑:程序博客网 时间:2024/05/16 05:32

1、ICMP全称Internet Control Message Protocol(网际控制信息协议)。

2、ICMP报文格式

一包ICMP数据的格式,如图1所示:

    图1

IP首部格式,如图2所示:

                                                           

  图2

       成员     长度(Bit)     描述
       Version     4      IP头的版本号,目前是IPv4,最新是IPv6
       Header Length     4      IP头的长度,若没有特殊选择,IP头总是20字节长
       Type of Service     8      服务类型,定义了数据传输的优先级、延迟、吞吐量和可靠性等特性
       Total Packet Length     16      IP包的长度,若没有特殊选项,一般为20字节长
       Identification     16      IP包标识,主机使用它唯一确定每个发送的数据报
       Flag     3      IP数据分割标志
       Fragment Offset     13      IP数据分割偏移
       Time to Live      8      数据报在网络上的存活时间,每通过一个路由器,该数值减一
       Protocol      8      TCP/IP协议类型,比如:ICMP为1,IGMP为2,TCP为6,UDP为17等
       Header Checksum     16     头部检验和
       Source IP Address      32     源IP地址
       Destination IP Address     32      目的IP地址
       Other       其他选项
       Data        数据

       

ICMP报文具体格式,如图3所示:

                                        

              图3 

类型和代码一起决定了ICMP报文的类型。常见的有:

a、类型8、代码0:回射请求    b、类型0、代码0:回射应答

c、类型11、代码0:超时。

3、ICMP Request和ICMP Reply数据报的详细内容:(参考:http://www.ctowhy.com/363.html)

  • Type:类型字段,8代表icmp的请求,0代表icmp的回应
  • Code:代码字段,0代表icmp的请求
  • Checksum:对ICMP头部的校验值,如果传递过程中ICMP被篡改或损坏,与该值不匹配,接收方就将这个ICMP数据包作废
  • Identifier:进程ID标识,从哪个进程产生的ICMP数据包,这个例子中,因为这四个icmp数据包都是从一个cmd进程下产生的, 所以8个icmp数据包的这个字段都是一样
  • Sequence Number:序列号,同一个进程中,会产生很多个ICMP数据包,用来描述当前这个数据包是是哪一个,每一对ICMP Request和ICMP Reply这个字段应该要一样
  • Data:ICMP中的数据,一般都是无意义的填充字段,这个部分可能会被黑客加入恶意代码,实施ICMP攻击。

4、ICMP回射请求报文和回射应答报文

Ping命令利用ICMP回射请求报文和回射应答报文来测试目标系统是否可达。
  
   ICMP回射请求和ICMP回射应答报文是配合工作的。当源主机向目标主机发送了ICMP回射请求数据包后,它期待着目标主机的回答。目标主机在收到一个ICMP回射请求数据包后,它会交换源、目的主机的地址,然后将收到的ICMP回射请求数据包中的数据部分原封不动地封装在自己的ICMP回射应答数据包中,然后发回给发送ICMP回射请求的一方。如果校验正确,发送者便认为目标主机的回射服务正常,也即物理连接畅通。

5、校验和的计算

    IP首部校验和的计算:参考http://www.docin.com/p-200194716.html

    ICMP报文校验和的计算:包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法

是一样的。



0 0
原创粉丝点击