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 设置特别大目的端口值 到达目的地返回端口不可达.