计算机网络笔记(二十二)——4.4网际控制报文协议ICMP

4.4.1ICMP报文的种类

ICMP(Internet Control Message Protocol)是IP协议的辅助协议,主要用于传递控制消息、错误报告和诊断信息。其报文分为两大类:查询报文错误报告报文

1. 错误报告报文(Error Messages)

用于网络传输过程中出现错误时的通知,目的主机或路由器需要及时处理这些报文。

1.1 目的不可达(Destination Unreachable)- 类型3

  • 用途:通知源主机数据报无法传递到目标。

  • 代码字段(Code)

    0 - 网络不可达(Network Unreachable)
    1 - 主机不可达(Host Unreachable)
    2 - 协议不可达(Protocol Unreachable)
    3 - 端口不可达(Port Unreachable)
    4 - 需要分片但禁止分片(Fragmentation Needed)
    
  • 示例:目标主机防火墙禁止访问某协议或端口。

1.2 源点抑制(Source Quench)- 类型4

  • 用途:通知源主机降低发送数据速率(过时功能,现由TCP拥塞控制替代)。
  • 代码字段:固定值为0。

1.3 时间超时(Time Exceeded)- 类型11

  • 用途:TTL(生存时间)减至0时触发。

  • 代码字段

    0 - TTL超时(数据包未到达目标)
    1 - 分片重组超时(分片数据未在限定时间内完成重组)
    
  • 示例traceroute工具依赖此报文检测路径上的路由器。

1.4 参数问题(Parameter Problem)- 类型12

  • 用途:报告IP头字段错误(如校验和错误、选项字段无效)。
  • 代码字段:固定值为0或1。

1.5 重定向(Redirect)- 类型5

  • 用途:路由器通知源主机更优的下一跳路由。

  • 代码字段

    0 - 对网络重定向
    1 - 对主机重定向
    

2. 查询报文(Query Messages)

用于网络诊断或通信双方的状态确认。

2.1 回显请求与应答(Echo Request & Reply)- 类型8/0

  • 用途:验证网络连通性(如ping命令)。
  • 工作流程
    • 回显请求(Type=8):源主机发送请求。
    • 回显应答(Type=0):目标主机响应。

2.2 时间戳请求与应答(Timestamp Request & Reply)- 类型13/14

  • 用途:同步网络设备的时间或测量网络时延。
  • 数据字段:包含请求发送时间戳、接收时间戳和应答时间戳。

2.3 地址掩码请求与应答(Address Mask Request & Reply)- 类型17/18

  • 用途:获取子网掩码(现多由DHCP替代)。
  • 代码字段:固定值为0。

ICMP报文分类

在这里插入图片描述

关键点总结

  1. 错误报文优先级:ICMP错误报文不触发新错误(避免无限循环)。
  2. 查询报文示例ping命令依赖回显请求与应答实现连通性测试。
  3. 错误报文时延:如接收缓冲满载,错误报文可能被延迟或丢弃。

通过上述分类和机制,ICMP帮助IP协议更健壮地处理网络异常和诊断需求。

4.4.2ICMP的应用举例

一、ICMP应用场景概述

ICMP(Internet Control Message Protocol)不是独立的传输协议,而是一个辅助IP协议的"信使协议"。常见的应用场景包括:

  1. 网络诊断(如Ping命令)
  2. 错误状态反馈(如目标不可达、超时等)
  3. 路由优化(如重定向报文)
  4. 路径特征探测(如TTL超时)

二、经典应用举例

1. Ping命令(网络连通性测试)

  • 实现原理:依靠ICMP的Echo Request(类型8)和Echo Reply(类型0)报文
  • 流程解析

在这里插入图片描述

  • 关键细节
    • 包含标识符(标识进程)和序列号(识别丢失/重复的包)
    • 利用回复中的Timestamp计算往返时间(RTT)
    • 如果TTL耗尽但仍未到达目的主机,中间路由器会返回Type 11(超时)报文

2. Traceroute(路径追踪)

  • 实现原理:利用逐级递增TTL触发沿路路由器返回ICMP超时报文
  • 流程示例

在这里插入图片描述

  • 技术细节
    • Windows系统使用ICMP报文实现,Linux默认使用UDP+ICMP实现
    • 目的端口设置为不常用的高位端口(通常为33434-33534)
    • 如果收到Type 3(目标不可达)或Type 0(Echo Reply),停止探测

3. 路由重定向(优化网络流量)

当路由器发现主机选择了次优路径时,会发送Type 5的ICMP重定向报文:

在这里插入图片描述

  • 重定向类型
    • Code 0:重定向网络
    • Code 1:重定向主机
    • Code 2:重定向TOS和网络
    • Code 3:重定向TOS和主机

4. MTU路径发现(避免分片丢包)

  • 原理:发送DF(Don’t Fragment)标记的探测包,触发ICMP Fragmentation Needed(Type 3, Code 4)报文
  • 流程关键点
    在这里插入图片描述

三、ICMP差错报文工作机制

所有ICMP差错报文必须包含原始IP首部+前8字节负载,使接收方能准确定位问题来源。

示例:端口不可达(Type 3, Code 3)
当主机收到UDP包但目标端口无监听服务时:

在这里插入图片描述

四、扩展思考

  1. 防火墙与ICMP:某些场景会过滤ICMP(如类型8/0用于隐蔽扫描)
  2. ICMP攻击面:Ping Flood、Smurf攻击均基于ICMP报文
  3. IPv6的ICMPv6:整合了旧版ARP和IGMP的功能(如邻居发现)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao--xin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值