1、ping命令与字节大小的关系
基本:ping
命令是用于测试网络连通性和延迟情况的工具,它发送的是 ICMP Echo Request 消息到指定的目标主机,并等待该主机返回 ICMP Echo Reply 消息,在 Windows 操作系统中,ping
命令默认发送的数据包大小为 32 字节,而在 Linux 操作系统中,默认发送的数据包大小一般为 56 字节。
数据包构成:一个ping
数据包通常由以太网头部、IP 头部和 ICMP 头部以及数据负载等部分组成,以太网头部固定为 14 个字节,IP 头部一般为 20 个字节,ICMP 头部固定为 8 个字节,剩下的是数据负载部分。
2、计算 20000 字节对应的包数
不考虑分片情况:如果不考虑网络设备对数据包大小的限制以及分片等因素,单纯从字节数来计算包数,20000 字节除以每个包的大小就是包数,在 Windows 系统默认情况下,每个ping
包大小为 32 字节,则 20000÷32 = 625(包);在 Linux 系统默认情况下,若每个ping
包大小为 56 字节,则 20000÷56≈357.14(包),也就是大约需要 358 包。
考虑分片情况:大多数网络设备对可传输的数据包大小有限制,如以太网帧的最大传输单元(MTU)一般为 1500 字节左右,当ping
的数据包大小超过这个限制时,数据包会被分片传输,假设网络的 MTU 为 1500 字节,在 Windows 系统下,除去以太网头部、IP 头部和 ICMP 头部等固定字节后,数据负载部分最多只能有 1472 字节左右,20000 字节的数据需要被分片成多个小于或等于 1500 字节的包进行传输,具体包数会因系统和网络设置而异。
3、不同系统下的 ping 大包操作方法
Windows 系统:在 Windows 系统中,可以使用ping l length
命令来指定发送的数据包大小,其中length
是要发送的数据量,单位为字节,最大值是 65500 字节,要发送一个包含 20000 字节数据量的ping
请求,可以在命令提示符窗口中输入ping l 20000 [目标 IP 地址]
。
Linux 系统:在 Linux 系统中,可以使用ping s packet_size
命令来指定发送的数据包大小,其中packet_size
是要发送的数据包大小,单位为字节,要发送一个包含 20000 字节数据量的ping
请求,可以在终端中输入ping s 20000 [目标 IP 地址]
,也可以使用ping M do s packet_size
命令来禁止数据包进行分片,其中M do
参数表示禁止分片,s packet_size
参数表示指定数据包的大小。
相关问题与解答
1、问题:在 Windows 系统中,使用ping l 20000
命令时,为什么实际发送的数据包大小可能大于 20000 字节?
解答:因为在 Windows 系统中,ping
命令发送的数据包大小包括了以太网头部、IP 头部和 ICMP 头部等固定字节,以太网头部固定为 14 个字节,IP 头部一般为 20 个字节,ICMP 头部固定为 8 个字节,这些固定字节加起来一共是 42 个字节,当指定发送的数据包大小为 20000 字节时,实际发送的数据包大小应该是 20000 + 42 = 20042 字节。
2、问题:在 Linux 系统中,如何查看网络接口的 MTU 大小?
解答:在 Linux 系统中,可以使用ifconfig
命令或者ip
命令来查看网络接口的 MTU 大小,使用ifconfig
命令可以输入ifconfig [网络接口名称] | grep 'MTU:'
,其中[网络接口名称]
是要查询的网络接口的名称,如eth0
,使用ip
命令可以输入ip link show [网络接口名称] | grep 'mtu'
。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/122898.html