以OSI 七层为参考模型 每个层互相独立, 起初以太网采用了一种共享介质访问方式。随着网络的发展数据链路层引入了半双工和全双工通信,根据不同的工作模式采用了不同的工作方式,半双工采用CSMA/CD 访问方式,全双工则不预先判断链路的空闲 可以直接通信
一 半双工工作模式
MAC子层要发送数据时首先会检查链路是否空闲 如果空闲则发送一个信号表示准备向物理层发送数据
物理层这时检查到了冲突会向MAC子层发送一个信号告诉它有冲突
这时MAC子层会立即中断数据发送 并发出一连串的干扰信息来通告网络上的设备产生了冲突
等一段时间后链路空闲了 MAC子层在发送数据给物理层
物理层收到数据后会按8位一个字节的放入接受线上 这时会告诉一个信号给MAC子层表示已经收到了数据 这时会把接收线交给MAC子层
综上可以看出
1. 发送线 由8位组成的信号线
2. 接收线由8位组成的信号线
3. 链路空闲信号 指示链路是否空闲
4. 冲突检测信号 来告诉MAC子层是否有冲突
5. 发送数据指示信号:来告诉物理层要发送数据
6. 接受数据指示信号:来告诉MAC子层已经接收到了数据
二.全双工模式
它则不需要检测链路是否空闲 直接发送数据给物理层告诉一个发送信号
物理层收到会回个收到指示信号
链路层和物理层之间交换信息是通过字节交换的 可以根据信号来判断
MAC 子网层除了和物理交换数据外还有其他功能
1. 链路级的站点标识:在网络中建立唯一的站点
2. 链路级的数据传输:从上层(LLC)接受数据 并加上MAC 地址和控制信息把数据发送到物流链路上 这个过程掺杂了FCS
MAC子层为了标识站点分为以下几个类型
物理MAC地址:它是唯一标识终端
广播MAC地址:通用的MAC 是标识网络上所有的设备
组播MAC地址:逻辑上的MAC地址表示网络上的一组终端
上层要发送数据把数据交给MAC子网层 所以MAC子网层有了自己的缓存区包括
1. DMAC 2.SMAC 3.Length/type 4.数据/填充 5.CRC
当Length/type 大于1500b 时表示上层的协议类型 可以直接通LLC 交给上层
2. 当Length/type 小于或等于1500b时 就是ETHERNET SNAP
Snap 主要提供了一下几种功能
1无连接服务 SNAP :目前以太网实现就是这种服务
2.面向连接可靠数据传输:预先建立连接再传输数据 数据在传输过程中质量得到保证
3.接的带确认的数据传输服务:该类型的传输服务不需要连接,但在传输过程中加了确认机制使得 可靠性大大增加
这些服务都在LLC子层实现以下是LLC 子层帧的格式
DMAC
|
SMAC
|
Length/type
|
Llc
|
Fcs/data
|
通过上图可以看出 LLC 帧比MAC子网层帧多了LLC 里的三项
上面三种传输服务是通过 这三个字段实现的
通过一个例子来解释下他们的功能
1 假设终端A 和终端B 要通信
A.向B 发送一个面向可靠请求数据帧
B.接受到以后判断自己的资源是否够用 如果够用则回送一个包含识别该连接的SAP值
A 收到回应的SAP 值以后认为可以和B 建立面向连接于是自己也开辟了一个SAP 值
同时把在发送数据的帧里加入了SNAP 和DSAP 交给了MAC子网层
MAC子网层加入了 DMAC 和SMAC length 进行封装 传输
到了B端以后 MAC子网层接受数据后提交给LLC子网层 它根据LLC
dsap 字段来判断是那个传输服务 通过了 FCS 和CRC 传给上层
数据传输完成后B 会向A 发送一个信息表示B 的拆封连接完成于是结束通话
综上 对MAC 子网层和LLC 子网层有了一个了解
需要注意一下几点
1. MAC子网层的工作模式
2. LLC子网层的三个字段 以及其概念
3. 数据链路层是通过什么来模块来判断上次的协议类型
4. ethernet II 和ethernet snap 的区别 以及应用
本文出自 “С” 博客,转载请与作者联系!