欢迎光临
我们一直在努力

ICMP初步学习

ICMP(Internet Control Message Protocol,互联网控制报文协议)是 TCP/IP 协议簇中的核心协议之一,主要用于在 IP 网络中传递控制信息与诊断网络故障。


ICMP 位于 OSI 模型的第三层——网络层。

ICMP协议的功能

  • 确认 IP 包是否成功到达目标地址
  • 通知 IP 包在发送过程中被丢弃的原因 

工作原理

在 IP 通信中,如果某个 IP 包未能到达目标地址,具体原因会由 ICMP 负责通知。

示例说明:

  • 主机 A 向主机 B 发送数据包。
  • 若路由器 2 未能发现主机 B 的存在,会向主机 A 发送一个 ICMP 目标不可达数据包,说明数据包未能成功到达。
  • 核心要点

  • 依附 IP 协议
    • ICMP 报文不会独立传输,而是封装在 IP 数据包中(IP 首部协议字段值为 1)。
  • 核心功能
    • 差错报告:当数据包传输失败(如目标不可达、超时、参数错误)时,路由器或主机会向源端发送差错报文。
    • 网络诊断:支持 Ping(ICMP 回显请求/应答)、Traceroute(路由追踪)等网络诊断工具。
    • 控制功能:如 ICMP 重定向,帮助主机优化路由路径。
  • 常见报文类型
    • 回显请求(Type 8)/回显应答(Type 0):用于 Ping 测试。
    • 目标不可达(Type 3):如主机不可达、端口不可达等。
    • 超时(Type 11):当数据包生存时间(TTL)耗尽时触发。
  • 报文格式
    • ICMP 报文结构包括:ICMP头部和ICMP数据部分。不同类型的 ICMP 报文有不同的格式,但都包含一个基础的头部结构。

    ICMP 报文结构

    ICMP报文的格式可以分为两部分:

    • ICMP头部
    • ICMP数据部分

    不同类型的ICMP报文格式略有不同,但所有报文均包含基础头部结构。


    直观理解

    • ICMP 报文是封装在 IP 包里的。
    • ICMP 通知消息通过 IP 进行发送。
    • 路由器返回的 ICMP 包会按常规路由经过其他路由器再转发给源主机。
    • 主机收到 ICMP 包后,解析其首部和数据域,得知发生问题的具体原因。

    IP数据包与ICMP关系

    IP数据包结构:

    • IP头(20字节固定)+ ICMP报文(ICMP头 + 可变数据)
    • IP头负责寻址、路由和传输控制。
    • ICMP报文作为 IP 数据部分,被协议字段(值=1)标识为 ICMP 协议。

    报文大小限制

    • ICMP 封装在 IP 数据包中,IP 的总长度字段为 16 位(最大 65535 字节)。
    • 这一限制导致了经典的网络攻击——Ping of Death。

    ICMP 包头类型分类

    ICMP 包头的类型字段,大致可以分为两大类:

    • 一类是用于诊断的查询消息,也就是「查询报文类型」
    • 另一类是通知出错原因的错误消息,也就是「差错报文类型」

    ICMP 包头的类型字段,确实可以分为两大类:查询报文类型和差错报文类型,下面是详细说明:


    一、查询报文类型

    这类报文是双向交互的,用于主动探测网络状态,常见类型有:

    • 回显请求(Type=8)/ 回显应答(Type=0):ping 命令的底层实现,用于测试网络连通性。
    • 时间戳请求(Type=13)/ 时间戳应答(Type=14):用于网络时间同步。
    • 地址掩码请求(Type=17)/ 地址掩码应答(Type=18):用于获取子网掩码(现已较少使用)。

    二、差错报文类型

    这类报文是单向的,由路由器或目标主机在处理IP数据报出错时发送,常见类型有:

    • 目标不可达(Type=3):如网络不可达、主机不可达、端口不可达等。
    • 源抑制(Type=4):通知源主机降低发送速率(现已淘汰)。
    • 重定向(Type=5):告知主机更优的路由路径。
    • 超时(Type=11):TTL 耗尽或分片重组超时。
    • 参数问题(Type=12):IP 首部字段错误。
    赞(0)
    未经允许不得转载:171主机测评 » ICMP初步学习
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址