MAC帧格式

1、以太网最大传输单元MTU=1500

2、MAC帧最小为64字节,目标地址+源地址+FCS(帧校验序列)占了18字节,所以IP数据报最小为46个字节

3、无效的MAC帧

① 帧的长度不是整数个字节

② 用收到的帧序列FCS查到有差错

③ 数据段的长度不在46~1500字节之间

④ 有效的MAC帧长在64~1518之间

⑤ 对于检查出的无效MAC帧就简单地丢弃,以太网不负责重传丢弃的帧

以太网的争用期定为51.2us,对于10M/s以太网,51.2us可以发送521bit数据,即64字节,所以也叫以太网的最小帧长

5、以太网规定帧间最小间隔为9.6μs,对于10M/s以太网,相当于96bit的发送时间

一个站在检测到总线开始空闲后还要等待9.6μs才能再次发送数据,这样做是为了使刚刚收到数据帧的接受缓存来得及清理,做好接受下一帧的准备

### MAC格式详解 MAC是数据链路层的核心组成部分之一,其主要功能是在同一物理介质上的设备之间传输数据。以下是关于MAC格式的具体结构和组成的详细介绍。 #### 1. 头 (Frame Header) MAC的头部包含了多个关键字段,用于控制数据包的传递过程以及提供必要的元信息。具体如下: - **目标MAC地址 (Destination MAC Address)** 长度为48位(6字节),表示接收方的硬件地址。这是用来唯一标识网络接口卡(NIC)的地址[^3]。 - **源MAC地址 (Source MAC Address)** 同样长度为48位(6字节),表示发送方的硬件地址。它帮助接收端知道是谁发送的数据包[^3]。 - **类型/长度字段 (Type/Length Field)** 这是一个2字节的字段,具有双重含义: - 如果值大于等于1536,则表示这是一个**类型字段**,定义了上层协议的类型。例如,“0800”代表IPv4协议,“0806”代表ARP协议,“0838”代表RARP协议[^1]。 - 如果值小于1536,则表示这是一个**长度字段**,指明后续数据部分的实际大小(单位为字节)。 #### 2. 数据部分 (Payload / Data) 这一部分承载着来自更高层协议的有效负载数据。它的最小长度通常为46字节,最大长度则取决于具体的以太网标准(如传统以太网的最大长度为1500字节)。如果实际数据不足46字节,则会在填充区域补齐至最低要求[^3]。 #### 3. 填充区 (Padding) 当有效载荷少于规定的最小尺寸时,填充区会被用来补充额外的无意义比特序列,使得整个达到所需的最短长度。这有助于保持信号同步并满足某些硬件的要求。 #### 4. 校验序列 (FCS – Frame Check Sequence) 位于MAC的最后一部分,由4字节构成,采用循环冗余检验算法(CRC)计算得出。接收者可以利用这些信息验证接收到的数据是否完整无误。如果有任何错误发生,在大多数情况下都会丢弃有问题的[^3]。 ```python # Python伪代码展示如何解析简单的MAC结构 class MacFrame: def __init__(self, dst_mac, src_mac, type_length, payload): self.dst_mac = dst_mac # 目标MAC地址 self.src_mac = src_mac # 源MAC地址 self.type_length = type_length # 类型或长度字段 self.payload = payload # 数据部分 def calculate_fcs(self): # 计算FCS import binascii data_bytes = bytes.fromhex(''.join([self.dst_mac.replace(':', ''), self.src_mac.replace(':', ''), format(self.type_length, '04X'), ''.join(format(byte, '02X') for byte in self.payload)])) crc_value = binascii.crc_hqx(data_bytes, 0xFFFF).to_bytes(2, 'little') return int.from_bytes(crc_value, 'big') frame_example = MacFrame(dst_mac="08:00:27:AE:F3:E9", src_mac="08:00:27:03:FB:19", type_length=0x0800, payload=b'\xDE\xAD\xBE\xEF') print(f"FCS Value: {frame_example.calculate_fcs():04X}") ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情的搬砖机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值