局域网概述
局域网(Local Area Network, LAN)是指覆盖局部区域的计算机网络, 通常在机构内部使用.
与广域网相比, 局域网通常物理跨度和设备数很少但对带宽要求很高.
对比OSI参考模型, 局域网技术主要定义物理层和数据链路层的实现.即定义介质的物理特性, 实现点对点的物理寻址和线路控制功能, 也可能包括差错控制, 流量控制等功能.
环状和星形是最常见的局域网拓扑结构, 此外还有总线型和树形等.
以太网是目前使用最广泛的局域网技术, 它使用交换机进行网络连接和组织, 使用星形或总线型拓扑结构.
IEEE802 参考模型
早期的局域网技术由各厂家开发, 互不兼容. IEEE提出了802系列标准, 推动了局域网技术的标准化.
IEEE802物理层对传输媒体和拓扑结构进行了定义, 使之可以兼容双绞线、同轴电缆、光纤和无线等多种传输介质.
对比OSI参考模型, IEEE802将数据链路层的功能分到了介质访问控制(Media Access Control, MAC)和逻辑链路控制(Logic Link Control, LLC)两个子层.
介质访问控制
MAC子层直接控制帧(frame)在信道上的传输, 提供物理寻址和线路控制功能. MAC子层接受来自LLC层的数据块, 并添加MAC首部(header)和尾部(tailer)把它们封装成帧.
MAC首部一般包含控制字段, 目的MAC地址, 源MAC地址等, MAC尾部一般包含帧的校验信息.
MAC子层的核心任务是解决局域网中不同设备竞争共享信道时冲突的问题, 根据资源分配策略部署位置的不同分为集中式和分布式两种.
集中式控制采用一台控制器分配信道资源, 任何设备使用信道必须得到控制器的授权.
分布式控制网络中, 所有设备配合执行资源分配. 比如令牌环网中一个被称为令牌(token)的特殊帧在信道上传递, 只有收到该帧的设备才可以使用信道.
载波监听多路访问(Carrier Sense Multiple Access,CSMA)是一种分布式的介质访问控制协议.
CSMA根据监听发送策略分为3类:
-
非持续CSMA: 设备监听到信道忙或冲突时则会等待一段随机时间后再次监听, 信道空闲则立即发送. 此策略延迟较高, 信道利用率较低.
-
持续CSMA: 设备监听到信道忙或冲突时会一直监听, 发现信道空闲则立即发送. 信道利用率高, 但会产生较多的冲突.
-
p-持续CSMA: 设备监听到信道忙或冲突时会一直监听, 发现信道空闲则根据概率p决定是否发送. 持续CSMA可以视为p-持续CSMA的一个特例:1-持续CSMA
这些方法可以减少冲突的发生, 但无法彻底解决碰撞问题, 我们需要改进方案.
载波侦听多路访问/碰撞检测(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)要求设备在发送帧的同时进行监听.若发送过程中监听到冲突, 则执行冲突处理:
-
中止数据发送并发送全1信号作为阻塞消息, 使得其它设备尽快检测到冲突.
-
在一定范围内等待一段随机时间后再次发送
-
若再次冲突则采用截断二进制指数避退算法进行发送,即每一次等待时间即为上一次的两倍.尝试16次之后仍然失败则放弃发送.
载波侦听多路访问/碰撞避免(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA)采用主动监测来避免冲突, 主要使用两种方法来避免冲突:
-
在信道空闲且设备准备发送时, 设备总是先等待一段随机时间后, 结束等待后发现信道仍然空闲则发送数据.由于各个设备的等待时间是分别随机产生的, 再次冲突的可能性大大减少.
-
设备在发送帧之前首先发送一个很小的RTS(Request to Send)帧给最近的接入点(Access Point), 等待目标端回复CTS(Clear to Send)帧后再开始发送.
CSMA/CA方案被IEEE802.11采纳. 此外还有位仲裁(BA)和载波优先(CP)等方法.
逻辑链路控制
逻辑链路控制(Logical Link Control,LLC)子层工作在MAC子层之上, 并为网路层的访问提供接口.
下图展示了一个帧内部各层之间的关系:
LLC层提供了帧出错控制和流量控制等功能, LLC提供了3种工作模式:
-
不确认的无连接服务
-
连接服务
-
带确认的无连接服务
不确认的无连接服务是一种数据报形式的服务, 不包含差错控制和流量控制的功能. 因为TCP等上层软件提供了可靠性保证和流量控制功能, 不确认的无连接服务减少了重复提高了效率, 是大多数时候的最佳选择.
连接服务适用于没有上层网络协议支持的简单设备, 它要求设备通过握手建立逻辑连接然后进行通信.它提供了可靠性保证和流量控制功能.
连接方式需要逻辑链路控制软件维护大量的连接数据, 而且通信前需要先耗费时间建立逻辑链路.在自动化控制等场合, 控制主机需要和大量嵌入式控制器进行通信, 而且对通信时效性和可靠性要求较高.
带确认的无连接服务不建立逻辑连接, 但是要求接收方收到数据后发送确认信息.
LLC协议传送的数据被称为协议数据单元(Protocol Data Unit,PDU).
对应于3种工作模式, LLC分为三种操作:
-
1类操作: 使用无编号的PDU实现无确认的无连接服务
-
2类操作: 使用异步平衡方式支持连接方式的LLC服务
-
3类操作: 使用两个无编号的PDU实现带确认的无连接服务
三种操作都采用相同的PDU格式 ,它们都由4个字段组成:
-
目的服务接入点(Destination Service Access Point, DSAP), 7bit
-
源服务接入点(Source Service Access Point, SSAP), 7bit
-
DSAP类型,单地址或组地址, 1bit
-
PDU类型, 命令PDU或响应PDU, 1bit
第1类操作使用无编号(UI)PDU进行通信, 没有差错控制和流量控制的功能.
第2类操作中, 某台设备首先发出SABME PDU请求建立逻辑链接. 目标设备若接受请求则发送无编号的确认(AC)PDU, 否则发送DM PDU拒绝连接.
连接建立后, 所有双方之间的PDU都会拥有一个编号进行排序, 重传和流量控制. 双方随时可以发送断连(DISC)PDU来中止逻辑连接.
第3类操作相对于第1类操作, 增加了无编号(UC)PDU进行接收确认.
网络设备
集线器与网桥
集线器 (HUB)是星形拓扑结构中常见的网络设备, 它通过双绞线和多台设备连接, 来自一台设备的帧会发送到所有其它设备上.
集线器显而易见的问题在于, 每个帧都会被广播,占用了大量信道.
网桥(Bridge)是解决该问题的一个早期尝试, 网桥上有两个端口, 分别连接两个采用相同MAC协议的子网.
网桥内部有两张表存储子网A和B中所有设备的MAC地址. 系统开始运行的时候, 这两张表都是空的.
此时,网桥收到来自A的帧后会将其转发到B,并将该帧的源MAC地址加入到子网A的表格中.
对来自子网B的帧也进行类似处理, 经过一段时间后网桥将获得子网A, B中几乎所有MAC地址.
当一个帧从子网A的某台设备发送到集线器后, 帧被广播到A中其它设备和网桥.
网桥发现目的MAC属于子网A则直接丢弃该帧, 若目的地址属于子网B, 则会发送到B的集线器进行广播.
交换机
现在人们使用第二层交换机(Switch)来代替集线器. 交换机同样使用双绞线与多台设备连接.
交换机内部维护了一个MAC端口映射表, 这个表保存了所有与它连接的设备MAC地址和连接到的端口, 交换机读取帧首部的目的MAC地址并将其发送到对应的端口上.
交换机分为直通式和存储转发式交换机. 直通式交换机直接将帧发送到目标端口,存储转发式交换机则先保存帧完成CRC校验和纠错之后再进行转发.
当帧来自未知的源MAC地址, 交换机就会将这个帧端口和MAC的对应关系添加到映射表中. 若映射表已满则会覆盖最早的数据.
当帧发往未知的MAC地址, 交换机会将该帧广播. 若该帧的目标确实是网络中的一台设备, 该设备响应时发出的帧会让交换机了解它的MAC地址.
VLAN是交换机的另一个重要功能, 它将一个交换机下的设备分为多个广播域. 在进行广播的时候仅向同广播域的设备发送.
路由器和第三层交换机
广播会占用大量的网络流量, 路由器可以隔离局域形成多个广播域.
路由器是工作OSI第三层, 即网络层的设备.路由器的核心功能是根据目的IP地址将IP数据包发送到下一跳的路由设备上.
除此之外路由器还具有很强的网络层控制功能, 比如NAT和DHCP等.但是路由器依赖软件决策使用CPU转发, 转发速率远低于交换机.
若设备A要给B发送数据,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段.如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个广播ARP请求,B返回其MAC地址.
上述过程中可能出现大量的ARP广播, 所以需要一种设备根据网段将局域网划分为多个广播域, 减少广播占用的信道.
路由器可以完成这个功能, 但是路由器转发速度过慢, 我们需要结合交换机硬件交换的高速度.
三层交换机是可以读取IP封包, 执行部分路由选择功能的交换机, 拥有部分网络层控制功能和基于硬件的高速转发能力.
不过三层交换机造价相对较高, 通常在大型局域网中使用.
冲突域与广播域
当多台设备连接到同一介质上时,它们可能因为抢夺介质出现冲突的情况, 网络中可能出现介质冲突的范围称为一个冲突域。
由此可见冲突域是一个物理层概念, 桥接器的两个端口将网络分成两个冲突域, 对交换机来说它的每一个端口是一个冲突域。
广播域是广播帧所能到达的范围, 属于数据链路层概念。连接到桥接器上的设备一般处于一个广播域。
交换机上的设备一般处于一个广播域,但是交换机的VLAN技术可以划分出多个广播域。