第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的工作过程:
-
构造ICMP回显请求
- 类型8,代码0
- 包含序号和标识符
- 包含发送时间
-
发送请求
- 发送给目标
- 记录发送时间
-
等待应答
- 等待ICMP回显应答
- 超时就认为丢了
-
收到应答
- 计算RTT
- 显示结果
-
循环
- 每隔一段时间发一个
- 直到停止
ping循环发送和接收。
标识符和序号
标识符和序号:
-
标识符:标识哪个ping进程
- 多个ping同时跑也能区分
- 通常用进程ID
-
序号:每个请求的序号
- 从0开始递增
- 用来匹配请求和应答
- 看丢了哪些
标识符和序号用来匹配请求应答。
7.3 IP记录路由选项
什么是记录路由
记录路由(Record Route):
- IP选项的一种
- 记录经过的路由器IP
- ping可以用这个选项
- 看经过了哪些路由器
记录路由记录路径上的路由器。
记录路由的原理
记录路由的原理:
-
发送方
- 在IP首部加记录路由选项
- 预留空间
- 第一个放自己的IP
-
每个路由器
- 转发时
- 把自己的出口IP加进去
- 指针后移
-
接收方
- 收到后
- 把自己的IP加进去
- 然后应答里带回来
-
发送方收到应答
- 读取记录的IP列表
- 就是路径
每个路由器把自己的IP加进去。
记录路由的限制
记录路由的限制:
-
空间有限
- IP选项最多40字节
- 记录路由选项本身占一些
- 最多记录9个IP
- 路径长了就不够
-
很多路由器不处理
- 安全原因
- 性能原因
- 可能跳过
-
只记录入站还是出站?
- 不同实现可能不同
- 可能记录入口或出口
- 不一定一致
记录路由有很多限制。
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+时间戳
时间戳选项记录时间。
时间戳的类型
时间戳的三种类型:
-
只记录时间戳
- 只记时间
- 不记IP
- 不知道哪个路由器的
-
记录IP和时间戳
- 每个路由器记IP和时间
- 更详细
- 占空间更多
-
预设IP,记录时间戳
- 发送方预设IP
- 只有匹配的才记录
- 节省空间
三种类型的时间戳。
时间戳的限制
时间戳的限制:
-
空间有限
- 也是IP选项
- 最多40字节
- 记录的数量有限
-
时间精度
- 毫秒级
- 不一定很准
- 路由器时钟可能不同步
-
很多路由器不支持
- 安全原因
- 性能原因
- 可能忽略
时间戳也有限制。
Ping用时间戳
Ping用时间戳选项:
ping -T 目标地址不同系统选项可能不同。
ping也可以用时间戳选项。
7.5 RTT测量
什么是RTT
RTT(Round-Trip Time):
- 往返时间
- 发请求到收应答的时间
- ping可以测RTT
RTT是往返时间。
RTT的特点
RTT的特点:
-
变化的
- 不是固定的
- 网络状况变化
- 路由变化
- 拥塞变化
-
有抖动
- 时大时小
- 叫jitter(抖动)
- 抖动大说明网络不稳定
-
不对称
- 去的路和回来的路可能不一样
- 去的时间和回来的时间可能不同
- 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概述
-
作用
- 测试连通性
- 测试RTT
- 测试丢包率
-
工作原理
- ICMP回显请求/应答
- 类型8/0
-
名字由来
- 声纳的ping
- 很形象
基本用法
-
命令
- ping 目标地址
- 各种选项
-
输出
- icmp_seq
- ttl
- time
- 统计信息
-
标识符和序号
- 标识进程
- 匹配请求应答
IP记录路由选项
-
作用
- 记录路径上的路由器
- 看经过哪些
-
原理
- 每个路由器加自己的IP
- 带回给发送方
-
限制
- 空间有限,最多9个
- 很多路由器不处理
IP时间戳选项
-
作用
- 记录时间
- 看处理时间
-
类型
- 只时间
- IP+时间
- 预设IP
-
限制
- 空间有限
- 精度有限
- 很多不支持
RTT测量
-
什么是RTT
- 往返时间
- 发请求到收应答
-
特点
- 变化的
- 有抖动
- 不对称
-
统计
- min/avg/max/mdev
其他用途
-
测试MTU
- DF位+大包
-
测试TTL
- 设置TTL
-
测试丢包率
- 发很多包
关键概念
-
Ping
- ICMP回显
- 测试连通性和RTT
-
记录路由
- IP选项
- 记录路径
-
时间戳
- IP选项
- 记录时间
-
RTT
- 往返时间
- 抖动