ICMP
ICMP (Internet Control Message Protocol、 互联网控制信息协议) 协议是一种面向无连接的协议,是 TCP/IP 协议簇的一个子协议,属于网络层协议。用来传递差错、控制、查询等消息
- Type : 类型,表示 ICMP 消息的类型
- Code : 代码,表示 ICMP 消息类型细分的子类型
- Checksum : 校验和,校验完整性
- Packet Content : 报文内容 (不同的类型或子类型含有不同的内容)
重定向
ICMP 重定向是路由器将路由信息传达给主机的机制。这种类型的报文通知主机更新它的路由信息
生成 ICMP 重定向报文必须满足以下条件:
- 路由器接收数据的接口与发送数据的接口相同
- 源 IP 与下一跳地址属于同一子网
报文类型
常见报文类型
类型 | 代码 | 描述 |
---|---|---|
0 | 0 | Echo Reply (响应) |
3 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
5 | 0 | 重定向 |
8 | 0 | Echo Request (请求) |
11 | 0 | TTL 超时报文 |
11 | 1 | 分片重组超时报文 |
电脑网络工具
Ping
用于测试数据包能否通过 IP 协议到达特定主机
实现原理:
向目标主机传出一个 ICMP 的请求回显数据包,并等待接收回显回应数据包。程序会按时间和成功响应的次数估算丢失数据包率 (丢包率) 和数据包往返时间
Traceroute
在 Linux 系统中为 tracepath,在 Windows 系统中为 tracert。用于显示数据包在 IP 网络经过的三层设备路径和 IP 地址
实现原理:
- 首先发送一个 TTL 为 1 的 UDP 报文
- 到达第一跳时 TTL 超时,第一跳设备发回一个 ICMP TTL 超时消息,指明此数据包不能被发送
- 发送主机将 TTL 加 1,重新发送此数据包
- 反复以上步骤,直至发送主机收到 ICMP Reply 信息或 TTL = 255 为止
ARP
ARP (Address Resolution Protocol、地址解析协议) 是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,通过网络地址来定位 MAC 地址
- Hardware Type : 硬件类型,表示ARP报文可以在哪种类型的网络上传输,值为 1 时表示为以太网地址
- Protocol Type : 协议类型,表示硬件地址要映射的协议地址类型,值为 0x0800 时表示 IP 地址
- Hardware Address Length : 硬件地址长度
- Protocol Address Length : 协议地址长度
- Operation : 操作类型,表示这个报文的类型
- 1 : ARP 请求
- 2 : ARP 响应
- 3 : RARP 请求
- 4 : RARP 响应
- Sender Hardware Address : 发送方硬件地址
- Sender Protocol Address : 发送方协议地址
- Target Hardware Address : 接收方硬件地址
- Target Protocol Address : 接收方协议地址
ARP 工作原理
- 发送方检查本地主机 ARP 缓存表是否含有目标地址的路由
- 若缓存表中没有目标地址路由,广播发送 ARP 请求报文
- 其他主机收到 ARP 请求后核对网络地址,并将发送方的物理地址和网络地址写入自己的缓存表中
- 目标主机收到请求后,单播发送 ARP 响应报文
- 发送方收到 ARP 响应报文将地址写入缓存表中
ARP 表项分为 动态(Dynamic) 与 静态(Static)
动态 ARP 表项由 ARP 协议通过 ARP 报文自动生成和维护,可以被老化,可以被新的 ARP 报文更新,也可以被静态 ARP 表项覆盖
静态 ARP 表项是手工建立的 IP 地址和 MAC 地址之间固定的映射关系。静态 ARP 表项不会被老化,不会被动态 ARP 表项覆盖
ARP Proxy
当同一网段、不同物理网络上的计算机需要通信时,三层网络设备可以通过 ARP Proxy (ARP 代理)实现相互通信
ARP欺骗 (ARP Spoofing)
攻击者通过监听交换机上的 ARP 请求报文,回复 MAC 为自身的 ARP 响应报文,使其他主机生成错误的 ARP 表项从而影响数据包发送方向
Gratuitous ARP
Gratuitous ARP (免费 ARP) 用于探测 IP 地址是否冲突
当主机 IP 地址变更时,向新 IP 地址发送 ARP 请求 (源地址为: 0.0.0.0)
- 若收到 ARP 响应,代表该 IP 地址已被使用
- 若没有收到 ARP 响应,则代表没有其他设备使用该 IP 地址