数据链路层--以太网

代表协议:以太网.

以太网

以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;例如 以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等;

1. 以太网帧格式

在这里插入图片描述

目的地址和源地址, 叫做mac地址(物理地址), 长度是6字节. 也是用来区分不同的主机.

以太网的载荷可以有多种形式, 这多种形式就可以用类型来进行标识.

以类型0800 来说, 一个以太网数据帧的载荷部分最大长度1500, 这是受限于硬件的. 数据链路层和硬件是密切相关的, 对于以太网来说, 对应的硬件设备只能支持这么大. 换成其他的硬件, 也就需要搭配其他的数据链路层协议, 所对应的最大长度会不一样, 把这个最大长度称为MTU.

1500字节其实是一个很小的数值, 就比1kb多一点, 一个稍微大一点的传输层/ 应用层数据报都会在数据链路层被切分成多个. IP数据报的分包组包就是为了MTU搞出来的. IP数据报一般分包不是因为自身长度达到了64kb,而是因为MTU.

下面两个类型, 是为了辅助实现局域网转发的机制.

那么既然已经有了ip地址, 为什么还需要mac地址呢?

因为IP地址和mac地址几乎是在同一时期内被设计出来, 于是IP地址就负责网络层的转发, mac地址就负责数据链路层的转发了.

网络层转发是负责整体的转发过程

数据链路层负责的是局部(相邻设备)转发过程, 选择具体的传输方式, 是通过光纤传输, 还是wifi传输

举个例子, 加入我要从青岛去往上海

规划路线(网络层 路由选择):

  1. 青岛 -> 南京 -> 上海
  2. 青岛 -> 南京 -> 苏州 -> 上海
  3. 青岛 -> 上海

具体的转发过程(数据链路层) 假如我要选择第二条路线

  1. 青岛 -> 南京 坐飞机
  2. 南京 -> 苏州 坐高铁
  3. 苏州 -> 上海 坐大巴

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. mac地址与IP地址

虽然mac地址和ip地址都能表示当前的主机.但是她们两个有很多不同.

mac地址是6个字节, 表示的范围比ipv4要大很多, 所以mac地址在网卡出场的时候写死了, 可以保证每个设备的网卡都有独立的mac地址.

因此mac地址也就成了互联网上一种身份标识的方式.

### 以太网协议 V1.0 数据链路层的标准与规范 #### 1. 数据链路层概述 以太网数据链路层主要负责帧的封装、错误检测以及介质访问控制 (Media Access Control, MAC)[^3]。该层分为两个子层:逻辑链路控制 (Logical Link Control, LLC) 和媒体访问控制 (MAC) 子层。 #### 2. IEEE 802.3 标准中的数据链路层定义 IEEE 802.3 是以太网的核心标准之一,它规定了物理层和数据链路层的行为。对于以太网协议版本 1.0 的数据链路层部分,其核心功能包括但不限于以下几点: - **LLC 子层**: 提供无确认的服务接口给上层协议(如 IP),并支持多种网络协议共存于同一物理媒介之上[^2]。 - **MAC 子层**: 负责管理节点之间的通信过程,确保多个设备可以共享同一个物理媒介而不发生冲突。具体实现方式依赖 CSMA/CD 或全双工模式下的流量控制机制[^1]。 #### 3. 帧结构详解 在以太网协议 V1.0 中,数据链路层使用的典型帧格式如下所示: | 字段名称 | 长度 (字节) | 描述 | |----------------|-------------|----------------------------------------------------------------------| | 前导码 | 7 | 同步信号,用于接收方锁定发送时钟频率 | | 开始定界符 | 1 | 表明有效载荷即将开始 | | 目标地址 | 6 | 接收端硬件地址 | | 源地址 | 6 | 发送端硬件地址 | | 类型字段 | 2 | 定义高层协议类型 | | 数据负载 | 46~1500 | 实际传输的有效数据 | | FCS | 4 | 循环冗余校验值,用于检测传输过程中可能发生的比特错误 | 其中,FCS (Frame Check Sequence) 使用 CRC-32 算法计算得出,能够高效发现绝大多数随机性错误。 #### 4. 错误处理机制 当目标设备收到一帧后会重新计算一次 CRC 并将其同接收到的 FCS 进行比较。如果两者一致,则认为此帧未受损坏;反之则丢弃该帧并向更高层次报告异常情况。 以下是基于 Python 编写的简单 CRC-32 计算函数作为示例: ```python import binascii def calculate_crc(data): crc = binascii.crc32(data) return "%X" % (crc & 0xFFFFFFFF) data = b'example data' print(f"CRC-32 of {data}: {calculate_crc(data)}") ``` #### 5. 物理媒介适配 考虑到不同应用场景的需求差异,在实际部署中可能会采用各种类型的电缆或者无线技术来承载上述提到的所有操作流程。例如 MATEnet 连接器就是一种专为汽车环境设计的小型化解决方案,它可以满足高达 1 Gbps 的带宽需求,并遵循 IEEE 100BASE-T1 和 1000BASE-T1 标准的要求。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是布谷阿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值