环境说明
本文介绍的是Linux系统,包
iputils
包20211215
版本中的ping
命令,Window系统中的选项有所不同。
1. 简介
ping
是一个非常常用的网络诊断工具,用于测试主机之间的网络连接是否正常。
它通过发送 ICMP(Internet Control Message Protocol)
回显请求消息, 来检查网络主机之间的连通性。
2. 基本用法
|
|
常见选项:
-c
:指定发送回显请求的次数。单位次,默认值为不限次。-w
:设置超时时间(秒)。如果在指定的时间内没有收到任何回应,ping
命令将终止。默认值为 10 秒。-s
: 设置ICMP报文数据部分大小,默认值为56字节(数据部分,不含ICMP头8字节。实际ICMP数据包大小64字节)。-M
: 设置路径MTU发现策略(pmtudisc_option, Path MTU Disovery Option),do
= 设置DF(Don’t Fragment)标志位, 不允许任何分片;want
= 允许本地分片;dont
= 不设置DF标志位, 允许数据包在任何路径中被分片;-i
:指定发送回显请求的时间间隔(秒)。默认值为 1 秒。-t
:设置TTL
(Time To Live)。TTL
是一个8位的字段,表示数据包在丢弃之前可以经过的最大跳数(hops),每经过一个路由器 TTL 减 1, 当TTL为0时数据包被丢弃。默认值为 64 。
3. 示例
3.1 默认选项
-c 次数
= 无限,-s 数据包大小
= 56字节(数据部分大小,不含ICMP头8字节。实际数据包大小64字节),-t 跳数
=64
3.1 指定等待时间、探测次数
探测主机192.168.1.254是否有回应。 探测仅等待 3 秒,也仅探测 2 次。
|
|
3.2 指定发送的数据包大小
ping -c 4 -s 1024 www.example.com
用来测试MTU值不合适带来的丢包问题
3.3 探测整个网络传输的最大MTU值
-c 2
发2次探测ICMP报文-s 1472
1472(-s 数据部分大小) = 1500(MTU默认大小) - 28(因为IP头20字节,icmp包头8字节);-M do
参数不允许路由器、交换机进行拆包、包重组。
|
|
ICMP协议说明
ICMP(Internet Control Message Protocol)协议位于OSI的网络层(三层),ICMP报文
被封装在IP数据包中。依赖IP协议传输。
报文结构如下:
|
|