1、ICMP全称Internet Control Message Protocol(网际控制信息协议)。
2、ICMP报文格式
一包ICMP数据的格式,如图1所示:
图1
IP首部格式,如图2所示:
图2
成员
Version
Header Length
Type of Service
Total Packet Length
Identification
Flag
Fragment Offset
Time to Live
Protocol
Header Checksum
Source IP Address
Destination IP Address
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头部校验和的计算方法
是一样的。