ping和traceroute的工作原理

本文详细介绍了ICMP协议的工作原理,包括其在PING和TRACEROUTE中的应用。PING利用ICMP回送请求和应答来检测网络可达性,而TRACEROUTE则通过递增TTL值追踪数据包经过的路由器,同时利用ICMP超时消息确定路径。此外,还解释了ICMP的各种类型和代码,如目标不可达、原点抑制和重定向消息,以及如何通过它们获取网络信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PING原理

PING是基于ICMP协议(网络层)工作的

ICMP:Internet Control Message Protocol,互联网控制报文协议

ICMP用于报告传输过程中出现的问题,比如确认IP包是否成功送达,或者发送过程中被废弃的原因

比如主机A向主机B发送消息,在途径某个路由器时,无法发现B的存在。路由器就会向A发送一个ICMP不可达的数据包,A解析ICMP的首部和数据段得知具体信息

  • ICMP报文

封装在IP包里,从左到右依次是IP头、ICMP头、ICMP数据段,后两部分构成IP数据段。

ICMP 报文

ICMP是IP首部的“协议”字段来区分,不同ICMP以其首部的“类型”和“代码”来区分

类型字段

大致分为两类,一类是主动查询(回送),一类是通知差错

查询类是由主机主动发送的,差错类是由路由遭遇异常时发送的

内容种类
0回送应答查询
3目标不可达差错
4原点抑制差错
5重定向或改变路由差错
8回送请求查询
11超时差错

回送消息

PING命令就是根据回送消息来实现的,用于判断消息是否成功到达对端。其中,主动发送的叫回送请求被动接收的叫回送应答

每发送一个消息,序号字段会自增1

目标不可达

当类型是目标不可达时,可以根据代码字段作进一步区分:

  1. 网络不可达:根本找不到目标IP网络
  2. 主机不可达:可以找到网络,但是找不到主机(可能未连接)
  3. 协议不可达:通过某种协议(比如TCP)访问目的主机时,防火墙禁止该协议访问
  4. 端口不可达:目的主机没有监听访问的端口
  5. 需要分片但设置了不分片

原点抑制

遇到网络拥堵/低速路线时,向源主机发送原点抑制消息,从而增大传输间隔(等)

重定向消息

路由器发现了一条更优的路由选择

超时消息

TTL减小到0时,IP包被丢弃,然后发送超时消息

  • PING

执行ping指令时发生了什么(A→B)(A\rightarrow B)(AB),同一子网

  1. A构建ICMP回送请求消息(类型、序号、发送时间)
  2. 通过ICMP构建IP数据包(源IP、目的IP、协议)
  3. 添加MAC头(ARP映射表or发起ARP查询),获得数据帧(源MAC、目的MAC)
  4. B收到数据帧,检查目的MAC,检查目的IP
  5. 构建ICMP回送响应消息(类型、序号)
  6. A收到后计算RTT
TRACEROUTE原理

和PING类似,TRACEROUTE同样是利用ICMP实现,但是TRACEROUTE(基于UDP)使用的是差错报文类型

  1. 设置TTL,追踪途径的路由器
  2. 设置不分片,确定MTU

追踪路由

发送一连串的ICMP,TTL不断增大,使每次能比前一次多经过一个路由。每次能够获取一个ICMP超时消息,其中就包含了最新到达的路由IP

TRACEROUTE会给ICMP设置一个**“不可能”的端口号**,如果到达目的主机了,就会收到端口不可达

确定MTU

通过需要分片但设置了不分片的差错消息实现

当发送的ICMP不分片,且大小大于MTU时,会被路由丢弃,然后返回差错ICMP告知MTU大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值