什么是ICMP

报文结构

ICMP简介_ping

常用功能

  1. 错误报告:ICMP用于报告和传递网络中发生的错误和异常情况。例如,当路由器无法将数据包传递到目的地时,它会生成ICMP错误消息,以通知源主机或其他相关设备发生了错误。
  2. 网络探测和诊断:ICMP协议包含一些用于网络探测和诊断的消息类型。(ping)
  3. 数据包片段处理:当MTU过大时路由器或网关会发送ICMP Fragmentation Needed消息通知主机最大的MTU值。(type 3 code 4)
  4. TTL(Time to Live)处理:TTL值达到零,路由器会发送ICMP Time Exceeded消息通知源主机数据包已经过期,并丢弃该数据包。(type 11 code 0)
  5. ICMP Redirect消息:ICMP Redirect消息用于路由器通知源主机更优的路径。(一些动态路由通知更优路径使用)

常见的差错报文

  • Echo Reply

正常ping回复

type 0 code 0

ICMP简介_网络运维_02

  • Port Unreachable

标端口未打开或不可用(一般端口未打开或者防火墙阻塞都是直接丢弃数据包很少有回复端口不可达的)

type 3 code 3


ICMP简介_ping_03

  • Time Exceeded

超时,即TTL再转发中用尽为0(路由环路或者tracert都常见)

type 11 code 0

Tracertoute

原理

  • 将开始的探测包中的TTL设置为1
  • 遇到一个路由器就变为了超时,返回差错报文,
  • 每次发包后依次增加发送包的TTL

ICMP简介_icmp_04

需要防护的

ICMP泛洪

  • 常见的DoS
  • 通过向目标设备发送大量的ICMP数据包
  • 可以通过wireshark查看捕获的数据包,通过’统计→协议分级‘查看ICMP占比判定

ICMP smurf

  • 属于分布式DoS
  • 向多个主机发送ICMP ECHO REQUEST,但是IP包头中源IP字段填写成目标IP
  • 目标主机的主机会收到大量的 ICMP ECHO Reply