以太网有两种类型的数据帧,一种是Ethernet_II另一种是IEEE802.3。
两者并没有明确的规定两种类型的使用场景,通常都是由协议/应用程序的开发者定义的。
通过观察发现:
DMAC字段(目标的MAC地址)
SMAC字段(发送者的MAC地址)
Type字段(描述Data中的封装的报文类型)常见类型:ARP[0x0806]、IP[0x0800]、VLAN[0x8100]
Data字段(用户数据,其中还包含IP报头、TCP/UDP报头)
其中的封装可以看作以下的抽象描述:
【 Data数据 】
【 IP报头【Data数据】 】
【 IP报头【TCP报头【用户数据】】 】
FCS字段(以太网校验字段,校验方法为循环冗余检验)
以太网帧最短帧长度为64Byte(字节)、最长1518Byte,当超过1518Byte之后的数据帧就需要进行一个分片处理。
以太网帧所占用的长度为:DMAC+SMAC+Type+FCS=18Byte。
已知最短帧长为64Byte,减去以太网18Byte之后就说明Date字段封装内容最短需要有46Byte。
46Byte中还包含着IP报头与TCP或UDP报头:
得出的结果大小,也就是实际用户数据的最小长度。
以太网帧中的Data字段会自行填充0,直到满足最短帧长。
疑惑:理论上说以太网帧不满足最小帧长,Data字段会填充0,但在终端所发送的包中并没有体现出来。
以下是抓包用户发送的ICMP数据包结果,可以看了总帧长为45Byte(并没有将FCS字段长度计算在内),用户实际长度为3Byte,完全不符合最小帧长度的要求。
网络设备这边,则是能够正常的进行填充,实现数据帧满足最小帧长要求
网络设备这边可以看到帧长度为60Byte(加上FCS字段4byte就满足了最小64Byte帧长了)
64Byte-18Byte(以太网帧长度)-20Byte(IP报头)-8Byte(ICMP属于UDP报文占8Byte)-3Byte(实际发送长度)
=64-18-20-8-3
=15Byte
以太网帧最短帧长度为64Byte(字节)、最长1518Byte,当超过1518Byte之后的数据帧就需要进行一个分片处理。
因为有MTU(最大传输单元)限制,网络设备限制最大传输的MTU大小为1500Byte(此处的1500Byte指的是以太网中Data字段大小限制在1500Byte内),超过MTU值的数据包就需要进行分片,将数据包分成小于/等于MTU值大小的数据分片,到了目的地再组装起来。
换名话讲,当以太网帧长度大于1518Byte就需要进行分片。
会禁止发送该不正常的数据包。
更新时间:2024-08-27
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号