第7章 Ping程序

所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议

本章介绍Ping程序,包括Ping的工作原理、IP选项、记录路由和时间戳等。


7.1 引言

Ping的作用

Ping程序:

  • 测试网络连通性
  • 测试往返时间(RTT)
  • 测试丢包率
  • 最常用的网络工具

ping是最常用的网络诊断工具。


Ping名字的由来

Ping名字的由来:

  • 来自声纳的”ping”
  • 发一个声波,听回声
  • 网络上发一个包,等回应
  • 很形象

ping的名字来自声纳。


Ping的工作原理

Ping的工作原理:

  • 用ICMP回显请求(类型8)
  • 对方回ICMP回显应答(类型0)
  • 能收到说明通
  • 测时间差就是RTT

ping用ICMP回显请求/应答。


本章讨论的内容

本章讨论的内容:

  • Ping的基本原理
  • IP记录路由选项
  • IP时间戳选项
  • RTT测量
  • Ping的输出

本章介绍Ping程序。


7.2 Ping的基本用法

基本用法

Ping的基本用法:

ping 目标地址
ping 192.168.1.1
ping www.baidu.com

常见选项:

  • -c count:发多少个包
  • -i interval:间隔时间
  • -s size:包大小
  • -t ttl:TTL值
  • -v:详细输出

ping有很多选项。


Ping的输出

Ping的输出例子:

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.23 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.98 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=1.05 ms

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.98/1.08/1.23/0.11 ms

输出字段:

  • icmp_seq:序号
  • ttl:生存时间
  • time:往返时间
  • packet loss:丢包率
  • rtt min/avg/max:最小/平均/最大RTT

ping的输出包含很多信息。


Ping的工作过程

Ping的工作过程:

  1. 构造ICMP回显请求

    • 类型8,代码0
    • 包含序号和标识符
    • 包含发送时间
  2. 发送请求

    • 发送给目标
    • 记录发送时间
  3. 等待应答

    • 等待ICMP回显应答
    • 超时就认为丢了
  4. 收到应答

    • 计算RTT
    • 显示结果
  5. 循环

    • 每隔一段时间发一个
    • 直到停止

ping循环发送和接收。


标识符和序号

标识符和序号:

  • 标识符:标识哪个ping进程

    • 多个ping同时跑也能区分
    • 通常用进程ID
  • 序号:每个请求的序号

    • 从0开始递增
    • 用来匹配请求和应答
    • 看丢了哪些

标识符和序号用来匹配请求应答。


7.3 IP记录路由选项

什么是记录路由

记录路由(Record Route):

  • IP选项的一种
  • 记录经过的路由器IP
  • ping可以用这个选项
  • 看经过了哪些路由器

记录路由记录路径上的路由器。


记录路由的原理

记录路由的原理:

  1. 发送方

    • 在IP首部加记录路由选项
    • 预留空间
    • 第一个放自己的IP
  2. 每个路由器

    • 转发时
    • 把自己的出口IP加进去
    • 指针后移
  3. 接收方

    • 收到后
    • 把自己的IP加进去
    • 然后应答里带回来
  4. 发送方收到应答

    • 读取记录的IP列表
    • 就是路径

每个路由器把自己的IP加进去。


记录路由的限制

记录路由的限制:

  1. 空间有限

    • IP选项最多40字节
    • 记录路由选项本身占一些
    • 最多记录9个IP
    • 路径长了就不够
  2. 很多路由器不处理

    • 安全原因
    • 性能原因
    • 可能跳过
  3. 只记录入站还是出站?

    • 不同实现可能不同
    • 可能记录入口或出口
    • 不一定一致

记录路由有很多限制。


Ping用记录路由

Ping用记录路由选项:

ping -R 目标地址

输出例子:

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.23 ms
RR:  192.168.1.100
      10.0.0.1
      192.168.1.1
      10.0.0.1
      192.168.1.100

ping -R可以用记录路由。


7.4 IP时间戳选项

什么是时间戳选项

时间戳选项(Timestamp Option):

  • IP选项的一种
  • 记录每个路由器的时间戳
  • 看每个路由器的处理时间
  • 也可以记录IP+时间戳

时间戳选项记录时间。


时间戳的类型

时间戳的三种类型:

  1. 只记录时间戳

    • 只记时间
    • 不记IP
    • 不知道哪个路由器的
  2. 记录IP和时间戳

    • 每个路由器记IP和时间
    • 更详细
    • 占空间更多
  3. 预设IP,记录时间戳

    • 发送方预设IP
    • 只有匹配的才记录
    • 节省空间

三种类型的时间戳。


时间戳的限制

时间戳的限制:

  1. 空间有限

    • 也是IP选项
    • 最多40字节
    • 记录的数量有限
  2. 时间精度

    • 毫秒级
    • 不一定很准
    • 路由器时钟可能不同步
  3. 很多路由器不支持

    • 安全原因
    • 性能原因
    • 可能忽略

时间戳也有限制。


Ping用时间戳

Ping用时间戳选项:

ping -T 目标地址

不同系统选项可能不同。

ping也可以用时间戳选项。


7.5 RTT测量

什么是RTT

RTT(Round-Trip Time):

  • 往返时间
  • 发请求到收应答的时间
  • ping可以测RTT

RTT是往返时间。


RTT的特点

RTT的特点:

  1. 变化的

    • 不是固定的
    • 网络状况变化
    • 路由变化
    • 拥塞变化
  2. 有抖动

    • 时大时小
    • 叫jitter(抖动)
    • 抖动大说明网络不稳定
  3. 不对称

    • 去的路和回来的路可能不一样
    • 去的时间和回来的时间可能不同
    • RTT是总和

RTT是变化的。


Ping的RTT统计

Ping的RTT统计:

  • min:最小RTT
  • avg:平均RTT
  • max:最大RTT
  • mdev:平均偏差(抖动)

这些值的意义:

  • min:最好情况
  • avg:平均情况
  • max:最坏情况
  • mdev:稳定性,越小越稳定

ping给出RTT的统计信息。


7.6 Ping的其他用途

测试MTU

测试MTU:

  • 发大包,设置DF位
  • 看能不能通
  • 不通说明MTU不够
  • 可以测路径MTU
ping -M do -s 1500 目标地址

ping可以测MTU。


测试TTL

测试TTL:

  • 设置不同的TTL
  • 看能到哪里
  • 类似traceroute
ping -t 1 目标地址
ping -t 2 目标地址

ping也可以测路径。


测试丢包率

测试丢包率:

  • 发很多包
  • 看丢了多少
  • 丢包率 = 丢的数量 / 总数量

注意:

  • 有些设备限制ICMP速率
  • 可能不准
  • 仅供参考

ping可以测丢包率。


7.7 小结

Ping概述

  1. 作用

    • 测试连通性
    • 测试RTT
    • 测试丢包率
  2. 工作原理

    • ICMP回显请求/应答
    • 类型8/0
  3. 名字由来

    • 声纳的ping
    • 很形象

基本用法

  1. 命令

    • ping 目标地址
    • 各种选项
  2. 输出

    • icmp_seq
    • ttl
    • time
    • 统计信息
  3. 标识符和序号

    • 标识进程
    • 匹配请求应答

IP记录路由选项

  1. 作用

    • 记录路径上的路由器
    • 看经过哪些
  2. 原理

    • 每个路由器加自己的IP
    • 带回给发送方
  3. 限制

    • 空间有限,最多9个
    • 很多路由器不处理

IP时间戳选项

  1. 作用

    • 记录时间
    • 看处理时间
  2. 类型

    • 只时间
    • IP+时间
    • 预设IP
  3. 限制

    • 空间有限
    • 精度有限
    • 很多不支持

RTT测量

  1. 什么是RTT

    • 往返时间
    • 发请求到收应答
  2. 特点

    • 变化的
    • 有抖动
    • 不对称
  3. 统计

    • min/avg/max/mdev

其他用途

  1. 测试MTU

    • DF位+大包
  2. 测试TTL

    • 设置TTL
  3. 测试丢包率

    • 发很多包

关键概念

  1. Ping

    • ICMP回显
    • 测试连通性和RTT
  2. 记录路由

    • IP选项
    • 记录路径
  3. 时间戳

    • IP选项
    • 记录时间
  4. RTT

    • 往返时间
    • 抖动

Ping