《计算机网络(英文版·第5版)》 The Medium Access Control Sublayer
网络链路可以分成两大类(传输技术):使用点到点连接和使用广播信道
在任何一个广播网络中,关键的问题是当多方竞争信道的使用权时如何确定谁可以使用信道
广播信道有时候也称为多路访问信道(multiaccess channel)或随机访问信道(random access channel)
用来确定多路访问信道下一个使用者的协议属于数据链路层的一个子层,该层称为介质访问控制子层(MAC, Medium Access Control)
信道分配问题
如何在竞争用户之间分配单个广播信道
- 静态分配
- 动态分配
- 特殊算法
静态信道分配
在多个竞争用户之间分配单个信道的传统做法(电话公司)是把信道容量拆开分给多个用户使用
- 如 FDM(频分多路复用),TDM(时分多路复用,时间槽)
- 如果总共有 个用户,则整个带宽被分成 等份,每个用户获得一份
- 由于每个用户都有各自专用的频段,所以用户之间不会发生干扰
- 当用户数量少且固定不变时,这种分割简单有效
- FM 无线电广播就是一个无线信道的多路复用例子。每个电台获得 FM 波段的一部分使用权,大部分时间用该波段广播自己的信号
- 当发送方的数量非常多而且经常不断变化,或者流量呈现突发性(bursty),FDM 就存在问题
- 如果小于 个用户通信,带宽被浪费
- 如果多于 个用户通信,有些用户的通信会被拒绝
- 假设用户数量维持在 个,这种将单个信道划分成多个静态子信道的做法仍是低效的
- 当有些用户停止通信时,他们的带宽就被浪费了
- 在计算机系统中的数据流量表现出极端的突发性
频分复用
排队理论计算(M/M/1)
- = 发送一帧所需要的平均时延 (秒)
- = 容量 (bps)
- = 随机到达帧的平均到达速率 (帧/秒)
- = 帧的长度均值 (bit/帧)
- = 信道的服务率 (帧/秒)
现在将单个信道分成 个独立的子信道,每个子信道的容量为 bps
- 每个子信道的平均到达率变成
划分信道后单个信道的平均延迟比不分的情况差 倍
动态信道分配的假设
5 个关键假设
- 流量独立(independent traffic)
- 该模型是由 个独立的站(比如计算机、电话)组成的,每个站都有一个程序或者用户产生要传输的帧
- 在长度为 的间隔内,期望产生的帧数是 ,这里 为常数(新帧的到达率)
- 一旦产生一帧,则站就被阻塞,直到该帧被成功发送出去
- 单信道(single channel)
- 所有的通信都用这一个信道
- 所有的站可以在该信道上传输数据,也可以从该信道接收数据
- 所有站的能力都相同,尽管协议可能为站分配不同的角色(比如优先级)
- 冲突可观察(observable collision)
- 如果两帧同时传输,则它们在时间上就重叠,由此产生的信号是混乱的,这种情况称为冲突(collision)
- 所有的站都能够检测到冲突事件的发生
- 冲突的帧必须在以后再次被发送
- 除了因冲突而产生的错误外,不会再有其他的错误
- 时间连续或分槽(continuous or slotted time)
- 时间可以假设是连续的,即在任何时刻都可以开始传输帧
- 另一种选择是把时间分槽或者分成离散的间隔(时间槽 time slot)
- 帧的传输只能从每个时间槽的起始点开始
- 一个时间槽可能包含 0、1 或者多个帧,分别对应于空闲的时间槽、一次成功发送,一次冲突
- 载波侦听或不听(carrier sense or no carrier sense)
- 有了载波侦听的假设,一个站在试图用信道之前就能知道该信道当前是否正被使用
- 如果信道侦听结果是忙,则没有一个站会再去试图使用该信道
- 如果没有载波侦听,站就无法在使用信道之前侦听信道,它们只能盲目地传输,以后再判断这次传输是否成功
- 有了载波侦听的假设,一个站在试图用信道之前就能知道该信道当前是否正被使用
最后三个假设依赖于该系统的工程
- 流量独立意味着帧的到达是独立的,实际上是突发性的
- 单信道的假设是该模型的核心
- 冲突假设是最基本的
- 对时间给出两种不同的假设的理由在于时间槽可用来改善协议性能
- 一个网络可能具有载波侦听功能
多路访问协议
当站有数据包要传送的时候
- 以全信道速率 来传送
- 站之间无事先协商
两个或更多的站试图传送
- 产生冲突
随机访问 MAC 协议规定
- 如何检测冲突
- 如何从冲突中恢复过来(例如,通过延迟重传)
ALOHA
纯 ALOHA (pure) 时间连续
基本思想
- 当用户有数据需要发送时就传输
- 冲突的帧将被损坏
- 发送方能够知道帧是否损坏
- 发送方等待一段随机的时间,然后再次发送该帧
竞争(contention)系统
- 系统中多个用户共享一个信道的方法会导致冲突
ALOHA 系统中帧的框架结构
- 所有帧具有同样的长度
- 对于 ALOHA 系统,采用统一长度的帧比长度可变的帧更能达到最大吞吐量
- 只要两个帧在相同时间试图占用信道,冲突就会发生,并且两帧都会损坏
- 如果新帧的第一位与几乎快传完的前一帧的最后一位重叠,则这两帧都会损坏(具有不正确的校验和),稍后都必须被重传
易受冲突周期
纯 ALOHA 的效率
- 用帧时(frame time)来表示传输一个标准的、固定长度的帧所需要的时间(即帧长度/比特率)
分槽 ALOHA
假设
- 所有的帧大小相同
- 时间被分成相同大小的时间槽,每个时间槽内发送1帧
- 站只在时间槽的开始时刻传输帧
- 站是同步的
- 如果 2 个或更多的站在同一个时间槽内传输,所有站都能检测到冲突
操作
- 当站产生了新帧,它将在下一个时间槽传输
- 没有冲突,站可以在下一个时间槽发送新帧
- 发生冲突,站在以后的时间槽内以概率 重传该帧,直到成功
冲突
- 阴影表示碰撞
优点和缺点
- 优点
- 每个活跃的站可以以全信道速率连续传送
- 高度分散:只有站之间的时间槽需要同步
- 缺点
- 冲突,浪费时间槽
- 空闲时间槽
- 站可能没法在少于发送时间槽的时间内检测到冲突
信道利用率
吞吐量与负载
- 18%
- 37% = 1/e
载波侦听多路访问协议
载波侦听协议(carrier sense protocol)
- 站监听是否存在载波(即是否有传输),并据此采取相应的动作
- 当一个站监听到除了它发送的信息以外的信息,说明产生了冲突
坚持和非坚持 CSMA
1-坚持 CSMA
- 当一个站有数据要发送时,它首先侦听信道,确定当时是否有其他站正在传输数据
- 如果信道空闲,它就发送数据
- 如果信道忙,它就等待直到信道变成空闲,然后发送一帧
- 如果发生冲突,该站等待一段随机时间,然后再重复上述过程
1-坚持:当站发现信道空闲时,它传输数据的概率为 1
如果两个站在第三个站的发送过程中准备好了拟发送的数据,它俩都会礼貌等待直到当前传输结束;然后双方确定同时开始传输,发生冲突
信号的传播延迟对冲突有着重大影响
- 在某个站开始发送后,另一个站也刚好做好发送的准备并侦听信道
- 如果第一个站的信号没能到达第二个站,后者侦听到信道是空闲的,因而也开始发送,由此导致了冲突
- 这个时机取决于信道上合适的帧数,或信道的带宽延迟积(bandwith-delay product)
- 如果信道只能够容纳帧的很小一部分(大多数局域网),由于信号的传播延迟小,冲突发生的机会就小
- 带宽延迟积越大,这种影响就变得越加重要,因而协议的性能越差
非坚持 CSMA
- 站在发送数据之前要先侦听信道
- 如果没有其他站在发送数据,则该站自己开始发送数据
- 如果信道当前正在使用中,则该站并不持续对信道进行监听(以便传输结束后立即抓住机会发送数据)
- 它会等待一段随机时间,然后重复上述算法
- 因此该算法将有更好的信道利用率,但比 1-坚持 CSMA 有更大的延迟
p-坚持 CSMA
- 适用于分时间槽的信道
- 当一个站准备好要发送的数据时,它就侦听信道
- 如果信道是空闲的,则它按照概率 发送数据,以概率 将发送推迟到下一个时间槽
- 如果下一个时间槽也是空闲的,还是那样
- 整个过程一直重复,直到帧被发送出去,或者另一个站开始发送数据
- 当另一个站开始发送数据,那么按照冲突发生时的处理过程:等待一段随机时间,然后重新开始整个过程
- 如果该站刚开始时就侦听到信道为忙,则它等到下一个时间槽,然后再应用上面的算法
信道使用率与负载比较
带冲突检测的 CSMA(CSMA/CD, CSMA with Collision Detection)
另一个改进是每个站快速检测到发生冲突后立即停止传输帧(而不是继续完成传输)
- 节省时间和带宽
- 这种协议称为带冲突检测的 CSMA(CSMA/CD, CSMA with Collision Detection),它是经典以太局域网的基础
冲突检测是一个模拟过程,站的硬件在传输时必须侦听信道。如果它读回的信号不同于它放到信道上的信号,则它就知道发生了冲突(碰撞)
概念模型
- 竞争期、传输期、空闲期(所有站都静止)
在标记为 点,一个站已经完成了帧的传送,其他需要发送帧的站现在可以试图发送
- 如果有两个或多个站同时进行传送,冲突就会发生
- 如果一个站检测到冲突,则它立即终止自己的传送,等待一段随机时间,然后再重新尝试传送
CSMA/CD 竞争间隙
- 一个站需要多长时间才能意识到发生冲突(检测冲突的最小时间)
- 到达最远站的时间的两倍
- 只有在这段时间内没有检测到冲突,则站就可以认为自己抓住了信道
CSMA/CD 和分槽 ALOHA 的区别在于,只有一个站能用来传输的时间槽(即信道被抓住了)后面紧跟的那些时间槽被用来传输该帧的其余部分。如果帧时相比传播时间长很多,这种差异将大大提高协议的性能
可靠性
- 没有 MAC 子层协议保证可靠的传输
- 即使在没有冲突的情况下,由于各种原因(例如,缺少缓冲区空间或错过中断),接收方可能没有正确地拷贝帧
以太网
IEEE 802
IEEE 802.3
以太网流行的原因(主导的LAN技术)
- 便宜
- 第一种广泛使用的LAN技术
- 比令牌 LAN 和 ATM 更简单、便宜
- 速度高达 10, 100, 1000, 10000 Mbps
两种以太网
经典以太网
- 解决了多路访问问题
- 3~10 Mbps
交换式以太网
- 使用了一种称为交换机的设备连接不同的计算机
- 100、1000、10000 Mbps
- 实际上,现在使用的只有交换式以太网
经典以太网
经典以太网物理层
经典以太网架构
以太网的每个版本都有电缆的最大长度限制(即无需放大的长度),这个范围内的信号可以正常传播,超过这个范围信号将无法传播。可以用中继器把多条电缆连接起来
电缆
- 粗以太网(thick Ethernet)
- 细以太网(thin Ethernet)
- 双绞线
- 光纤
10Base5 意味着它以 10 Mbps 的速度运行,使用基带信号并可支持长达 500 米的段
中继器(repeater)
- 中继器是一个物理层设备,它能接收、放大(即再生)并在两个方向上重发信号
- 至于软件方面,一系列由中继器连接起来的电缆段与一根单独的电缆并没有什么不同(除了由中继器引入的少量延迟外)
- 以太网可以包含多个电缆段和多个中继器,但是不允许任意两个收发器之间的距离超过 2.5 千米,并且任意两个收发器之间经过的中继器不能超过 4 个
经典以太网 MAC 子层协议
DIX 标准(DIX standard)
- DEC、Intel(因特尔)、Xerox(施乐)在 1987 年制定的 10 Mbps 以太网标准
IEEE 802.3
- DIX 做少许修订后,1983 年成为 IEEE 802.3 标准
以太网和 IEEE 802 封装
- 主机要求 RFC1122
连接到 10 Mbps 以太网电缆的每个 Internet 主机
- 必须能够使用 RFC-894 封装发送和接收数据包
- 应该能够接受 RFC-894 数据包混合的 RFC-1042
- 可以使用 RFC-1042 封装发送数据包
以太网帧结构
8 bytes 前导码(preamble)
- 每个字节包含比特模式
10101010
(除了最后一个字节的最后2位为11) - 最后一个字节称为 802.3 的帧起始界定符(SOF, Start of Frame)
- 比特模式是由曼彻斯特编码产生的 10 MHz 方波,每个波 6.4 微秒,以便接收方的时钟与发送方同步
- 最后两个 1 告诉接收方即将开始一个帧
6 bytes 目标地址(destination, MAC address)
- 如果第一位为 0,则表示是一个普通地址
- 如果第一位为 1,则表示是一个组地址
- 组地址允许多个站同时监听一个地址
- 当某个帧被发送到一个组地址,该组中的所有站都接收它
- 往一组地址的发送行为称为组播(multicasting)
- 全 1 组成的特殊地址保留用作广播(broadcasting)
- 被网络上的所有站接收
- 组播是更多的选择,但涉及组管理;广播不区分站,不需要任何管理机制
6 bytes 源地址(source, MAC address)
- 具有全球唯一性,由 IEEE 统一分配
- 地址段的前 3 个字节用作该站所在的组织唯一标识符(OUI, Organizationally Unique Identifer)
- 由IEEE分配,指明了网络设备制造商
- 制造商获得一块 的地址
- 地址字段的最后 3 个字节由制造商负责分配,并在设备出厂之前把完整的地址用程序编入 NIC
2 bytes 类型(Type)/ 长度(Length)
- 以太网使用类型字段表示帧内包含了什么
- 同一时间在同一台机器上使用了多种网络协议,当一个以太帧到达接收方时,操作系统需要知道应该调用哪个网络层协议来处理帧携带的数据包
- 类型字段指定了把帧送给那个进程处理
0x0800
的类型代码意味着帧内包含一个 IPv4 的数据包
- IEEE 802.3 以其智慧决定该字段携带帧的长度
- 以太网的长度必须由其内部携带的数据来确定
- 违反分层
- 由数据包内的另一个逻辑链路控制(LLC, Logical Link Control)协议头来处理
- 使用 8 个字节来传达 2 个字节的协议类型信息
- 以太网的长度必须由其内部携带的数据来确定
0~1500 bytes 数据(data)
- 最多可包含 1500 个字节
- 最小帧长限制
- 当一个收发器检测到冲突时,它会截断当前的帧,这意味着冲突帧中已经送出的位将会出现在电缆上
- 为了容易区分有效帧和垃圾数据,以太网要求有效帧必须至少 64 字节长
- 从目标地址算起直到校验和,包括这两个字段
- 如果帧的数据部分少于 46 个字节,则使用填充(pad)字段来填充该帧
0~46 bytes 填充(pad)
- 填充保证传输的时间足够长,因此当第一个比特到达目的地的时候它仍在传输。当突发噪声回到发送方时传送过程仍在进行
4 bytes 校验和(checksum)
- CRC 是差错检测码,用来确定接收到的帧比特是否正确
- 只提供检错功能,如果检测到一个错误,则丢弃帧
以太网II 的类型字段
- 任何值小于等于
0x600 = 1536
可解释为长度字段,任何大于0x600
可解释为类型字段
MAC地址
以太网II 帧中的 TCP/IP 包
限制最小帧长的另一个理由是避免出现这样的情况:
- 当一个短帧还没有到达电缆远端的发送方,该帧的传送就已经结束
- 而在电缆的远端,该帧可能与另一帧发生冲突
例子
- 对于一个最大长度为 2500 米,具有 4 个中继器的 10 Mbps LAN,在最差情况下,往返一次的时间大约是 50 微秒(其中包括了通过 4 个中继器所需要的时间)
- 因此,允许的最小帧长必须至少需要这么长的时间来传输
- 以 10 Mbps 的速率,发送一位需要 100 纳秒,所以 500 位是保证可以工作的最小帧长
- 考虑到加上安全余量,该值被增加到 512 位,或者 64 字节
二进制指数后退的 CSMA/CA
经典以太网使用 1-坚持 CSMA/CD 算法
- 适配器(adapter)如果检测到其他中继器正在传输,则它不传输。载波侦测(carrier sense)
- 当正在传输的适配器检测到别的适配器正在传输,它就终止传输。冲突检测(collision detection)
- 在尝试重传前,适配器随机等待一段时间。随机访问(random access)
- 当站有帧要发送时需要侦听介质,一旦介质变为空闲便立即发送。在它们发送的同时监测信道上是否有冲突。如果有冲突,则立即停止传输,并发出一个短冲突加强信号,在等待一段随机时间后重发
二进制指数后退算法(binary exponential backoff)
- 适配器获取数据报并创建帧
- 如果适配器检测到信道空闲,它就开始传输帧;如果检测到信道繁忙,则等待信道空闲再发送
- 如果适配器在没有检测到其他传输的情况下传输完整个帧,则适配器对帧的操作就结束了
- 如果适配器在传输过程中检测到另一个传输,则终止(abort)并发送阻塞(jam)信号(48bit)
- 终止后,适配器进入指数后退:在第 m 次冲突后,适配器从 中随机选择一个 ,然后等待 bit 的时间再返回到步骤 2
实际情况
- 第一次冲突发生后,每个站随机等待 0 个或 1 个时间槽,之后再重试发送,如果两个站冲突之后选择了同一个随机数,那么它们将再次冲突。在第二次冲突后,每个站随机选择 0、1、2、3,然后等待这么多个时间槽。如果第三次冲突又发生了,则下一次等待的时间槽数从 之间随机选择
- 到达 10 次冲突后,随机数的选择区间被固定在最大值 1023();在 16 次冲突之后,控制器放弃努力,并给计算机返回一个失败报告
- 时间槽是由最坏的情况决定的。500 m, 4 中继器 = 512 bit times = 51.2 µsec
- 随着网络速度的提高,最小帧长必须增加或最大电缆长度必须相应减小
能确保两种情况
- 如果只有少量站发生冲突,则它可能确保较低的延迟
- 当许多站发生冲突时,它也可以保证在一个相对合理的时间间隔内解决冲突
- 将延迟后退的步子截断在 1023 可避免延迟增长的太大
如果没有发生碰撞,发送方就假设该帧可能被成功传递了
无论是 CSMA/CD 还是以太网都不提供确认
适用于错误率很低的有线电缆和光纤信道
以太网性能
IEEE 802 标准性能
- 帧的长度(frame length)
- 网络带宽(network bandwidth)
- 电缆长度(cable length)
- 信号传播速度(speed of signal propagation)
- 每个帧e个竞争时间槽(contention slot)的最优(optimal)情形
- 信道效率(channel efficiency) =
在给定帧长度的情况下,增加网络带宽(B)或距离(L)将会降低网络效率
- 人们总是希望在长距离上拥有高带宽,而用这种方式实现的以太网可能并不是这些应用的最佳系统,所以接下来看交换式以太网
在往返时间为 51.2 µsec,10 Mbps 的数据速率下,信道效率与就绪站数之间的关系
- 对于 64 bytes 的时间槽时间,64 字节的帧并不是最有效的
- 当帧长度为 1024 字节,每个竞争间隔趋近于 e 个 64 字节时间槽时,竞争期为 174 字节长,效率为 85%
交换式以太网
- (a)每个站都有一条专用电线连接到一个中央集线器。集线器只是简单地连接所有线,就像把它们焊在一起
- 双绞线集线器成为以太网的主要形式
- 然而,集线器不能增加容量,因为逻辑上等同于单根电缆的经典以太网
- (b)交换式以太网,核心是一个交换机(switch),交换机包含一块连接所有端口的高速背板
- 每根电缆把交换机或集线器与一台计算机连接
- 具有集线器同样的优点
- 通过简单的插入或拔出电缆就能完成增加或删除一台机器
- 若交换机本身发生了故障,更换整个交换机即可
- 由于交换机只希望每个输入端口是标准以太网帧,就有可能把一部分端口用作集中器。连接到集线器上
交换机内部
- 只把帧输出到该帧想去的端口
- 当交换机端口接收到来自某个站的以太网帧,它就检查该帧的以太网地址,确定该帧前往的目的地端口
- 要求交换机能够知道端口对应哪个地址
- 通常背板的运行速度高达许多个 Gbps,并且使用专用的协议
- 这些交换机专用协议无须标准化,因为它们完全隐藏在交换机内部
- 然后,目标端口在通往目标站的双绞线上传输该帧,没有任何其他端口知道这个帧的存在
冲突域(collision domain)
在集线器中,所有的站都位于通一个冲突域(collision domain),它们必须使用 CSMA/CD 算法来调度各自的传输
在交换机中,每个端口有自己独立的冲突域。冲突不可能发生,因而 CSMA/CD 也就不需要了
- 通常情况下,电缆是全双工的,站和端口可以同时往电缆上发送帧,根本无须担心其他站或者端口
- 如果电缆是半双工的,则站和端口必须以通常的 CSMA/CD 方式竞争传输
交换机的好处
性能优于集线器
- 由于没有冲突,容量的使用更为有效
- 有了交换机可以同时发送多个帧(从不同的站发出)
- 也有安全上的益处
- 大多数 LAN 接口都支持混杂模式(promiscuous mode),这个模式下所有的帧都被发到每台机器,而不只是那些它寻址的机器。每个连接到集线器上的计算机能看到其他所有计算机之间的流量
帧到达交换机端口并穿过交换机背板输出到适当的端口。然而,由于两帧可能在同一时间去往同一个输出端口,交换机必须有缓冲,以便它暂时把输入帧排入队直到帧被传输到输出端口
系统总吞吐量通常可以提高一个数量级,主要取决于端口数目和流量模式
冲突域数量
- 交换机分割了冲突域
- 仍然有一个广播域(交换机不用来创建互联网络,默认情况下不会分割广播域;路由器也可以)
使用 VLAN 交换网络
- 需要路由器来提供 VLAN 间通信或网络互联
快速以太网 802.3u, 1995
快速以太网的基本思想:保留原来的帧格式、接口和过程规则,只是将比特时间从 100 纳秒降低到 10 纳秒
所有的快速以太网系统使用集线器和交换机
100 Base-TX(5 类双绞线)
- 每个站用到两对双绞线,一对用于发送信号到集线器,另一对用于从集线器接收信号
- 可以处理 125 MHz 的时钟速率
- 采用 4B/5B 编码方案(125MHz*4/5=100MHZ)
- 在集线器中半双工(标准CDMA/CD)
- 在交换机中全双工(缓冲和告诉背板交换)
千兆以太网 802.3ab, 1999
与快速以太网一样,千兆以太网使用点到点链路,也支持自动协商(配置autonegotiation)
- (a)最简单的配置,两台计算机直接相连
- (b)用一个交换机或集线器连接多台计算机和额外的交换机或集线器
支持两种不同的操作模式
- 全双工-交换机
- 所有线路都具有缓存
- 不可能存在竞争,不需要 CSMA/CD
- 线缆最大长度由信号强度来决定,而不是突发噪声在最差情况下传回到发送方所需的事件来决定
- 半双工-集线器
- 无法将入境帧缓存
- 使用标准的 CSMA/CD 协议
新特性
- 使得最大线缆长度增加到 200 m(以前 25 m)
- 载波扩充(carrier extension)
- 本质是让硬件在普通的帧后增加一些填充位,将帧的长度扩充到 512 字节
- 帧突发(frame bursting)
- 允许发送方将多个待发送帧级联在一起,一次传输出去
- 既支持铜线也支持光纤
万兆以太网
数据中心,交换局内部;长途高带宽中继线
- 长距离的连接使用光纤,短距离的连接可以使用铜缆或光纤
只支持全双工操作,CSMA/CD 不属于设计,兼容性依然重要,自动协商
以太网回顾
- 简单性和灵活性
- 可靠性
- 廉价
- 容易维护
- TCP/IP 使得以太网容易实现互连,因为 IP 和以太网都是无连接的
- 变化不要求软件也变化
无线局域网*
无线局域网标准
802.11 体系结构和协议栈
802.11 体系结构
- (a)有架构模式,每个客户端与一个接入点(AP, access point)关联
- 几个接入点可以通过分布式系统(distribution system)的有线网络连接在一起,形成一个扩展的 802.11 网络
- (b)自组织(ad hoc)模式,相互关联的计算机
协议栈
- 客户端和 AP 的协议栈相同
- 介质访问控制(MAC, medium access conntrol)子层决定如何分配信道(下一个谁可以发送)
- 逻辑链路控制(LLC, logical link control)子层,隐藏 802 系列协议之间的差异
802.11 物理层
所有的 802.11 技术都使用短程无线电传输信号,通常在 2.4 GHz 或 5 GHz 频段
- 最大优点是无需许可证
频带(Frequency Bands) - ISM
802.11 MAC 子层协议
802.11 试图避免冲突,采用的协议称为带有冲突避免的 CSMA(CSMA/CA, CDMA with Collision Avoidance)
- 在发送帧前侦听信道和检测到冲突后指数后退
- 需要发送帧的站必须以随机后退开始,而且它不等待冲突的发生
和以太网不同的地方
- 早起后退有助于避免冲突。冲突避免在无线传输中非常重要,即使只发生一个冲突因为整个帧都被传输了出去,因此冲突的代价非常大
- 利用确认来推断是否发生冲突,因为冲突无法被检测出来
隐藏(hidden)终端问题 & 暴露(exposed)终端问题
虚拟信道侦听
- 网络分配向量(NAV, Network Allocation Vector),说明这个帧所属的一系列数据将传输多长时间
- 可选的 RTS/CTS 机制使用NAV来防止隐藏终端在同一时间发送:RTS 请求对方允许自己发送一个帧,CTS 作为应答
带有物理侦听和虚拟侦听的 CSMA/CA 是 802.11 协议的核心
802.11 机制
- 可靠性
- 降低传输速率
- 发送短帧,802.11 允许把帧拆分成更小的段(segment),每个段有自己的校验和
- 节省电源
- 节能的基本机制建立在信标帧(beacon frames)基础上
- 电源管理位(power-management),省电模式(power-save mode)
- 自动省电交付(APSD, Automatic Power Save Delivery)
- 节能的基本机制建立在信标帧(beacon frames)基础上
- 服务质量
- 802.11e 帧间间隔
- 传输机会(transmission opportunity)
- DFC 帧间隔(DIFS)
- 短帧间间隔(SIFS)
- 仲裁帧间空间(AIFS)
- 扩展帧间间隔(EIFS)
802.11 帧结构
802.11 标准定义了空中三种不同类型的帧:数据帧、控制帧、管理帧
服务
- 关联(association):连接到 AP
- 重新关联(reassociation):改变首选 AP
- 分发(distribution):决定如何路由帧
- 集成(integration):处理协议转换
- 数据传送(data delivery)
- 隐私(privacy):管理加密和解密 ,WPA2 基于 AES
- QoS 流量调度(QoS traffic scheduling):处理不同优先级
- 管理频谱:发射功率控制(transmit power control)& 动态频率选择(dynamic frequency selection)
宽带无线*
802.16 与 802.11 和 3G 的比较
802.16 体系结构和协议栈
802.16 物理层
802.16 MAC 子层协议
802.16 帧结构
蓝牙*
蓝牙体系结构
蓝牙协议栈
蓝牙无线电层
蓝牙链路层
蓝牙帧结构
RFID —— 无线频射识别*
EPC Gen 2 体系结构
EPC Gen 2 物理层
EPC Gen 2 标签标识层
标签标识消息格式
数据链路层交换
网桥和虚拟网桥协议
用网桥来连接局域网,组织成更大的局域网
交换机(switch)是网桥(bridge)的现代名称
- 工作在数据链路层
- 通过检查数据链路层地址来转发帧
- 不审查被转发帧的有效载荷字段
- 可以处理任何类型的数据包:IPv4, IPv6, ATM, AppleTalk, …
集线器或中继器:只是将电信号放大
路由器
- 工作在网络层
- 检查数据包的地址,并基于这些地址路由数据包
- 只能以预先设计好的协议工作
网桥的使用
使用网桥的理由
- 多个不同的局域网需要交互
- 分散在多个地方的局域网需要互连(更便宜的解决方案)
- 将单个局域网划分成小局域网以减少负载
- 将局域网划分为长距离段(长往返延迟)
- 提供可靠性(来自出错节点的垃圾帧)
- 提供安全(防止混杂模式)
透明网桥
- 不需要更改硬件
- 不需要更改软件
- 不需要设置交换机地址
- 不需要下载路由表或参数
- 无状态(或尽可能无状态),不影响原有状态
创建透明网桥的两种算法
- 后向学习算法(backward learning)
- 生成树算法(spanning tree)
学习网桥
两个局域网桥接在一起的拓扑结构分两种情况
-
(a)两个多点局域网
- 为了桥接多点局域网,网桥的加入犹如在每个多点局域网上加了一个新站
-
(b)局域网用点到点电缆连接在一起,包括一个集线器
- 为了桥接点到点局域网,要么集线器连到网桥,或者最好换成网桥以便提高性能
- 不同种类的线缆都可以附接到一个网桥上
- 连接网桥 B1 和 B2 的线缆可能是长距离光前连接
- 连接网桥和栈的线缆可能是短距离双绞线
-
网桥是站和集线器都能与之相连的设备
-
所有附在网桥统一端口的站都属于通一个冲突域,该冲突域和其他端口的冲突域不同
-
如果存在多个站,例如传统的以太网、集线器或半双工链路,那么帧的发送需要用到 CSMA/CD 协议
路由过程
取决于入境帧的到达端口和目标地址
- 如果目标地址的端口和源端口相同,则丢弃该帧
- 如果目标地址的端口和源端口不同,则将该帧转发到目标端口
- 如果目标地址的端口未知,则使用泛洪法,将帧发送到所有的端口,除了它入境的端口
后向学习算法
建立一个大的哈希表
- 初始情况下,所有的哈希表都是空的,因此使用泛洪将帧发送出去
- 通过检查源地址,网桥学习到局域网中哪些机器是可达的,并在哈希表中构造一项
- 网桥中有一个进程定期扫描哈希表,并且将那些时间值在几分钟以前的表项都清除掉
- 网桥记录帧的到达时间
网桥设计
两种基本架构
- 直通式交换(cut-through switching)/ 虫孔路由(wormhole routing)
- 一旦入境线路输入帧的目的地址字段就可以马上转发(在完整接收一帧之前就开始了转发)
- 存储-转发交换(store-and-forward switching)
- 在转发前接收并分析整个包
网桥上的协议处理
- 一个数据包来自一个更高的层次,下降进入以太网 MAC 层。它获取一个以太网头(还有一个尾)组成传输单元。该单元被传到物理层,通过电缆传播,然后被网桥接收
- 在网桥中,帧从物理层网上传给以太网的 MAC 层。相比普通站协议栈里的以太网 MAC 层,网桥的这一层扩展了处理功能
- 它把帧传递到中继(relay)模块,该模块仍属于 MAC 层,网桥的中继功能仅仅使用了以太网的 MAC 头来确定如何处理帧
- 一般情况下,在给定层上中继时可以重写该层的头。VALN 就提供了这样的一个例子
- 在任何情况下,网桥都不能查看帧的内部,以及了解帧携带的是否是一个 IP 数据
- 一个具有 个端口的网桥将有 个 MAC 和物理层实例
生成树网桥
为了提高可靠性,网桥之间可使用冗余链路
在一对网桥之间并行设置了两条链路。这种设计可确保一条链路宕掉后,网络不会被分成两组计算机,使它们之间无法通信
- 问题:生成了拓扑环路
控制网桥和交换机互连的规则
- 网桥 / 交换机 / 集线器 LAN 必须形成一棵树,而不是一个环
- 这意味任何两台主机之间只能有一条路径
- 如果存在多条平行路径,则会形成一个环,导致循环中无线循环帧
- 为了防止这种情况发生 IEEE(IEEE 802.1D)定义了生成树算法(STA),该算法可自动检测环路并禁用其中一条并行路径
- 虚线表示不属于生成树的链路
生成树算法(STA ,Spanning Tree Algorithm)
- 首先选择一个网桥作为生成树的根(具有最低标识符(MAC address)的网桥)
- 每个网桥确定从根网桥到其每个端口的路径成本(根路径成本)。成本由段的数量和这些段的比特率确定
- 确定根端口
- 对于网桥,它的哪个端口具有最低的根路径成本
- 确定指定网桥
- 将处理特定 LAN 请求的网桥(即使该 LAN 可能连接了多个网桥)。根据从网段到根网桥的最小路径成本进行选择
- 树包括每个局域网,但不一定是每个桥
- 继续检查拓扑结构的变化,更新生成树
中继器,集线器,网桥,交换机,路由,网关
之所以存在不同层的问题,是因为不同的设备使用不同的信息来决定如何交换
物理层
中继器
- 中继器是模拟设备,主要用来处理自己所连的线缆上的信号。在一个线缆上出现的信号被清理、放大,然后再被放到另一个线缆上
- 中继器并不理解帧、数据包、帧头,它们只知道把比特编码成电压的符号
集线器
- 集线器有多条输入线路,它将这些输入线路连接在一起。从任何一条线路上到达的帧都被发送到所有其他的线路上。如果两帧同时到达,它们将会冲突。
- 连接到同一个集线器上的所有线路必须以同样的速度运行
- 集线器与中继器不同,它们(通常)不会放大入境信号,并且可以有多条输入线路
- 但是两者差别并不大。与中继器一样,集线器也是物理层设备,因而它不会检查链路层地址,也不以任何方式使用该地址
数据链路层
网桥
- 网桥连接两个或多个局域网
- 跟集线器一样,一个现代网桥有多个端口,通常具有 4~48 条某种类型的输入线
- 与集线器不同的是网桥的每个端口被隔离成它自己一个冲突域;如果端口是全双工的点到点线路,则需要用到 CDMA/CD 算法
- 当到达一帧时,网桥从帧头提取出帧的目的地址,并用该地址查询一张应该把帧发往哪里去的表。对于以太网,地址是 48 位的目标地址。
- 网桥只把帧输出到所需要的端口,在同一时间可以转发多个帧
- 网桥比集线器提供了更好的性能,隔离网桥端口还意味着输入线路可以以不同的速度运行,甚至可以是不同的网络类型。
- 从一端口接收一帧并从另一个不同端口发送出去,需要网桥内部进行缓冲。如果帧的速度大于网桥的重发速度,网桥就可能耗尽缓冲空间从而开始不得不丢弃帧
- 网桥最初是被用来连接不同种类的局域网,由于不同局域网之间的差异,这方面的工作总是做的不好,反正就是不好
局域网之间的差异还可以体现在另外两个方面
- 安全性
- 某些局域网使用了链路层的加密机制,例如 802.11 ;有的局域网却不具备任何安全性,例如以太网
- 服务质量
- 某些局域网具备服务质量特性,例如 802.11 ;而有的却没有服务质量的概念,例如以太网
交换机是现代网桥的另一个称呼,差异更多体现在市场上而不是技术上
网络层
路由器
- 当一个数据包进入到路由器时,帧头和帧尾被剥掉,帧的有效载荷字段中的数据包被传给路由软件
- 路由软件利用数据包的头信息来选择输出线路
- 对于一个 IP 数据包,包头将包含一个 32 位(IPv4)或者 128 位(IPv6)地址,而不是 48 位的 IEEE 802 地址
- 路由软件看不到帧地址,甚至不知道数据包来自哪个 LAN 或哪条点到点线路
传输层
传输网关,它们将两台使用了不同面向连接传输协议的计算机连接起来
- TCP/IP 协议和 SCTP
- 传输网关将数据包从一个连接复制到另一个连接上,并且根据需要对数据包重新进行格式化
应用层
应用网关能理解数据的格式和内容,并且可以将消息从一种格式转换为另一种格式
交换机和集线器的区别
集线器/中继器将帧转发到所有接口(端口),从而使帧到达所有连接的设备,即使该帧可能仅用于连接到特定端口的系统
交换机仅将帧转发到所需的接口,通过映射MAC地址到端口。因此交换机可以减少其他LAN网段上的数据包数量,提高性能和安全性
交换机和路由器的区别
虽然大多数交换机都在 OSI 参考模型的数据链路层(第 2 层)上运行,但有些交换机还具有路由器的功能,并且也在网络层(第 3 层)工作。事实上,第3层交换机与路由器非常相似。
路由器和第3层交换机的根本区别在于,交换机具有优化的硬件,可以像第 2 层交换机一样快速传递数据,但它们就像路由器一样,决定如何在第 3 层传输流量
在局域网环境中,第 3 层交换机通常比路由器更快,因为它建立在交换硬件上
虚拟局域网(VALN)
大楼使用了集线器和交换机的集中式布线
谁连在哪一个 LAN 真的很重要吗?
- 简单的回答是肯定的
- 将 LAN 上的用户分成适当的组,以便反映出用户的组织结构,而不是大楼的物理布局结构
- 安全性:公共访问
- 负载
- 广播流量:广播风暴(broadcast)
- ARP 广播 IP 获得 MAC 地址
VLAN
- 范围有限制的 LAN
- 将逻辑拓扑从物理拓扑中分离出来
- 用软件方式对大楼重新进行布线
- 基于 VLAN 感知交换机(VLAN-aware)
为了使 VLAN 正常运行,网桥必须建立配置表
- 这些配置表明了通过哪些端口可以访问到那些 VLAN
- 每个端口都分配了 VLAN 颜色
- 如果一个端口上的所有计算机都属于同一个 LAN,则适用
- 为每个 MAC 地址分配了 VLAN 颜色
- 列出与其连接的每台计算机的 MAC 地址以及计算机所在的 LAN
- 每个第 3 层协议或 IP 地址分配了 VLAN 颜色
- 灵活但违反了层的依赖性
- B1 将来自灰色(G)端口的帧泛洪给所有灰色端口,以及 B2,B2 将发送给标记为 G 的端口
- 一个端口可以标记为多种VLAN颜色
IEEE 802.1Q 标准
为了实现 VLAN,需要知道帧的 VLAN 颜色(而不是机器的 VLAN 颜色)
- 解决问题的关键是要认识到实际使用 VLAN 字段的只是网桥和交换机
- 它们只出现在连接网桥的线路上,而不是连接到最终站的线路上
- 所以网桥必须能感知 VLAN
- 因为一些计算机(和交换机)无法感知 VLAN,因此第一个 VLAN 感知的网桥在帧上添加一个 VLAN 字段,路径上的最后一个网桥把添加的 VLAN 字段删除
VLAN 中继(Trunking)
- 每个逻辑 VLAN 就像一个单独的物理网桥
- VLAN 可以跨越多个交换机
- 中继为多个 VLAN 传送流量
- 中继使用特殊封装来区分不同的 VLAN
IEEE 802.1Q 帧
唯一的变化是加入了一对 2 字节字段
- 第一个 2 字节是 VLAN 协议标识符(VLAN protocol ID),它的值是
0x8100
- 第二个 2 字节包含三个字字段,最主要的是 VLAN 标识符(identifier)
当一个标记帧到达一个 VLAN 感知交换机,该交换机利用 VLAN 标识符作为索引,在一张表中查找要去哪些端口
- 自动配置表(动态建立)的方法
- IP 子网
- MAC 地址,VMPS(VLAN 成员策略服务器)
- 用户认证,802.1x,端口访问控制