ICMP 协议
ICMP 协议
ICMP
ICMP: 网络控制消息协议, 协议号 1, 是一个网络层协议.
用于在网络中传递差错和控制消息的协议.
ICMP 报文格式

TYPE: 类型, 8bit, 表示 ICMP 消息类型.
Code: 值, 8bit, 表示消息类型中的不同信息.
Checksum: 校验和, 16bit, (只校验 ICMP 数据包).
Ethernet_II Header Type=0x0800 IP
IP Header Protocol=1 ICMP
差错检测
ICMP Echo Request (ICMP 请求消息)
Type 8 Code 0
ICMP Echo Reply (ICMP 回应消息)
Type 0 Code 0
使用 ICMP 协议设备会发送一个 ICMP Echo Request 消息, 当对方设备收到该消息时, 会回应一个 ICMP Echo Reply 消息, 只要发送请求消息的设备收到了对应的 ICMP Echo Reply, 则认为网络可以通信.
ICMP 消息类型和编码类型

不可达消息类型
Type = 3 code = 0 网络不可达
Type = 3 code = 1 主机不可达
Type = 3 code = 2 协议不可达
Type = 3 code = 3 端口不可达
ping 应用
>ping 192.168.1.6 |
ICMP 重定向
数据包控制
ICMP 重定向是 ICMP 控制报文的一种, 当网关设备从接口收到用户数据后, 如果数据的出口与入接口相同, 则网关设备会向用户发送一个 ICMP 重定向报文, 用于通知用户将目的地址下一跳直接设置为最优路径, 从而优化用户数据转发.
然而, 需要注意的是, 由于安全性和潜在的攻击风险, 许多网络管理员会禁用或限制 ICMP 重定向消息的传输. 这是因为恶意用户可能利用 ICMP 重定向来欺骗主机, 导致数据包被发送到错误的路径上.
Tracert 应用
>tracert baidu.com |
Tracert: 路径追踪, 基于 ICMP 的另一种工具, 可以显示报文到达目的地的路径, 检测网络丢包以及时延的有效手段, 同时可以帮助管理员发现网络中的环路.
基于 IP 报文头中的 TTL 字段来逐跳追踪报文的转发路径, 并且返回数据报文达到目的主机的路径详细信息, 显示每个路径所消耗的时间.
工作原理
- 源端设备将 TTL 值设置为
1, 该报文到达第一个节点后, TTL 超时, 于是该节点向源端点发送一个 TTL 超时消息, 该消息携带了该设备的 IP 地址和到达该设备使用的时间.
- 源端设备将 TTL 值设置为
- 源端设备将 TTL 值设置为
2, 该报文到达第二个节点后, TTL 超时, 于是该节点向源端点发送一个 TTL 超时消息, 该消息携带了该设备的 IP 地址和到达该设备使用的时间.
- 源端设备将 TTL 值设置为
- 反复此过程, 直到报文到达目的地.
最后一个设备 应用层发数据时将 UDP 设置特别大目的端口值 到达目的地返回端口不可达.