网络安全 / A LEAF IN THE GARDEN

ICMP

网络安全 · web / 网络协议。来自 Daily Learning 的学习笔记。

简介

互联网控制报文协议(Internet Control Message Protocol)用于在网络设备之间传递控制信息和错误报告,诊断网络问题以及提供网络状态信息。

报文结构

0–7 8–15 16–23 24–31
类型 Type
8 bit
代码 Code
8 bit
校验和 Checksum
16 bit
消息体(因 Type/Code 而异)
例如:标识符 + 序列号(Echo 请求/应答)
或:未用 + 出错 IP 头部 + 原始数据前 8 字节(不可达/超时)

类型(Type)

8 位字段,指示 ICMP 消息的类型

编号03811
类型Echo ReplyDestination UnreachableEcho RequestTime Exceeded

代码(Code)

8 位字段,指示 Type 下的子类型

例如 Type=3(Destination Unreachable)下的 Code 有:

编号012345
子类型网络不可达主机不可达协议不可达端口不可达需要分片但设置了 DF 标志源路由失败

原理

sequenceDiagram
box White
    participant A as 原主机
    participant B as 目标主机
end
    A->>B: 发送 ICMP Echo Request
    B->>A: 返回 ICMP Echo Reply

工具

  • ping:测试网络连通性,发送 ICMP Echo Request 并接收 ICMP Echo Reply

  • traceroute:追踪数据包经过的路由路径,发送带有递增 TTL(生存时间)的 ICMP Echo Request 获取每一跳路由信息

  • nmap:网络扫描工具,可以使用 ICMP 扫描