由来:数据链路层负责的主要是关于如何传输数据的问题,考虑的是一个点到点的问题。但是,现实中许多网络传输都是多点对多点的,这就涉及到如何共用信道的问题。前面在物理层已经介绍过TDM等方法,但是其仍有许多信道资源上的浪费,因此在MAC层,根据流量来进行更高效的介质访问控制。
解决的问题:管理网络中多个站点如何共享传输介质的问题
信道分配问题
静态分配方法
基本不可取,因为网络的流量一般具有突发性,因此忽略该方法
动态分配方法(有线传输)
ALHOA协议
纯ALHOA
核心思路:每个站点有了包就往信道上丢,反正没收到就重传
冲突期:2t(t是每个帧的传输延迟)
时隙ALHOA
核心思路:把时间按照帧的传输时延均分,传输只能在时隙的边界开始
冲突期:t
成功减少了冲突期
CSMA协议
纯CSMA
核心思想:在发送前监听信道,可以减少冲突期。
工作过程:
1、如果信道空闲,按p的概率发送帧
2、如果信道忙,则等待
3、如果两个站点同时发帧,那么崩溃
4、崩溃后等待一段时间,重新发
冲突期:
坚持CSMA和非坚持CSMA
非坚持CSMA:如果信道忙,那么等待随机时间后再发
坚持CSMA:如果信道忙,那么等到它空闲后,按照p概率发包,称为p-persist
CSMA
CSMA/CD(CSMA with collision detection)
核心思路:在CSMA的基础上,加入冲突检测。每当检测到冲突时,停止传输数据,并传输一个强化信号表示检测到冲突。然后退避一个随机的时间,再恢复传输
信道分为三个状态:冲突,传输,空闲
获得冲突状态至少也需要2
指数退避算法:
1、从
2、退避时间=
工作过程:
1、载波监听:一边发送包,一边监听冲突
2、冲突检测:经过至少2
3、随机退避,调用指数退避算法
## 动态分配方法(无线传输)
无线传输的新问题
1、冲突检测困难,发送方有固定的范围,超出范围外的没法检测冲突
2、容易发生干扰
3、隐藏终端问题,A和C同时发给B,此时A和C互相无法看到,那么在B处发生冲突
4、暴露终端问题,假设有四个节点A、B、C、D排列成一条直线,其中B正在给A发送数据。
问题核心:C能够听到B的传输信号,并因此误以为如果自己此时向D发送信息会造成冲突。但实际上,B和D之间没有重叠的通信范围,也就是说,B向A的数据传输不应该阻止C向D的数据传输。
解决方法
MACA协议
工作过程:
1、发送方发送一个RTS(Request To Send)帧到地址,代表预约请求发送
2、接收方回复一个CTS(Clear To Send)帧个发送方,代表允许发送
3、发送方接收到CTS之后,发送数据帧
4、接收方返回ACK帧
5、如果未接收到CTS,那么调用指数退避算法,然后重新发送RTS
RTS(S to R) ->CTS(R to S) ->DATA(S to R)-> ACK(R to S)
CSMA/CA协议
工作过程:
发送方:
1、监听信道,要确保信道中有DIFS的时间是干净的,然后进入退避状态
2、随机退避,在信道不干净的时候暂停。只有干净的时候开始计数,等到计数为0的时候,发送帧
3、如果没有收到ACK帧,增加退避时间,重复2
接收方:
只要接收完成,那么在等待SIFS时间确保信道干净后,发送ACK帧
其中,DIFS的时间大于SIFC的时间(重要),为了确保发送ACK的优先级高于发送数据帧
另外,每个发送的帧都带有NAV信息,能够让其他站点知道信道大概需要被占用多久
为了防止高误码率,可以采用段突发机制,将帧分成很小的块,减小重传的可能性。从而使得传输更快
TXOP技术的使用:
使得高速站点的发送的更加的公平。
计算方法:c = ci/n,每个速度除以总的站点数就行了
不适用TXOP则是每个站点的加权平均数
MAC层协议的评价指标
- 低负载:时延越低越好
- 高负载:吞吐量越高越好
IEEE 802层
物理层(Physical Layer)
- 信号编码/解码:负责将数据转换为适合通过传输介质发送的形式,以及接收时将其转换回数字信息。
- 比特传输/接收:处理实际的数据位在物理媒介上的传输与接收过程。
- 传输介质和拓扑结构:定义了使用何种类型的电缆或无线技术来传输数据,以及网络的物理布局。
MAC子层(Media Access Control 子层)
1. 基本工作原理:广播与寻址
以太网是一种广播型网络,当一个站点(station)发送数据时,信号会沿着共享的总线向所有方向传播,网络上的每一个站点都能收到这个信号。
- 寻址 (Addressing):
为了让数据能准确送达,每个数据帧都必须包含一个目的MAC地址。
- 接收机制: 网络上的所有站点都会检查帧的目的地址。只有目的地址与自身MAC地址匹配的站点才会完整地接收并处理该数据帧,其他所有站点则会忽略它。
2. 介质访问控制:CSMA/CD
为了解决多个设备在共享信道上同时发送数据造成的冲突(collision)问题,以太网采用了一种名为 CSMA/CD (载波侦听多路访问/冲突检测) 的协议。
CSMA/CD 工作流程
- 侦听信道 (Listen before talking):
在发送数据前,设备会先监听信道,确认是否空闲。
- 等待并发送 (Talk if quiet):
如果信道持续空闲超过一个帧间间隔 (IFG - Inter-Frame
Gap) 的时间,设备就立即开始发送数据。
- IFG:
在10Mbps以太网中,标准IFG为9.6µs(即发送96个bit所需的时间),用于让接收方有时间从接收模式切换回发送模式。
- IFG:
在10Mbps以太网中,标准IFG为9.6µs(即发送96个bit所需的时间),用于让接收方有时间从接收模式切换回发送模式。
- 忙则等待 (Wait for quiet before talking):
如果侦听到信道正忙,设备会持续监听,直到信道变为空闲,并再等待一个IFG的时间后,立即发送。
- 边发边听 (Listen while talking): 在发送数据的整个过程中,设备会持续监听信道,以检测是否存在冲突。
冲突处理机制
- 检测到冲突:
如果在发送时检测到冲突(收到的信号与发出的信号不一致),立即停止发送数据。
- 发送Jam信号: 发送一个 32 bits (4 bytes) 的
Jam
信号,这是一个特殊的信号模式,目的是加强冲突信号,确保网络上所有设备都能检测到此次冲突。
- 指数退避算法 (Exponential Backoff):
- 所有发生冲突的设备都会停止发送,并各自计算一个随机的退避时间。
- 退避时间的计算公式为
R × Slot Time
,其中Slot Time
(时隙) 固定为 51.2µs,R
是一个从[0, 2^k - 1]
范围中选取的随机整数。k
是冲突的次数,但最大不超过10。
- 等待完各自的随机时间后,设备会回到第1步,重新尝试发送。
- 所有发生冲突的设备都会停止发送,并各自计算一个随机的退避时间。
- 放弃发送: 如果一个帧连续冲突16次后仍未成功发送,设备将放弃发送该帧并向上层报告错误。
3. 以太网帧结构
以太网帧定义了数据在网络上传输的标准格式。历史上存在DIX Ethernet和IEEE 802.3两种略有差异的格式,主要区别在于Type/Length字段的定义。
字段 | 字节数 | 功能描述 |
---|---|---|
Preamble (前导码) | 7 | 一系列交替的1和0
(101010... ),用于接收端进行时钟同步。(物理层加的) |
SOF (帧起始定界符) | 1 | 10101011 ,明确标识帧的开始。 |
Destination Address | 6(48位) | 接收方的MAC地址。 |
Source Address | 6(48位) | 发送方的MAC地址。 |
Type / Length | 2 | DIX格式: 表示上层协议类型 (如 0x0800
代表IP)。802.3格式: 表示数据字段的长度。 |
Data | 46-1500 | 承载的实际数据。如果数据不足46字节,则需要用Pad字段填充。 |
Pad (填充) | 0-46 | 当数据字段不足46字节时,用于填充,以确保整个帧的最小长度。 |
Checksum (CRC) | 4 | 循环冗余校验码,用于检测帧在传输过程中是否出错。 |
4. MAC 地址 (物理地址)
MAC地址是烧录在网络接口卡(NIC)上的全球唯一的硬件地址。
- 格式: 48位 (6字节),通常用十六进制表示。
- 结构:
- 前24位: OUI
(组织唯一标识符),由IEEE分配给硬件制造商(如
00-60-97
属于3COM)。
- 后24位:
由制造商自行分配的序列号,确保每个网卡的地址唯一。
- 前24位: OUI
(组织唯一标识符),由IEEE分配给硬件制造商(如
- 特殊地址:
- 广播地址:
FF:FF:FF:FF:FF:FF
,发送到此地址的帧会被网络上所有设备接收。
- 广播地址:
5. 帧长度限制
以太网规定了帧的最小和最大长度,这对于协议的正常运作至关重要。
==这部分必须要背下来==
最大帧长:1518 字节
- 这个限制主要源于早期硬件(1978年)的RAM成本高昂,限制了设备缓存整个数据帧的能力。
- 它由1500字节的最大数据负载加上18字节的头部和校验和组成。
最小帧长:64 字节
- 这是确保冲突检测机制能够正常工作的关键。
- 原因:
在一个最大尺寸的以太网中,信号从一端传播到最远端再返回所需的最长时间(即Slot
Time, 2τ ≈ 51.2µs),就是设备能够检测到冲突的最晚时间点。
- 为了确保发送方在发送完一帧之前一定能检测到可能发生的冲突,帧的传输时间必须大于等于这个Slot
Time。
51.2µs
的时间在10Mbps以太网上传输的数据量为10Mbps × 51.2µs = 512 bits = 64 bytes
。
- 因此,任何以太网帧都必须至少有64字节长。如果数据部分不足46字节,就必须用Pad字段填充至46字节,以满足最小帧长要求。
LLC子层(Logical Link Control 子层)
- 隐藏MAC层差异,提供统一接口给网络层:LLC子层向网络层提供了标准化的服务接口,使得即使底层的MAC协议不同,上层的应用程序也不需要关心这些差异。
- 流量控制和错误控制:确保数据能够按照正确的速度传输,并且在发生错误时可以采取适当的措施进行恢复。
- 通过网桥互连局域网:允许不同的局域网通过网桥连接起来,形成更大的网络结构。
以太网
特别说明:MDU大小为1500bytes,为了网络层计算中特此备注
设备
设备方面,有集线器和交换机两种,集线器是形式上星型,逻辑上总线型,交换机是形式上和逻辑上都是总线型。使用交换机可以消除冲突,所以不需要CSMA/CD了
自动协商机制(FAST往上都有)
在FAST以太网往上,都有这个机制,说白了就是和接收方约定,使用哪个速度进行传输
载波扩展(GB往上)
为了解决高速以太网中传输距离过短这个条件,就使用了这个技术,说白了就是确定一个最小帧长,没达到的时候就用冗余的信息填充
最小帧长的计算
必须要使得总帧的发送时长大于等于RTT,即
但是对于较快的网络来说,这样的方法实在有些浪费。所以为了减少浪费,下面又推出了帧突发机制
帧突发(GB往上)
允许发送者发送多个帧的连接信息,第一个帧携带额外的冗余信息,剩下的不用。但是只有连续的帧才能这样
然后设置了一个最大的多帧长度,防止一直连接下去。
暂停帧(GB往上)
由于千兆以太网网上太快了,很可能造成缓冲区溢出,所以必须进行流量控制。
采用暂停帧的方法,如果接收方处理不过来了,那么就发送一个暂停帧,让它缓一缓再发。
网桥
作用
用来连通不同的LAN
表项内容
- 目的地址
- 接口
后向学习算法(必考)
工作过程:
1、收到帧,储存到缓存中
2、查找过去的表
3、根据收到的帧中的源地址信息和表信息,如果源地址和目的地址来源于同一个LAN,那么丢弃该帧
4、反之将其发送到对应的端口。
5、将受到的帧中的端口和源地址添加到查找表中
6、如果查找表中没有目的地址的端口,那么泛洪(所有端口转发)
生成树算法
只需要知道它用来解决冗余拓补中,容易出现环导致广播风暴的问题就行
VLAN
在交换机中,标记每个端口的“颜色”,相同端口进入的帧,只能传给相同颜色的端口,这样就构建了VLAN
特别注意:VLAN交换机也可以和非VLAN交换机同时工作,只需要在非VLAN交换机收到含有VLAN ID的帧的时候,无视掉就行了
如果您喜欢我的文章,可以考虑打赏以支持我继续创作.