windows ping 默认会加32字节的负载,而抓包软件不会显示数据帧FCS最后4字节。
发送的包:
ping 172.16.11.254 -n 1 -l 0
不加负载,整个包为42字节=14字节(帧结构)+20(IP包头)+8(ICMP包头)
ping 172.16.11.254 -n 1
默认负载,32字节 整个包74字节=14字节(帧结构)+20(IP包头)+8(ICMP包头)+32(ICMP负载)
接收的包:
ping 172.16.11.254 -n 1 -l 0
不加负载,,整个包为60字节=14字节(帧结构)+20(IP包头)+8(ICMP包头)+18(数据帧padding)
ping 172.16.11.254 -n 1
默认负载,32字节 整个包74字节=14字节(帧结构)+20(IP包头)+8(ICMP包头)+32(ICMP负载)
当ping程序,
发送的包不足60字节(加上FCS 就是64字节),发送时按照ping设置的参数来确定发送大小,回传的包凑足60字节传回来。
发送的包达到60字节(以太网最小帧长度),发送时按照ping设置的参数来确定发送大小,回传的包与发送的包数据大小相同
-l 参数 :设置缓冲区大小,其实说的是设置ICMP负载的大小,不指定-l的话,默认是32字节,制定的话为0-65500,则实际所发送帧的大小为42-65542字节,再加FCS,,,为46-65546字节。
| DA | SA | TYPE | DATA | FCS |
6Bytes 6Bytes 2Bytes 46-1500Bytes 4Bytes
Ethernet II类型以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)。其中前12字节分别标识出发送数据帧的源节点MAC地址和接收数据帧的目标节点MAC地址。
接下来的2个字节标识出以太网帧所携带的上层数据类型,如16进制数0x0800代表IP协议数据,16进制数0x86dd代表IPv6协议数据,16进制数0x809B代表AppleTalk协议数据,16进制数0x8138代表Novell类型协议数据等。
在不定长的数据字段后是4个字节的帧校验序列(Frame. Check Sequence,FCS),采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验。
以太网最小发送帧长为64字节,按照标准,10Mbps以太网采用中继器时,连接的最大长度是2500米,最多经过4个中继器,因此规定对10Mbps以太网一帧的最小发送时间为51.2微秒。这段时间所能传输的数据为512位,因此也称该时间为512位时。这个时间定义为以太网时隙,或冲突时槽。512位=64字节,这就是以太网帧最小64字节的原因。现在基本上都是交换机或路由器直接连接计算机,集线器连接很少存在了,在交换机或路由器直接连接计算机时每个计算机与设备之间都是一个独立的冲突域,是不会产生冲突的,因此,此时发送长度小于64字节的帧理论上是可以的,但为了遵循原有标准,考虑到有些集线器设备依旧在使用,因此保持最小帧长64字节不变。