参考教程:3.6.1 媒体接入控制的基本概念_哔哩哔哩_bilibili
(1)下图所示是一根同轴电缆,有多台主机连接到这根同轴电缆上,它们共享这根传输媒体,形成了一个总线型的局域网。各主机竞争使用总线,随机地在信道上发送数据,如果恰巧有两个或更多的站点在同一时刻发送数据,那么信号在共享媒体上就会产生碰撞,即发生了冲突,使得这些站点的发送全部失败。例如主机C和主机D同时使用总线来发送数据,这必然会产生所发送信号的碰撞。
(2)共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)。
(1)静态划分信道是媒体接入控制技术的一种。
①静态划分信道就是预先固定分配好信道,这类方法非常不灵活,对于突发性数据传输信道利用率会很低,通常在无线网络的物理层中使用,而不是在数据链路层中使用。
②静态划分信道可分为频分多址、时分多址以及码分多址。
(2)动态接入控制也是媒体接入控制技术的一种。
①动态接入控制可分为受控接入和随机接入。
②受控接入又可分为集中控制和分散控制:
[1]在集中控制的多点轮询协议中,有一个主站以循环方式轮询每个站点有无数据发送,只有被轮询到的站点才能发送数据。集中控制的最大缺点是存在单点故障问题。
[2]在分散控制的令牌传递协议中,各站点是平等的,共连接成一个环形网络。令牌(一个特殊的控制帧)沿环逐站传递,接收到令牌的站点才有权发送数据,并在发送完数据后将令牌传递给下一个站点。(采用令牌协议的典型网络有IEEE 802.5令牌环网、IEEE 802.4令牌总线网、光纤分布式数据接口FDDI)
③随机接入的特点是所有站点通过竞争,随机地在信道上发送数据,如果恰巧有两个或更多的站点在同一时刻发送数据,则信号在共享媒体上就要产生碰撞(即发生了冲突),使得这些站点的发送都失败。因此,这类协议要解决的关健问题是如何尽量避免冲突及在发生冲突后如何尽快恢复通信。著名的共享式以太网采用的就是随机接入。
(3)随着技术的发展、交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。
(1)信道复用:
①“信道复用”就是通过一条物理线路同时传输多路用户的信号,当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。
②如下图所示,如果在发送端使用复用器,在接收端再使用分用器,那么三对用户就可以共享同一条物理线路进行通信。
③常见的信道复用技术有频分复用FDM、时分复用TDM、波分复用WDM和码分复用CDM。
(2)频分复用FDM:
①如下图所示,将传输线路的频带资源划分成多个子频带,形成多个子信道,各子信道之间需要留出隔离频带,以免造成子信道间的干扰。
②当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上,接收端由相应的分用器通过滤波将各路信号分开,将合成的复用信号恢复成原始的多路信号。
③很显然,频分复用的所有用户同时占用不同的频带资源并行通信。
(3)时分复用TDM:
①如下图所示,横坐标为时间,将时间划分成一个个的时隙,时分复用技术将传输线路的带宽资源按时隙轮流分配给不同的用户,每对用户只在所分配的时隙里使用线路传输数据。
②时分复用技术将时间划分成了一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙,每一个用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度。
③很显然,时分复用的所有用户在不同的时间占用同样的频带宽度。
(4)波分复用WDM:
①波分复用实际上就是光的频分复用,下图所示是8路传输速率均为2.5Gbit/s的光载波,其波长均为1310nm,经光调制后,分别将波长变换到1550~1561.2nm,每个光载波波长相隔1.6nm。
②这8个波长很接近的光载波经过光复用器(或称合波器)在同一根光纤中传输,因此,在一根光纤上数据传输的总速率就达到了8×2.5 Gbit/s = 20 Gbit/s。
③光信号传输一段距离后会衰减,因此对于衰减后的光信号需要借助掺铒光纤放大器进行放大才能继续传输。目前已经有了很好的掺铒光纤放大器,两个放大器之间的光缆线路长度可达120km,光复用器和光分用器(或称分波器)之间可以放入四个掺铒光纤放大器,这就使得光复用器和光分用器之间的无光电转换距离可达600km。
(5)码分复用CDM:
①码分复用CDM是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA(Code Division Multiple Access),同理,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TDMA(Time Division Multiple Access)。复用与多址的概念目前可简单理解为:
[1]复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分。
[2]多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样)。
[3]某种程度上,FDMA、TDMA、CDMA可以分别看成是FDM、TDM、CDM的应用。
②与FDM和TDM不同,CDM的每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特挑选的不同码型,因此各用户之间不会造成干扰。
③CDM最初是用于军事通信的,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信中。
④在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(Chip),通常m的值是64或128,为了简单起见,在下面的举例中假设m为8。使用CDMA的每一个站被指派一个唯一的m bit码片序列(Chip Sequence)。这种通信方式称为直接序列扩频DSSS。
[1]一个站如果要发送比特1,则发送它自己的m bit码片序列;一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码。
[2]码片序列的挑选原则:分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列;分配给每个站的码片序列必须相互正交(规格化内积为0)。
[3]为了方便,按惯例将码片序列中的0写为-1,将1写为+1。
⑤码分多址的应用:如下图所示,假设A、B、C、D是码分多址系统中的4个站点。
[1]A站发送比特1,也就是发送自己所分配到的码片序列,为了简单起见,使用向量A来表示A站的码片序列;B站发送比特0,也就是发送自己所分配到的码片序列的二进制反码,使用向量B反来表示B站的码片序列的二进制反码;C站没有发送数据。
[2]D站可以接收到A站和B站所发送信号的叠加信号。假设系统中的各站所发送的码片序列都是同步的,接收站D知道其他各站点所特有的码片序列,则接收站D对所接收到的叠加信号可以进行判断:
#1 要判断A站是否发送数据以及所发送的是比特0还是比特1,可将收到的叠加信号的码片向量与A站自身的码片向量进行规格化内积运算,计算结果应该为1。(计算结果为数值1,代表被判断方发送了比特1)
#2 要判断B站是否发送数据以及所发送的是比特0还是比特1,可将收到的叠加信号的码片向量与B站自身的码片向量进行规格化内积运算,计算结果应该为-1。(计算结果为数值-1,代表被判断方发送了比特0)
#3 要判断C站是否发送数据以及所发送的是比特0还是比特1,可将收到的叠加信号的码片向量与C站自身的码片向量进行规格化内积运算,计算结果应该为0。(计算结果为数值0,代表被判断方没有发送数据)
(1)如下图所示,多台主机连接到一根总线上,各主机随机发送帧。当两个或多个主机同时发送帧时,代表帧的信号会产生碰撞;当某个主机正在使用总线发送帧时,另一台主机也要发送帧,这同样也会产生碰撞。很显然,如何协调总线上各主机的工作,尽量避免产生碰撞,是一个必须要解决的重要问题,早期的共享式以太网采用载波监听多址接入/碰撞检测,也就是CSMA/CD协议来解决该问题。
①多址接入的意思是多个主机(也可称为站点或站)连接在一条总线上,竞争使用总线。
②载波监听的意思是每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧:
[1]若检测到总线空闲96比特时间,则发送这个帧。
[2]若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧。
[3]“96比特时间”是发送96比特所耗费的时间,也称为帧间最小间隔,帧间最小间隔的作用是使接收方可以检测出一个帧的结束,同时也使得所有其它站点都能有机会平等竞争信道并发送帧。
③碰撞检测的意思是每一个正在发送帧的站一边发送帧一边检测碰撞,一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次重新发送。
④CSMA/CD协议的工作流程举例:
[1]如下图所示,假设主机C要发送帧,它首先会进行载波监听,检测到总线空闲96比特时间后就可以发送帧了。
[2]假设在主机C使用总线发送帧的过程中,主机B也要发送帧,主机B进行载波监听,发现总线忙,于是主机B持续检测总线,一旦发现总线空闲96比特时间则立即发送帧,一边发送帧一边检测碰撞,只要没检测到碰撞则可继续发送帧的剩余部分。
[3]假设在主机B刚发送帧的一刻,主机C又要发送帧,主机C进行载波监听,发现总线空闲96比特时间后也发送帧(主机B先发送帧,主机C紧跟着在下一刻也发送帧,两个时刻紧凑,所以主机C才会检测不出总先忙),这必然会产生碰撞,在产生碰撞的时刻,主机B和主机C都在边发送帧边检测碰撞,但它们在这时都检测不到碰撞。
[4]紧接着碰撞信号沿总线传播,主机C会比主机B更早检测到碰撞并停止发送(因为产生碰撞的位置离主机C更近),主机C退避一段随机时间后重新再发送之前所发送的帧,当主机B检测到碰撞后也立即停止发送并退避一段随机时间,然后重新再发送之前所发送的帧。
[5]以太网还采取了一种叫“强化碰撞”的措施,当发送帧的站点一旦检测到碰撞,除了立即停止发送帧外,还要再继续发送32比特或48比特的人为干扰信号(Jamming Signal),以便有足够多的碰撞信号使所有站点都能检测出碰撞。
(2)争用期(碰撞窗口):
①如下图所示,主机A和主机D处于总线型以太网的两端,以太网单程端到端的传播时延即记为τ,纵坐标为时间。
[1]假设在时刻0主机A要发送帧,当检测到总线空闲96比特时间后就立即发送帧。
[2]在时刻(τ-δ)主机D也要发送帧,当检测到总线空闲96比特时间后就立即发送帧,不过这时主机D虽然检测到总线空闲,但实际上总线并不空闲,只是主机D检测不出来,所以必然会产生碰撞,发送碰撞的时刻为(τ-δ/2)。
[3]产生碰撞后,碰撞信号会陆续传播到主机D和主机A,主机D检测到碰撞的时刻为τ,主机A检测到碰撞的时刻为(2τ-δ)。
②由上图可知,主机最多经过2τ(即δ→0)的时长就可检测到本次发送是否遭受了碰撞,因此,以太网的端到端往返传播时延2τ就称为争用期或碰撞窗口,发送帧的主机经过争用期这段时间后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
③每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性,这一小段时间是不确定的,它取决于另一个发送帧的主机到本主机的距离,但不会超过总线的端到端往返传播时延,即一个争用期时间。
④显然,在以太网中发送帧的主机越多,端到端往返传播时延越大,发生碰撞的概率就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长。(10Mb/s以太网把争用期定为512比特发送时间,即51.2us,因此其总线长度不能超过5120m,但考虑到其他一些因素,如信号衰减等,以太网规定总线长度不能超过2500m)
(3)最小帧长:
①如下图所示,主机A和主机D处于总线型以太网的两端。
[1]假设主机A正在给主机D发送一个很短的帧,主机A边发送边检测碰撞,主机A很快就将该帧发送完毕,之后主机A不再针对该帧检测碰撞。
[2]在主机A发送帧的传输过程中(此时还未传到主机C这边),主机C也要发送帧,主机C检测到总线空闲96比特时间后就立即发送帧,尽管总线实际上并不空闲,那么这必然会产生碰撞。
[3]主机D最终会收到主机A发送的、并遭遇碰撞的帧,主机D会将该帧丢弃,但对于主机A而言,它并不知道自己已发送完毕的该帧遭遇了碰撞,不会重发该帧。
②很显然,使用CSMA/CD协议的以太网的帧长不能太短,这样在产生碰撞的时候,发送方还未将帧发送完毕,发送方会保持检测针对该帧的碰撞,从而得知刚发的帧遭遇碰撞。
③最小帧长=争用期×数据传输速率。以太网规定最小帧长为64字节,即512个比特,而发送512个比特的时间即为争用期。如果发送方要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。
④以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞。
[1]如果在争用期(共发送64字节)没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞。
[2]如果在争用期内检测到碰撞,就立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。
(4)最大帧长:
①如下图所示,主机A和主机D处于总线型以太网的两端,假设主机A正在给主机D发送一个很长的帧,这会使得主机A长时间占用总线,而总线上的其它主机迟迟拿不到总线的使用权。另外,由于帧很长,还可能导致主机D的接收缓冲区无法装下该帧而产生溢出。因此,以太网的帧长应该有上限。
②例如以太网版本2的MAC帧格式,其数据载荷的最大长度为1500字节,加上首部和尾部,MAC帧的最大长度为1518字节(数据载荷的最小长度不能小于46字节,加上首部和尾部,MAC帧的最小长度为64字节)。
(5)截断二进制指数退避算法(退避时间的计算):
①退避时间=基本退避时间×随机数r,其中基本退避时间的取值为争用期2τ,随机数r是从离散的整数集合中随机选出的一个数,k从重传次数和数值10中取较小者。
②若连续发生多次碰撞,就表明可能有较多的主机参与竞争信道,但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(这也称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。
③当重传达16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告。
(6)信道利用率:
①如下图所示,横坐标为时间,总线上的某个主机可能发生多次碰撞、进行多次退避后,成功发送了一个帧,帧的发送时延记为。在最极端的情况下,源主机在总线的一端,而目的主机在总线的另一端,所以还要经过一个单程端到端的传播时延τ后,总线才能完全进入空闲状态,因此发送一帧所需的平均时间为多个时长为2τ争用期加上一个帧的发送时延再加上一个单程端到端的传播时延τ。
②考虑这种理想情况,各主机发送帧都不会产生碰撞,总线一旦空闲就有某个主机立即发送帧,因此极端情况下的多个时长为2τ争用期就不存在了,发送一帧所占用总线的时间为+τ,帧本身的发送时间为,这样就可得出极限信道利用率的表达式:
③为了提高信道利用率,参数a的值应该尽量小,那么τ的值就应该尽量小,这意味着以太网端到端的距离应受到限制,不应太长,而T0的值应该尽量大,这意味着以太网的帧长应尽量大一些。
(7)帧发送流程:
(8)帧接收流程:
(9)CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中,现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。
(1)在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听,若发现有其他站在发送帧,就推迟发送以免发生碰撞。但是在无线局域网中,不能使用碰撞检测CD,原因如下:
①由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍),如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。
②即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。
(2)802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能。由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收。
(3)802.11的MAC层标准定义了两种不同的媒体接入控制方式:
①分布式协调功能DCF(Distributed Coordination Function):在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式。
②点协调功能PCF(Point Coordination Function):PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。
(4)帧间间隔IFS:
①802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS。
②帧间间隔的长短取决于该站点要发送的帧的类型:
[1]高优先级帧需要等待的时间较短,因此可优先获得发送权。
[2]低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其它站的高优先级帧已发送到信道上,则信道变为忙状态,因而低优先级帧就只能再推迟发送了,这样就减少了发生碰撞的机会。
③常用的两种帧间间隔如下:
[1]短帧间间隔SIFS(28us):是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的顿类型有ACK帧、CTS、由过长的MAC分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
[2]DCF帧间间隔DIFS(128us):它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。
(5)CSMA/CA协议的工作原理:
①如下图所示,有几个无线站点,横坐标为时间。
②假设无线信道是空闲的,源站有数据帧要发送,当源站检测到信道空闲,则在等待帧间间隔DIFS后发送该数据帧,目的站若正确接收到该数据帧,则经过帧间间隔SIFS后向源站发送确认帧ACK。
[1]若源站在规定时间内没有收到确认帧ACK,重传计时器超时后就必须重传该数据帧,直到收到确认为止,或者经过若干次的重传失败后放弃发送。
[2]考虑到可能有其它的站有高优先级的帧要发送,源站需要在检测到信道空闲后还要再等待一段时间DIFS,让高优先级帧先发送。
[3]SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧,在这段时间内,一个站点应当能够从发送方式切换到接收方式,所以目的站在正确接收数据帧后还要等待一段时间SIFS才发送ACK帧。
③在源站和目的站的一次对话过程中,无线信道处于忙状态,其它无线站点如果要发送数据就必须退避,当信道从忙状态转换到空闲状态并经过帧间间隔DIFS后,其它要发送数据的无线站点需要退避一段随机时间后才能发送,这是为了防止多个站点同时发送数据而产生碰撞。
④当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法。以下情况必须使用退避算法:
[1]在发送数据帧之前检测到信道处于忙状态时。
[2]在每一次重传一个数据帧时。
[3]在每一次成功发送后要连续发送下一个帧时(这是为了避免一个站点长时间占用信道)。
(6)退避算法:
①在执行退避算法时,站点为退避计时器设置一个随机的退避时间:
[1]当退避计时器的时间减小到零时,就开始发送数据。
[2]当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。
②在进行第i次退避时,退避时间在时隙编号{0,1,...,22+i-1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间,这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加。
③如下图所示,A、B、C、D、E是5个无线站点,横坐标为时间。
[1]假设A正在占用无线信道发送帧,在A发送帧的过程中,如果B、C、D也要发送帧,它们会进行载波监听,发现信道忙,需要退避,根据退避算法选择出一个随机的退避时间,并在每个时隙对信道进行一次检测。
[2]当检测到信道由忙状态转为空闲状态且经过帧间间隔DIFS后,B、C、D的退避计时器开始倒计时,假设C的退避时间最短,当C的退避计时器到时后,C立即开始发送帧,此时信道由空闲状态转换为忙状态,当B和D检测到信道忙后,就冻结各自剩余的退避时间。
[3]假设在C占用无线信道发送帧的过程中,E也要发送帧,E会进行载波监听,发现信道忙,需要退避,根据退避算法选择出一个随机的退避时间,并在每个时隙对信道进行一次检测。
[4]当检测到信道由忙状态转为空闲状态且经过帧间间隔DIFS后,E的退避计时器开始倒计时,同时B和D的退避计时器重新开始从上次冻结的退避剩余时间开始倒计时。
[5]D的退避计时器会首先到时,D立即开始发送帧,此时信道由空闲状态转换为忙状态,当B和E检测到信道忙后,就冻结各自剩余的退避时间。
[6]D发送完帧后,B和E检测到信道由忙状态转为空闲状态,经过帧间间隔DIFS后,B和E的退避计时器重新开始从上次冻结的退避剩余时间开始倒计时。
[7]E的退避计时器会首先到时,E立即开始发送帧,此时信道由空闲状态转换为忙状态,当B检测到信道忙后,就冻结剩余的退避时间。
[8]E发送完帧后,B检测到信道由忙状态转为空闲状态,经过帧间间隔DIFS后,B的退避计时器重新开始从上次冻结的退避剩余时间开始倒计时。
[9]B的退避计时器到时后,E立即开始发送帧,此时信道由空闲状态转换为忙状态。
[10]若B发送完这一帧后还有帧要发送,则在检测到信道空闲且经过帧间间隔DIFS后,还必须再退避一段随机时间后才能发送。
(7)信道预约和虚拟载波监听:
①为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。
[1]当源站检测到信道空闲且经过帧间间隔DIFS后,源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To end),它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间。
[2]若目的站正确收到源站发来的RTS帧且媒体空闲,经过帧间间隔SIFS后就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
[3]源站收到CTS帧后,再等待一段时间SIFS后就可发送其数据帧。
[4]若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
②除源站和目的站以外的其它各站,在收到CTS帧(或数据帧)后就推迟接入到无线局域网中,这样就保证了源站和目的站之间的通信不会受到其它站的干扰。
③如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
④由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小,而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。802.11标准规定了3种情况供用户选择:
[1]使用RTS帧和CTS帧。
[2]不使用RTS帧和CTS帧。
[3]只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧。
⑤除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。
(1)MAC地址是以太网的MAC子层所使用的地址。从网络体系结构的角度来看,MAC地址属于数据链路层的范畴。
(2)如下图所示,两台主机通过一条链路通信。很显然它们不需要使用地址就可以进行通信,因为连接在信道上的主机只有它们两个,换句话说,使用点对点信道的数据链路层不需要使用地址。
(3)如下图所示,多台主机使用共享信道的总线型局域网进行通信,总线上的某台主机给另一台主机发送帧,表示帧的信号通过总线会传送到总线上的其它所有主机。很显然使用广播信道的数据链路层必须使用地址来区分各主机,换句话说,当多个主机连接在同一个广播信道上时,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识。
①在每个主机发送的帧中都必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址。
②如下图所示,主机C要给主机D发送帧,则帧首部中的目的地址字段应填入主机D的MAC地址,而在源地址字段应填入主机C的MAC地址,这样总线上其它各主机收到该帧后,就可以根据帧首部中的目的地址字段的值是否与自己的MAC地址匹配判断是否接收该帧。
(4)MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址。(MAC地址有时也被称为物理地址,但这并不意味着MAC地址属于网络体系结构中的物理层)
(5)一般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址;交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
(6)IEEE 802局域网的MAC地址格式:
①它由48个比特构成,从左至右依次为第一字节到第六字节,前三个字节是组织唯一标识符OUI,生产网络设备的厂商需要向IEEE的注册管理机构申请一个或多个OUI,后三个字节是获得OUI的厂商可自行随意分配的。这种地址标识符称为扩展的唯一标识符EUI,对于48比特的MAC地址,可称为EUI-48。
②MAC地址的标准表示方法是将每4个比特写成一个十六进制的字符,共12个字符,将每两个字符分为一组,共六组,组之间用短线连接。
③MAC地址第一字节的b0位取0时,表示该地址是单播地址;MAC地址第一字节的b0位取1时,表示该地址是多播地址(又称为组播地址)。MAC地址第一字节的b1位取0时,表示该地址是全球管理的;MAC地址第一字节的b1位取1时,表示该地址是本地管理的。
[1]全球管理的单播地址,是厂商生产网络设备时给设备的各网络接口固化的MAC地址。
[2]全球管理的多播地址,是标准网络设备所应支持的多播地址,用于特定功能(例如交换机生成数协议所需要的多播地址)。
[3]本地管理的单播地址,由网络管理员分配,该类型地址会覆盖网络接口的全球管理单播地址,也就是它的优先级更高。
[4]本地管理的多播地址,用于用户对主机的软件配置,以表明该主机属于哪些多播组。(当剩余46个比特全为1时,也就是12个十六进制字符全为F,就是广播地址)
④单播的意思是,一台主机向指定的另一台主机发送帧;多播的意思是,一台主机向指定的多台主机发送帧;广播的意思是,一台主机向其它能收到帧的所有主机发送帧。
⑤对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080),但是鼓励采用EUI-64作为替代。
⑥IEEE 802局域网的MAC地址发送顺序:字节发送顺序为第一字节到第六字节,字节内的比特发送顺序为b0到b7。
(7)单播MCA地址举例:
①下图所示是一个拥有三台主机的总线型以太网,各主机网卡上固化的全球单播MAC地址如图所示。
②假设主机B要给主机C发送单播帧,主机B首先要构建该单播帧,在帧首部的目的地址字段填入主机C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部中的其它字段、数据载荷以及帧尾部,就构成了该单播帧。
③主机B将该单播帧发送出去,主机A和C都会收到该单播帧。主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,于是主机A丢弃该帧;主机C的网卡发现该单播帧的目的MAC地址与自己的MAC地址匹配,于是主机C接收该帧,并将该帧交给其上层处理。
(8)广播MCA地址举例:
①下图所示是一个拥有三台主机的总线型以太网,各主机网卡上固化的全球单播MAC地址如图所示。
②假设主机B要发送一个广播帧,主机B首先要构建该广播帧,在帧首部中的目的地址字段填入广播地址,也就是十六进制的全F,源地址字段填入自己的MAC地址,再加上帧首部中的其它字段、数据载荷以及帧尾部,就构成了该广播帧。
③主机B将该广播帧发送出去,主机A和C都会收到该广播帧,它们会发现该帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,于是它们都会接收该帧,并将该帧交给上层处理。
(9)多播MCA地址举例:
①下图所示是一个拥有四台主机的总线型以太网,各主机网卡上固化的全球单播MAC地址如图所示。
②假设主机B、C、D支持MAC多播,各用户给自己的主机配置的多播组列表如下图所示,可以看到主机B属于两个多播组,主机C也属于两个多播组,而主机D不属于任何多播组。
③假设主机A要发送多播帧给多播地址07-E0-12-F6-2A-D8(将该多播地址的左起第一个字节写成8个比特,可以看到最低比特位是1,这就表明该地址是多播地址),主机A首先要构建该多播帧,在帧首部中的目的地址字段填入该多播地址,源地址字段填入自己的MAC地址,再加上帧首部中的其它字段、数据载荷以及帧尾部,就构成了该多播帧。
④主机A将该多播帧发送出去,主机B、C、D都会收到该多播帧。主机B的发现该单播帧的目的MAC地址在自己的多播组列表中,于是主机B接收该帧,并将该帧交给其上层处理;主机C的发现该单播帧的目的MAC地址在自己的多播组列表中,于是主机C接收该帧,并将该帧交给其上层处理;主机D的发现该单播帧的目的MAC地址不在自己的多播组列表中,于是主机D丢弃该帧。
(1)从网络体系结构的角度来看,IP地址属于网际层的范畴。IP地址是因特网(Internet) 上的主机和路由器所使用的地址,用于标识两部分信息:
①网络编号:标识因特网上数以百万计的网络。
②主机编号:标识同一网络上不同主机(或路由器各接口)。
(2)下图所示是因特网的一部分,网络N8上的两台主机各分配有一个IP地址,路由器R4连接该网络的接口也分配有一个IP地址,这三个IP地址的前三个十进制数是相同的,是网络N8的编号,而最后一个十进制数各不相同,是网络N8上各主机和路由器接口的编号,换句话说,同一个网络上的各主机和路由器的各接口的IP地址的网络号部分应该相同,而主机号部分应该互不相同。(对于一个IP地址,哪部分是主机编号,哪部分是网络号,并不一定是按照下图的规则设定)
(3)很显然,之前介绍的MAC地址不具备区分不同网络的功能。如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式);如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
(4)从网络体系结构看IP地址与MAC地址:
IP地址属于网络体系结构中的网络层范畴,因此在网络层首部中应该封装有源IP地址和目的IP地址,相应地,由于MAC地址属于网络体系结构中数据链路层的范畴,因此在数据链路层首部中应该封装有源MAC地址和目的MAC地址。
(5)数据包转发过程中IP地址与MAC地址的变化情况:
①如下图所示,假设主机H1要给主机H2发送一个数据包。
[1]首先主机H1将数据包发送给路由器R1。在网络层封装的IP数据报首部中,源IP地址应填写主机H1的IP地址IP1,目的IP地址应填写主机H2的IP地址IP2;在数据链路层封装的帧首部中,源MAC地址应填写主机H1的MAC地址MAC1,目的MAC地址应填写路由器R1的MAC地址MAC3。
[2]路由器将收到的数据包转发给路由器R2。在网络层封装的IP数据报首部中,源IP地址仍然填写主机H1的IP地址IP1,目的IP地址仍然填写主机H2的IP地址IP2;在数据链路层封装的帧首部中,源MAC地址应填写路由器R1的MAC地址MAC4,目的MAC地址应填写路由器R2的MAC地址MAC5。
[3]路由器将收到的数据包转发给主机H2。在网络层封装的IP数据报首部中,源IP地址仍然填写主机H1的IP地址IP1,目的IP地址仍然填写主机H2的IP地址IP2;在数据链路层封装的帧首部中,源MAC地址应填写路由器R2的MAC地址MAC6,目的MAC地址应填写主机H2的MAC地址MAC2。
②在数据包转发过程中,源IP地址和目的IP地址始终保持不变,而源MAC地址和目的MAC地址在转发过程中逐个链路(或逐个网络)改变。
③H1知道应该把数据包传给R1,由R1帮其把数据包转发出去,H1知道R1相应接口的IP地址为IP3,但不知道其对应的MAC地址是什么;R1知道应该把数据包转发给R2,R1知道R2相应接口的IP地址为IP5,但不知道其对应的MAC地址是什么;R2知道应该把数据包传给H2,R2知道H2的IP地址为IP2,但不知道其对应的MAC地址是什么。主机H1、路由器R1、路由器R2不知道目的MAC地址是什么,它们可以通过IP地址找出其对应的MAC地址,具体由地址解析协议ARP实现。
(1)从网络体系结构的角度来看,ARP协议属于网际层的范畴。使用ARP协议可以通过已知设备所分配到的IP地址获取到设备的MAC地址。
(2)下图所示是一个共享总线型的以太网,各主机所配置的IP地址和和其网卡上固化的MAC地址如图所示。
①假设主机B要给主机C发送数据包,主机B知道主机C的IP地址,但不知道主机C的MAC地址,因此主机B的数据链路层在封装MAC帧时无法填写目的MAC地址,也就无法构建出要发送的MAC帧。
②为了解决无法填写目的MAC地址的问题,每台主机都会有一个ARP高速缓存表,ARP高速缓存表记录了IP地址和MAC地址的对应关系。主机B要给主机C发送数据包,主机B可以先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址,如果找不到,主机B需要发送ARP请求报文来获取主机C的MAC地址,报文内容是“我的IP地址为192.168.0.2,我的MAC地址为00-E0-F9-A3-43-77,我想知道IP地址为192.168.0.3的主机的MAC地址”,ARP请求报文被封装在MAC帧中发送,目的地址为广播地址,也就是说该帧是广播帧,总线上的其它主机都能收到该广播帧。
③主机A的网卡收到该广播帧后将其送交上层处理,上层的ARP进程解析ARP请求报文,发现所询问的IP地址不是自己的IP地址,因此不予理会。
④主机C的网卡收到该广播帧后将其送交上层处理,上层的ARP进程解析ARP请求报文,发现所询问的IP地址正是自己的IP地址,于是主机C首先将ARP请求报文中所携带的主机B的IP地址与MAC地址记录到自己的ARP高速缓存表中,然后给主机B发送ARP响应报文,告知自己的MAC地址,报文内容是“我的IP地址为192.168.0.3,我的MAC地址为00-0C-CF-B8-4A-82”,ARP响应报文被封装在MAC帧中发送,目的地址为主机B的MAC地址,也就是说该帧是单播帧,总线上的其它主机都能收到该单播帧。
⑤主机A的网卡收到该单播帧后,发现其目的MAC地址与自己的MAC地址不匹配,直接丢弃该帧。
⑥主机B的网卡收到该单播帧后,发现其目的MAC地址与自己的MAC地址匹配,将其交付给上层处理,上层的ARP进程解析ARP响应报文,将其所包含的主机C的IP地址与MAC地址记录到自己的ARP高速缓存表中,接着主机B就可以给主机C发送之前想发送的数据包了。
(3)ARP高速缓存表中的每一条记录都有其类型,类型分为动态和静态两种:
①动态类型是指记录时主机自动获取到的,其生命周期默认为两分钟,当生命周期结束时,该记录自动删除(因为IP地址与MAC地址的对应关系并不是永久性的,可能会发生改变)。
②静态类型是指记录是用户或网络维护人员手工配置的,不同操作系统下的生命周期不同,例如在系统重启后不存在或在系统重启后依然有效。
(4)ARP协议只能在一段链路或一个网络上使用,不能跨网络使用。