CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
概述
- 多路访问链路(广播链路)采用共享介质连接所有站点。发送站点通过广播方式发送数据并占用整个共享介质的带宽。由于每个站点只需要一条网线接入网络就可以访问所有站点,这种网络一般安装简单,价格便宜。局域网(Local Area Network,LAN)都是使用这种链路。
- 在多路访问链路中多个站点同时发送数据,则会产生冲突。这种问题是点到点链路没有的,因此,需要重新考虑数据链路层的功能设计。
- OSI 把这种访问共享介质的功能专门划分为数据链路层的一个字层,就是介质访问控制子层(Media Access Control,MAC)。其功能是控制和协调所有站点对共享介质的访问,以避免或减少冲突。
- 因为 MAC 子层不提供可靠的数据传输,所以在 MAC 子层之上又定义了一个子层,逻辑链路控制子层(Logic Link Control,LLC),用来为上层协议提供服务:
- LLC1 提供无确认无连接服务
- LLC2 提供有确认面向连接的服务
- LLC3 提供有确认无连接的服务
以太网(Ethernet)
以太网属于 OSI 参考模型的数据链路层,是为了实现局域网通信而设计的一种技术,它规定了包括物理层的连线、电子信号和介质访问层协议的内容,是目前应用最普遍的局域网技术。
以太网的 MAC 层协议
CSMA/CD 协议(Carrier Sense MultipleAccess With Collision Detection)
发送帧的方法
- 发送数据帧之前先监听信道。如果信道空闲,立即发送。如果信道忙,则持续监听,直到信道空闲,立即发送。
- 边发送边检测冲突。如果发送完毕都没有检测到冲突,则发送成功。
- 如果检测到冲突,则停止发送,并发送 32 位干扰位(jamming signal)以加强冲突信号。采用二进制指数退避算法随机延迟一段时间后,转 1。
二进制指数退避算法:
第一次冲突:从 0 个或 1 个时间片中随机选择一个进行延迟
第二次冲突:从 0,1,2,3 个时间片中随机选择一个
……
第 i 次冲突:从 0,1,…2^j-1 个时间片随机选择一个。i<16,j=min(i,10).
前十次冲突后可选时间片数量每次加倍,11~15 次冲突后可选时间片数量不变,所以也称为截止式二进制指数退避算法。(其中, 时间片 τ 的长度为 512 比特的时间, 10Mbps 的以太网为 51.2 μs 。)
三种 CSMA 协议
- 1-persistent CSMA:信道空,立即发送;信道忙,持续监听。(以太网)
- non-persistent CSMA:信道空,发送;信道忙,随机延迟一段时间
- p-persistent CSMA:信道空,立即以概率 p 发送,以概率 1-p 延迟一个时间槽;信道忙,延迟一个时间槽
802.3 的 MAC 帧格式:
- 前导字符(Preamble): 同步字符(7B)和起始定界符(Start of Frame Delimiter)(1B)。
- 有效载荷(Payload): 用户数据。不足 46 字节时加入填充字节(任何字节)至 46 字节。
- 类型/长度字段(Type/Length):指明上层协议(>1500)或有效载荷的长度(≤1500)。
- 帧校验序列(Frame Check Sequence):对目的地址、源地址、类型/长度和有效载荷(加填充位)字段进行 CRC-32 校验。
MAC 地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的 MAC 地址。
(可运行 ipconfig /all 命令,MAC 地址会显示在下方)
源地址和目标地址(6B):
源地址一般为发送者的单播地址。目标地址可以是接收者的单播地址,也可以是多播地址和广播地址。
- 单播地址:全球唯一。每个网卡或接口一个,最高字节的最低有效位为 0.如: 06-01-02-01-2C-4B。也称为网卡地址,烧录地址,MAC 地址,硬件地址,物理地址。
- 多播地址:字节 0 的第 0 位为 1,并且地址非全 1,如:01-00-5E-20-01-4B。
- 广播地址:48 位全为 1.
可使用 ipconfig/all 显示 mac 地址:
接收帧的方法:
- 以太网站点(网卡)会缓存所有的帧
- 如果缓存的帧有错(长度错误,CRC 错等),则丢弃它
- 如果缓存的帧的目的地址为单播地址并且与接收该帧的网卡的 MAC 地址一致,则接收它。如果目的地址为多播地址并且为网卡预设的多播地址之一,或者为广播地址,也接收它。其他情况则丢弃它
- 如果把网卡设置为混杂模式,则会接收所有无错的帧
最短帧问题:
- 以太网(10M bps)相距最远的两个站点(上图站点 A 和 B)之间的信号往返时间为 51.2 μs
- 假如站点A 发送的数据在快到达站点 B 时与其发送的数据冲突,因为发送站点只在发送时才检测冲突,为了检测到返回的冲突信号,则要求站点 A 此时还在发送,故帧长至少为 512b(64B)
- 64B 也称为争用窗口(contention window)长度
以太网(802.3)的物理层:
交换机的每个端口属于一个冲突域,集线器的所有端口处于一个冲突域。
交换机会增加冲突域的数量,减少冲突范围的大小。
由集线器(hub)连接形成的以太网以半双工方式工作,因为集线器采用电子线路方法模拟总线方式的以太网,两台主机同时发送会产生冲突。
- 如果两个接口同时发送数据会产生冲突,则这两个接口属于同一个冲突域
- 一个广播帧可以到达的所有接口属于一个广播域
- 属于同一个冲突域的以太网部分称为网段(segment)
以太网:802.3,10Mbps
快速以太网:802.3u,100Mbps,其它同以太网相比不变
千兆以太网:802.3ab,1000Mbps,其它不变
万兆以太网:保持帧格式不变,光纤或双绞线,全双工,无冲突,不使用 CSMA/CD 算法
以太网(10BaseT)、快速以太网(100Base-TX)和千兆以太网主要在 OSI 的物理层不同。
透明网桥:
用网桥(bridge)连接若干局域网(LAN)可以建造一个更大的局域网, 称为桥接的局域网(bridged LAN) 或 扩展局域网(extended LAN)。 原来的局域网就成为该扩展局域网的一部分,称为该扩展局域网的一个网段(Segment)。
透明网桥算法的操作包括:
- 扩散(flood)
- 转发(forward)
- 过滤(filter)
MAC 地址表,自学习
- MAC地址表初始为空。 网桥从端口接收所有的帧,并把接收到的帧的源地址和接收端口记录到MAC地址表中- 如果该源地址在MAC 地址表中不存在,则增加一个新记录,并启动超时定时器;如果存在,则更新接口并重启超时定时器
当网桥收到一个单播帧,它会用该帧的目的地址查询 MAC 地址表:
扩散(flood)就是网桥把收到的帧转发到除了该帧的接收端口之外的所有其它端口。
例子:
下面的扩展 LAN 包含三个透明网桥 B1、B2、B3 和四台主机 A、 C、D、E。如果网桥的 MAC 地址表初始都是空的,在以下三次传输之后 MAC 地址表的内容是什么? (1) D 发送了一个帧给 E; (2) A 发送了一个帧给 D; (3) C 发送了一个帧给 A.
解析:
(1)D 发送帧给 E,到达 B2 网桥时,B2 更新该帧的源地址为 D,接收端口为 3; 因为未找到目的地址 E,所以进行扩散,到达 B1 和 B3,B1 更新源地址为 D,接收端口为 1,B3 更新源地址为 D,接收端口为 1,然后在 B3 网桥处找到目的地址,帧传输结束。
(2)A 发送帧给 D,帧达到 B2 时,B2 更新源地址为 A,接收端口为 1,找到目的地址 D,结束。
(3)C 发送给 A,帧到达 B1,B1 更新源地址为 C,接收端口为 2;未找到目的地址,所以进行扩散,到达 B2,B2 更新源地址为 C,接收端口为 2,找到目的地址 A。
所以经过三次帧传输之后,B1、B2、B3 的 MAC 地址表分别为:
B1 的 MAC 地址表:
D | 1 |
C | 2 |
B2 的 MAC 地址表:
D | 3 |
A | 1 |
C | 2 |
B3 的地址表:
D | 1 |
生成树协议(Spanning Tree Protocol):
- 网桥只在根端口和指定端口之间转发帧
- 指定端口:指定网桥上与网段连接的端口
- 指定网桥:网段上离根最近的网桥
- 如果到根网桥的最短路径有多条,可以采用最短路径上的下一网桥 ID 和下一个端口 ID 用于打破平衡(取更小的)
例子:
下图显示了由五个透明网桥(B1~B5)形成的扩展 LAN。如果网桥 ID 使用其下标,所有链路的开销均为 1。
(1)哪个是根网桥? (2)段 A~D 的指定网桥(designated bridges)分别是什么?
(3)网桥 B1~B5 的根端口分别是什么?
解析:
(1)B1 BID 最小,为根网桥。
(2)指定网桥:网段上离根最近的网桥。
A、B 上离 B1 最近的网桥就是 B1
C 上离 B1 最近的网桥为 B2
D 上 B4 和 B5 离根网桥距离相同,但是 B4id 较小,所以指定网桥为 B4
(3)根端口:网桥上离根最近的端口
B1 无
B2 为 1
B3 端口 1、2 距离相等,但是 1 端口 id 小,所以根端口为 1
B4 为 2
B5 为 2
虚拟局域网(Virtual LAN,VLAN):
- 如果网桥只在具有相同颜色的端口(Port) 之间转发帧,就会把原来的局域网分割成多个相互隔离的局域网,称为虚拟局域网(Virtual LAN,VLAN)。
-
所谓的颜色其实就是VLAN ID,是由管理员为每个端口配置的,具有相同的 VLAN ID 的端口处于同一个 VLAN,端口的默认 VLAN 为 VLAN 1。
- 一个VLAN的帧只能转发到属于同一个VLAN的端口或者干道端口。
- 只有发往干道端口的帧才需要加上VLAN ID。
- 从干道收到的帧中如果没有VLAN ID,则认为是本征 VLAN(Native VLAN),默认为 VLAN 1。- 发往干道的 Native VLAN 的帧不加 VLAN ID。例子:
下图中哪些发送的帧将被目的主机收到?
E 发送给 A. E 发送给 B. A 发送给 E. A 发送给 D. B 发送给 D. D 发送给 A. D 发送给 B
解析:
上述中只有 E 发给 A 和 A 发给 E 的能被收到。
交换机
交换机(switch)是一个把多个网段连接起来的设备,也称为多端口网桥。
转发方法
- 存储转发(Store and forward): 交换机接收整个帧后转发它。大部分都采用这种转发模式。
- 直通(Cut through): 交换机不用收到整个帧而是收到帧的硬件地址后立即转发它。如果输出(outgoing port)忙,则会转为存储转发。
- 无碎片(Fragment free): 交换机不用收到整个帧而是收到帧的前 64 个字节(冲突窗口)后立即转发它。
- 适应性交换(Adaptive switching): 自动在上面三种方式进行选择。全双工模式:交换机可以工作在全双工模式下,因为没有冲突, CSMA/CD 算法可以被关闭。 自动翻转(Auto-MDIX):大部分交换机可以自动选择连接方式:交叉线或直通线
自适应(Autonegotiation):两个站点周期性使用快速链路脉冲(fast link pulse,FLP)选择 10M/100M/1000M bps 自适应。
IEEE802 系列标准:
IEEE 802 又称为 LMSC(LAN /MAN Standards Committee, 局域网/城域网标准委员会),致力于研究局域网和城域网的物理层和 MAC 层中定义的服务和协议,对应 OSI 网络参考模型的最低两层(即物理层和数据链路层)。将数据链路层划分为 LLC 逻辑链路控制子层和 MAC 介质访问控制子层。