IP协议提供尽力而为的服务,它定义如何将数据从源端传输到目的端,在这过程中,不负责对网络层数据传输的差错提供检测和报告,为了保证网络信息的正常交互,就诞生了ICMP,由它来承担网络层数据传输的差错提供检测和报告的作用!
ICMP:Internet Control Message Protocol(互联网控制消息协议!)
功能:(故障诊断和错误报告)
ping工具(使用ICMP协议)
比如当一个数据包到达路由器时,如果发现数据包的IP头部的TTL字段已经过期,它就会丢弃这个数据包,然后封装一个ICMP TTL过期消息发送给数据包的发送端,告知它数据丢弃的原因是TTL已经过期!
类型:占用1字节,标识ICMP报文的类型,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文!
代码(编码):占用1字节,标识对应ICMP报文的代码!
注意:类型和代码界定了这个ICMP消息的类型!
常见ICMP消息对应的类型和编码:
校验和:
从数据包计算出来的值来检查其完整性。
通过完整性,我们可以检查收到的数据是否没有错误。
ping
ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。
用户可以在ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行ping测试。
常用参数:
ping命令的输出信息中包括目的地址、ICMP报文长度、序号、TTL值、以及往返时间!
tracert
显示数据包在网络传输过程中经过的每一跳!
(tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径)
tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路!
常用参数:
追踪过程:
补充:
ICMP差错报文:
ICMP控制报文:
ICMP路由和重定向报文:
ICMP请求与应答报文:
协议的特点,决定了它非常容易被用于攻击主机和路由器!
应对措施:
应对措施:
注意:为了不占用篇幅,以上攻击实验,会在<<Wireshark详解>>系列中复现!
ping使用的两个ICMP消息:
ICMP Echo-Request请求消息(类型:8):检测目的的可达性
ICMP Echo-Reply回复消息(类型:0):目的收到ICMP Echo-Request请求消息后,根据IP报文中的源IP地址,向其发送ICMP Echo-Reply回复消息!