ping 命令数据包大小

ping 命令数据包大小

当我在 Linux 上使用 ping 命令时

我得到以下输出:

    ping google.com
PING google.com (216.58.205.206) 56(84) bytes of data.
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=2 ttl=128 time=490 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=3 ttl=128 time=1209 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=4 ttl=128 time=702 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=5 ttl=128 time=112 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=6 ttl=128 time=320 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=7 ttl=128 time=137 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=8 ttl=128 time=145 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=9 ttl=128 time=281 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=10 ttl=128 time=138 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=11 ttl=128 time=298 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=12 ttl=128 time=194 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=13 ttl=128 time=395 ms
64 bytes from mil04s29-in-f14.1e100.net (216.58.205.206): icmp_seq=14 ttl=128 time=124 ms

因此对于第一行,它说大小是 56 字节(这是 icmp 数据的大小,对吗?)+ 8(icmp 头)+ 20(ipv4 头)= 84 字节,这是每个发送数据包的大小,对吗?

不,下一行说的是 64 字节(数据 + icmp 头),为什么重放中是 64 字节,而不是 84 字节?!

在最后一行

14 packets transmitted, 13 received, 7% packet loss, time 13607ms

什么是时间?如何计算?

问候

答案1

您可以使用以下命令获取包的手册页(“手册”)man

如果您man ping在终端中运行,您将获得该ping实用程序的详细描述以及如何使用它的说明。

在手册页中,有以下条目:

ICMP 数据包详细信息 不带选项的 IP 标头为 20 字节。ICMP ECHO_REQUEST 数据包包含额外的 8 字节 ICMP 标头,后面跟着任意数量的数据。当指定数据包大小时,这表示此额外数据的大小(默认值为 56)。因此,ICMP ECHO_REPLY 类型的 IP 数据包中接收的数据量将始终比请求的数据空间多 8 个字节 (ICMP 标头)。

哦,时间是以毫秒(ms)计算的

相关内容