1.以太网帧整体结构
以太网帧整体结构:前同步码(8字节)
、以太网首部(14字节)
、IP首部(20字节)
、TCP首部(20字节)
、应用数据
、CRC(4字节)
。
IP首部、TCP首部
均包含在以太网数据部分,以太网数据最小46字节
,最大1500字节
(MTU最大传输单元
)。
2.以太网帧
前同步码: 前7字节都是10101010
,最后一个字节是10101011
。用于将发送方与接收方的时钟进行同步,主要是有不同的以太网类型,同时发送接收速率也不会完全精确的帧速率传输,因此需要在传输之前进行时钟同步。
目的地址: 接受方的MAC地址(其中的源地址和目的地址是指网卡的硬件地址(也叫MAC 地址),长度是48 位,是在网卡出厂时固化的)。
源地址: 发送方的MAC地址(其中的源地址和目的地址是指网卡的硬件地址(也叫MAC 地址),长度是48 位,是在网卡出厂时固化的)。
类型: 这是网络协议分层设计减小耦合度的精心设计,这允许以太网多路复用网络层协议,可以支持除了IP协议之外的其他不同网络层协议,或者是承载在以太网帧里的协议(如ARP协议)。接收方根据此字段进行多路分解,从而达到解析以太网帧的目的,将数据字段交给对应的上层网络层协议,这样就完成了以太网作为数据链路层协议的工作。
类型(2字节) | 协议 |
---|---|
(0800 | IP数据报 |
(0806 | ARP请求/应答(报文数据28字节+PAD18字节) |
(0835 | RARP请求/应答(报文数据28字节+PAD18字节) |
以太网帧中的数据长度规定最小46 字节,最大1500 字节,ARP 和RARP 数据包的长度不够46 字节,要在后面补填充位。最大值1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包度大于拨号链路的MTU了,则需要对数据包进行分片fragmentation)。ifconfig 命令的输出中也有“MTU:1500”。注意,MTU 个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。
数据: 在交换式以太网中,一台主机向局域网中的另一台主机发送一个IP数据报,这个数据报封装在以太网帧结构中作为其有效载荷,以太网的最大传输单元(MTU)是1500字节,也就是限制了一个IP数据报最大为1500字节,如果超过1500字节,就要启用IP协议的分片策略进行传输。同时,数据字段最小长度为46字节,如果不够必须要填充到46字节。如IP数据报和填充部分会被网络层利用IP数据报首部的长度字段去除相关填充。
CRC: 循环冗余校验,用来让接收方的网卡适配器检查接收的到数据帧是否有错误,是否有比特翻转引入差错,如果引入了差错就会丢弃,这是网卡适配器直接从硬件响应的。此字段是发送方发送时由适配器从该帧中除了前同步码之外的其他比特进行映射计算获得。
前同步码由网卡适配器接收帧时同步时钟使用,不会再接收方显示,CRC字段用来校验帧,如果校验不合格就丢弃了,只有合格的数据帧才会被网卡接收,故CRC字段也不用管理。因此解析以太网数据帧的关键就是获取类型字段,然后根据类型字段将数据字段的数据交给上层协议进行处理。同时保存下目的MAC地址和源MAC地址,以供后续其他使用。