ICMP协议简介(一)

1. ICMP介绍

  • 架构IP网络时需要特别注意两点:
    • 1.确认网络是否正常工作
    • 2.遇到异常时进行问题诊断
  • ICMP的主要功能:
    • 1.确认IP包是否成功送达目标地址。
    • 2.通知在发送过程当中IP包被废弃的具体原因。
  • ICMP技术网络设备都配合。

2. ICMP实例

ICMP协议简介(一)
eg:如果R1到达R2的包在R2发现没有到达R3的路由,则发送ICMP到R1,告知不可达。

3.ICMP头部

ICMP协议简介(一)

  • ICMP头部有8个字节
  • 前四个字节格式固定
    • type类型 8bit
    • code代码 8bit
    • checksum校验和 16bit
  • 后四个字节不固定:可能有可能没有,和类型有关系。

4. ICMP报文的类型

  • 不同类型由报文中的类型字段代码字段共同决定
  • ICMP分为两种类型
    • 查询报文
    • 差错报文

  • 报文类型如下图所示:
    其中最熟悉的两个报文都是 查询报文:++type0-code0++,++type8-code0++。
    • 0-Echo Reply 0。echo响应,被ping使用
    • 8-请求回复 0。echo请求
  • 差错报文占大多数

ICMP协议简介(一)

4.1 差错报文

4.1.1差错报文结构

  • 当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据包的前8个字节

ICMP协议简介(一)

  • 差错报文数据前8个字节意义:
    tcp,udp,arp前8字节都含有源端口号反馈给源主机。
  • 接收ICMP差错报文的模块就会把它与某个协议、和用户进程联系起来
    • 协议(根据IP数据报首部中的协议字段来判断)
    • 用户进程(根据包含在IP数据报前8字节中的TCP、UDP报文首部中的TCP、UDP端口号判断)

4.1.2 不可达差错

1.路由
  • 回复收到U.U.U,则类型为3:目的不可达

ICMP协议简介(一)


  • debug ip icmp 进一步解析为哪种不可达。发现host unreachable(主机不可达)
    ICMP协议简介(一)

  • 思科路由器,Telnet一个IP地址,如果收到ICMP报错则会报错

ICMP协议简介(一)

2.过滤PING
  • 同样 debug ip icmp
  • 出现administratively prohibited unreachable,表示用户强制过滤
  • 另外可以抓包观察到++type:3,code:13++

ICMP协议简介(一)


  • 思科路由器Telnet之后会报错。
  • 当然也存在 TCP reset的可能
  • 但是微软计算机不会报错,只是坚持发送Telnet SYN包,直到超时,程序员不太关心网络。
    ICMP协议简介(一)
3.MTU
  • 调小MTU,一个包与出接口MTU有关。
    ICMP协议简介(一)
  • ICMP flag为df的包不可分片,一旦大于MTU就丢弃,并且发送不可达信息。

  • 如果因为MTU问题回复ICMP,则ICMP首部后两个字节中会写入MTU大小
    ICMP协议简介(一)
4.端口不可达
  • TCP访问一个未开放端口号立刻会失败,(可以利用这个特性进行 端口扫描
    • 有失败反应,则端口未开放
    • 无反应,反而有可能端口已打开
  • UDP访问未开放端口号,会反馈端口不可达信息
    ICMP协议简介(一)

4.1.3 关闭不可达信息

  • 面对未知的互联网,不必要提供不可达等重要信息。使用:no ip unreachable
    ICMP协议简介(一)
    -思科对ICMP 报错速率已经够进行了控制,避免发送大量的ICMP。
    eg:ip icmp rate-limit unreachable 1000。默认1000毫秒=1秒,发送一个ICMP

4.1.4 ICMP TTL超时

  • TTL不断减少,到0之后超时。

4.1.5 ICMP Redirect

-ICMP 重定向,选择更优化更应该走的路径。路由器不会理会重定向ICMP,无路由信息的二层设备会接收ICMP
ICMP协议简介(一)

相关文章:

猜你喜欢
  • 2021-06-20
  • 2021-10-31
  • 2021-12-30
  • 2021-09-23
  • 2021-07-02
相关资源
相似解决方案