MHuiG

「看庭前花开花落,望天上云卷云舒」

ICMP 协议

# ICMP 协议

## ICMP

RFC 792

`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

    正在 Ping 192.168.1.6 具有 32 字节的数据:
    来自 192.168.1.6 的回复: 字节=32 时间=82ms TTL=248
    来自 192.168.1.6 的回复: 字节=32 时间=49ms TTL=248
    来自 192.168.1.6 的回复: 字节=32 时间=48ms TTL=248
    来自 192.168.1.6 的回复: 字节=32 时间=283ms TTL=248

    192.168.1.6 的 Ping 统计信息:
        数据包: 已发送 = 4, 已接收 = 4, 丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 48ms, 最长 = 283ms, 平均 = 115ms

## ICMP 重定向

数据包控制

ICMP 重定向是 ICMP 控制报文的一种，当网关设备从接口收到用户数据后，如果数据的出口与入接口相同，则网关设备会向用户发送一个 ICMP 重定向报文，用于通知用户将目的地址下一跳直接设置为最优路径，从而优化用户数据转发.

然而，需要注意的是，由于安全性和潜在的攻击风险，许多网络管理员会禁用或限制 ICMP 重定向消息的传输。这是因为恶意用户可能利用 ICMP 重定向来欺骗主机，导致数据包被发送到错误的路径上.

## Tracert 应用

    >tracert baidu.com

    通过最多 30 个跃点跟踪
    到 baidu.com [11x.xx.xx.66] 的路由:

      1     6 ms     4 ms     2 ms  H3C [192.168.20.1]
      2     *        *        *     请求超时。
      3    27 ms     3 ms    28 ms  22x.xx.xx.1
      4     6 ms     9 ms    33 ms  11x.xx.xx.5
      5     *        *        *     请求超时。
      6    25 ms     *       21 ms  22x.xx.xx.229
      7     *        *        *     请求超时。
      8    23 ms    28 ms     *     22x.xx.xx.62
      9    26 ms     *        *     21x.xx.xx.189
     10    30 ms    26 ms     *     21x.xx.xx.170
     11    52 ms    34 ms    50 ms  11x.xx.xx.162
     12   124 ms    45 ms    37 ms  22x.xx.xx.134
     13     *        *        *     请求超时。
     14     *        *        *     请求超时。
     15     *        *        *     请求超时。
     16     *        *        *     请求超时。
     17    27 ms    26 ms    31 ms  11x.xx.xx.66

    跟踪完成。

Tracert: 路径追踪，基于 ICMP 的另一种工具，可以显示报文到达目的地的路径，检测网络丢包以及时延的有效手段，同时可以帮助管理员发现网络中的环路.

基于 IP 报文头中的 TTL 字段来逐跳追踪报文的转发路径，并且返回数据报文达到目的主机的路径详细信息，显示每个路径所消耗的时间.

### 工作原理

- 1. 源端设备将 TTL 值设置为 `1`, 该报文到达第一个节点后，TTL 超时，于是该节点向源端点发送一个 TTL 超时消息，该消息携带了该设备的 IP 地址和到达该设备使用的时间.
- 2. 源端设备将 TTL 值设置为 `2`, 该报文到达第二个节点后，TTL 超时，于是该节点向源端点发送一个 TTL 超时消息，该消息携带了该设备的 IP 地址和到达该设备使用的时间.
- 3. 反复此过程，直到报文到达目的地.

最后一个设备 应用层发数据时将 UDP 设置特别大目的端口值 到达目的地返回端口不可达.

IP编址

IP 编址 IP 编址 IPIP: 网际协议，网络层协议，用来为网络中设备分配逻辑地址. 网络层的逻辑地址就是 IP 地址，IP 地址是可以更改的，当设备在不同网络中，根据所处网...

ARP协议

ARP 协议 ARP 协议 ARPARP: 地址解析协议，用于已知一台设备 IP 地址时，获取对方的硬件地址信息，从而进行数据链路层的封装. ARP 协议本身没有一个独立的协议号. 网...

推荐阅读
kafka的管理使用 记一次仅在 IPv4 环境下访问 IPv6 网络的经历 IP编址 ARP协议 以太网帧结构 kafka的介绍

留言区

Notes
数据通信网络
Are You A Robot?