3.6 媒体接入控制的基本概念
# 3.6 媒体接入控制的基本概念
本节课我们介绍媒体接入控制的基本概念,如图所示,这是一根同轴电缆,有多台主机连接到这根同轴电缆上,他们共享这跟传输媒体,形成了一个总线型的局域网,各主机竞争使用总线,随机的在信道上发送数据,如果恰巧有两个或更多的站点在同一时刻发送数据,那么信号在共享媒体上就要产生碰撞,即发生了冲突,使得这些站点的发送都失败。例如主机c和主机d同时使用总线来发送数据,这必然会产生所发送信号的碰撞。
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点,对一个共享传输媒体的占用,也就是媒体接入控制MAC,也可以读作Mark。
媒体接入控制技术主要分为两类,一类是静态划分信道,另一类是动态接入控制。
静态划分信道主要有频分多址,时分多值以及码分多值。
动态接入控制又可以分为两类,一类是受控接入,另一类是随机接入。而受控接入又可分为集中控制和分散控制。
静态划分信道,也就是预先固定分配好信道,这类方法非常不灵活,对于突发性数据传输,信道利用率会很低,通常在无线网络的物理层中使用,而不是在数据链路层中使用。
在集中控制的多点轮巡协议中,有一个主站,以循环方式轮巡每个站点有无数据发送,只有被轮循到的站点才能发送数据。集中控制的最大缺点就是存在单点故障问题,
而在分散控制的令牌传递协议中,各站点是平等的并连接成一个环形网络,令牌也就是一种特殊的控制针,延环逐站传递,接收到令牌的站点才有权发送数据,并且在发送完数据后将令牌传递给下一个站点。
需要说明的是采用令牌传递协议的典型网络有IEEE 802.5令牌环网,IEEE 802.4令牌总线网,光纤分布式数据接口FDDI。这些网络由于市场竞争已逐步退出了历史舞台,
随机接入的特点是所有站点通过竞争,随机的在信道上发送数据,如果恰巧有两个或更多的站点在同一时刻发送数据,那么信号在共享媒体上就要产生碰撞,即发生了冲突,使得这些站点的发送都失败。因此这类协议要解决的关键问题是如何尽量避免冲突,以及在发生冲突后如何尽快恢复通信。
著名的共享式以太网采用的就是随机接入,需要注意的是随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网,在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术
# 3.6.2 媒体接入控制-静态划分信道
本节课我们介绍媒体接入控制的其中一类方法,也就是静态划分信道。我们首先介绍信道复用的基本概念。复用是通信技术中的一个重要概念,也就是通过一条物理线路同时传输多路用户的信号。当网络中传输媒体的传输容量大于多条单一性到传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道,来充分利用传输媒体的带宽,如图所示,这是三对用户各自使用一条独立的物理线路进行通信,如果在发送端使用复用器,在接收端在使用分用器,这三段用户就可以共享一条物理线路进行通信。
常见的信道复用技术有频分复用fdm,时分复用tdm。波分复用wdm,码分复用CDM。
# 频分复用
首先来看频分复用,如图所示将传输线路的平台资源划分成多个子频带,形成多个子信道,各子信道之间需要留出隔离频1带,以免造成子信道间的干扰。当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上,接收端由相应的分用器通过滤波,将各路信号分开,将合成的复用信号恢复成原始的多路信号。很显然频分复用的所有用户同时占用不同的频带资源并行通信
# 时分复用
再来看时分复用。如图所示,横坐标为时间,将时间划分成一个个的时隙,时分复用技术将传输线路的带宽资源按时隙轮流分配给不同的用户,每对用户只在所分配时隙里使用线路传输数据。
时分复用技术,将时间划分成了一段段等长的时分复用帧,每一个时分复用的用户,在每一个时分复用帧中占用固定序号的时隙。如图所示,每一个用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度,很显然时分复用的所有用户在不同的时间占用同样的频带宽度。
# 波分复用
再来看波分复用,波分复用其实就是光的频分复用,如图所示
这是8路传输速率均为2.5g比特每秒的光载波,其波长均为1310纳米,经光调制后分别将波长变换到1550~1561.2纳米,每个光载波相隔1.6纳米,这8个波长很接近的光载波,经过光复用器,或称合波器就在一根光纤中传输,因此在一根光纤上数据传输的总速率就达到了8*2.5g比特每秒,也就等于20g比特每秒,光信号传输一段距离后会衰减,因此对衰减了的光信号必须进行放大,才能继续传输。现在已经有了很好的掺铒光纤放大器,两个光纤放大器之间的光缆线路长度可达120公里,而光复用器和光分用器或称分拨器之间可以放入4个掺铒光纤放大器,使得光复用器和光分用器之间的无光电转换的距离可达600公里。
# 码分复用
再来看码分复用,码分复用是另一种共享信道的方法,实际上由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA。同理频分复用和时分复用,同样可用于多址接入,相应的名词是评分多址fdma和10分多址TDMA。
在本课程中,我们不严格区分复用与,多址的概念,可简单理解如下,复用是将单一媒体的平台资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体平台资源上看,每个子信道只占用该媒体平台资源的一部分,多址更确切的应该成为多点接入,他处理的是动态分配信道给用户,这在用户仅仅暂时性的占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性的分配给用户的应用中,多址是不需要的,例如对于无线电广播或电视广播就是这样。某种程度上平分多址,时分多址,码分多址,可以分别看成是频分复用,时分复用,码分复用的应用
与频分复用和时分复用不同,码分复用的每一个用户可以在同样的时间使用同样的频带进行通信。由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。码分复用最初是用于军事通信的,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。随着技术进步,码分多址设备的价格和体积都大幅度下降,因而现在已广泛用于民用的移动通信,
在码分多址中,每一个比特时间再划分为m个短的间隔,称为码片,通常m的值是64或128。为了简单起见,在后续的举例中,我们假设M为8。在使用码分多址的每一个站,被指派一个唯一的m比特码片序列,一个站如果要发送比特1,则发送他自己的m比特码片序列。一个站如果要发送比特0,则发送他自己的m比特码片序列的二进制反码。我们来举例说明,假设只派给码分多址系统中某个站点的码片序列为0001 1011该站发送比特1,就是发送自己的码片序列0001 1011。该站发送比特0,就是发送自己的码片序列的二进制反码1110 0100。
为了方便,我们按惯例将码片序列中的0写为-1,1写为正1,则该站点的马片序列是-1, -1,-1、+1、 +1、+1、-1、+1。顺便提一下,这种通信方式称为直接序列扩频DSSS。码片序列的挑选原则如下,
第一,分配给每个站的码片序列,必须各不相同,实际常采用每随机码序列。
第二,分配给每个站的码片序列,必须相互正交,也就是规格化内积为零。零向量s表示占s的码片序列,向量t表示其他任何站的码片序列,两个不同站s和t的码片序列正交,就是向量s和t的规格化内积为0,可写为如下的表达式,向量s和t的规格化内积为0,就是将向量s和t中对应分量相乘,然后相加再除以向量中分量的数量,其结果为0。那么请大家思考一下,任何一个码片向量和该码片向量自己的规格化内机是多少?很显然应该是一。不仅如此,任何一个码片向量和其他各占码片反码的向量的内机也是0,任何一个码片向量和该码片反码的向量的内积是-1。
接下来我们来做一个练习,假设给站s的分配的码片序列为01011101,给站t分配的码片序列为1011 1000,这样的分配正确吗?首先检查码片序列是否各不相同,很显然题目所给的两个码片序列互不相同,满足码片序列挑选原则的第一条。再来检查码片序列是否相互正交。根据题意可知,用向量s表示站s的满屏序列为-1正1-1正1,正1正1-1正1,用向量t表示站t的码片序列为正1-1,正1正1,正111-1,向量s和t的规格化内机计算如下,结果不等于0,不满足码片序列挑选原则的第二条。
接下来我们来看码分多指的应用举例,假设ABCD是码芬多址系统中的4个站点,a站发送比特一,也就是发送自己所分配到的码片序列。为了简单起见,我们用向量a来表示a站的码片序列,b站发送比特0,也就是发送自己所分配到的码片序列的二进制反码。我们用b法来表示b站的马片序列的二进制砝码。C站没有发送数据,显然 d站可以接收到a站和b站所发送信号的叠加信号。
假设系统中的各站所发送的码片序列都是同步的,接收站D,知道其他各站点或特有的码片序列,则接收站d对所接收到的叠加信号可以进行判断,要判断a站是否发送数据,所发送的是比特0还是比特1,可将收到的叠加信号的码片向量与a站自身的码片向量进行规格化内机运算。根据我们之前就给出过的参考公式和计算出结果为一。同理,要判断b站和将收到的叠加信号的码片向量与b站自身的码片向量进行规格化内机运算,可计算出结果为-1。要判断c站可将收到的叠加信号的码片向量与c站自身的满屏向量进行规格化内积运算,可计算出结果为0。从上述计算结果可以看出,计算结果为数值1,被判断方发送了比特1,计算结果为数值-1,被判断方发送了比特0,计算结果为数值0,被判断方未发送数据,
我们基于上述方法来做一个练习,已知4个站各自的码片序列以及接收到的码片序列,那么哪些站发送了数据?发送的是比特1还是0?我们一起来分析一下,用收到的码片序列分别与各站的码片序列进行求规格化内积的运算,若计算结果为数值1则被判断的站发送了比特一,若计算结果为数值-1,则被判断的站发送了比特0,若计算结果为数值0,则被判断的站未发送数据,
判断a站:用a站的码片序列与收到的码片序列进行求规格化内积的运算,结果为1,因此可知a站发送了比特1,
判断b件用b站的码片序列与收到的码片序列进行求规格化内积的运算,结果为-1。因此可知 b站发送了比特0
判断c站,用c站的码片序列与收到的码片序列、进行求规格化内积的运算结果为0。因此可知c站没有发送数据,
判断d站用d站的码片序列与收到的码片序列进行求规格化内机的运算,结果为1,因此可知d站发送了比特一。
最后请同学们自己来完成一个练习。这是计算机专业考研全国统考,计算机网络部分2014年的题37,答案是选项b。我们一起来分析一下,由于题目所给各站的码片序列为4位,因此将站点c收到的序列分成3部分,每部分也由4位构成,如下所示
将站点a的码片序列分别与上述三个部分进行规格化内积运算。根据计算结果,就可以判断出站点a所发送的数据,将站点a的码片序列与第一部分码片序列进行规格化内积运算,结果是一,因此可知站点a所发送的第一个数据是比特一,
将站点a的码片序列与第二部分码片序列进行规格化内机运算,结果是-1。因此可知站点a所发送的第二个数据是比特0,
将站点a的码片序列与第三部分码片序列进行规格化内机运算结果是1,因此可知站点a所发送的第三个数据是比特1。
综上所述,选项b正确
本节课的内容小结如下
# 3.6.3 随机接入 CSMACD协议
在上节课中我们介绍了媒体接入控制的其中一类方式,也就是静态化分信道。本节课我们介绍随机接入,它属于媒体接入控制的另一类方式,即动态接入控制,如图所示多个主机连接到一根总线上,各主机随机发送帧。当两个或多个主机同时发送帧时,代表帧的信号就会产生碰撞或称为冲突,又或者当某个主机正在使用总线发送帧的过程中,另一台主机也要发送帧,这同样也会产生碰撞。
很显然如何协调总线上各主机的工作尽量避免产生碰撞,是一个必须要解决的重要问题。早期的共享式以太网采用载波监听/多址接入碰撞检测,也就是CSMA/CD协议来解决该问题。
首先来看多址接入,多址接入的意思是多个主机也可称为站点或站连接在一条总线上,竞争使用总线。再来看载波监听,载波监听的意思是每一个站在发送帧之前,先要检测一下总线上是否有其他站点在发送帧,可比喻为先听后说,若检测到总线空闲96比特时间则发送这个帧,若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送帧。96比特时间是指发送96比特所耗费的时间,也称为帧间最小间隔,其作用是接收方可以检测出一个帧的结束,同时也使得所有其他站点都能有机会平等竞争性到并发送帧。
再来看碰撞检测,碰撞检测的意思是每一个正在发送帧的站,边发送帧边检测碰撞,可比喻为边说边听,一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次重新发送,可比喻为一旦冲突,立即停说,等待时机重新再说。
下面我们来举例说明,多址接入,载波监听以及碰撞检测。多址接入的概念比较简单,即多个主机连接到一根总线上,各主机随机发送帧,假设主机C要发送帧,它首先进行载波监听,检测到总线空闲96比特时间后就可以发送帧了。假设在主机C使用总线发送帧的过程中,主机B也要发送帧,主机B进行载波监听,发现总线忙,于是持续检测总线,一旦发现总线空闲96比特时间,则立即发送帧,边发送帧还要边检测碰撞,只要没检测到碰撞,则可继续发送帧的剩余部分。
假设在主机B发送帧的过程中,主机C也要发送帧,主机C进行再不监听,发现总线空闲96比特时间后立即发送帧,这必然会产生碰撞。在产生碰撞的时刻,主机B和主机C都在边发送帧边检测碰撞,但都检测不到碰撞,碰撞信号沿总线传播,主机C会比主机B更早检测到碰撞并停止发送。
退避一段随机时间后,重新再发送之前所发送的帧。当主机B检测到碰撞后,立即停止发送,退避一段随机时间,重新再发送之前所发送的帧。以太网还采取了一种叫做强化碰撞的措施,这就是当发送帧的站点,一旦检测到碰撞,除了立即停止发送帧外,还要再继续发送32比特或48比特的人为干扰信号,以便有足够多的碰撞信号,使所有站点都能检测出碰撞。
接下来我们介绍争用期的概念,如图所示主机A和D处于总线型以太网的两端,以太网单程端到端的传播时延即为T,纵坐标为时间,假设在时刻0主机A要发送帧,当检测到总线空闲96比特时间后,立即发送帧,在时刻T-a,主机D也要发送帧,当检测到总线空闲96比特时间后,立即发送帧,需要注意的是主机D检测到总线空闲,但实际上总线并不空闲,只是主机D检测不出来,这必然会产生碰撞,发生碰撞的时刻为T减去二分之a。之后,碰撞信号会陆续传播到主机D和主机A。主机D检测到碰撞的时刻为a,而主机A检测到碰撞的时刻为2T减去a。从该图可知,主机最多经过2T,也就是a趋近于0,就可检测到本次发送是否遭受了碰撞。
因此以太网的端到端往返传播实验2t,就称为争用期或碰撞窗口,发送帧的主机,经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会产生碰撞。
每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性,这一小段时间是不确定的,它取决于另一个发送帧的主机到本主机的距离,但不会超过总线的端到端往返传播时延,即一个争用期时间,显然在以太网中发送帧的主机越多,端到端往返传播时间越大,发送碰撞的概率就越大。
因此共享式以太网不能连接太多的主机,使用的总线也不能太长,带宽为10兆比特每秒的以太网,把争用期定为512比特,发送时间即51.2微秒,因此其总线长度不能超过5120米。但考虑到其他一些因素,如信号衰减等,以太网规定总线长度不能超过2500米。
接下来我们介绍最小帧长的概念,假设主机A正在给主机D发送一个很短的帧,边发送边检测碰撞,主机A很快就将该帧发送完毕了,之后就不再针对该帧检测碰撞。在该帧的传输过程中,主机C也要发送帧,主机C检测到总线空闲96比特时间后就立即发送帧,尽管总线实际上并不空闲,这必然会产生碰撞,主机D最终会收到主机A发送的并遭遇碰撞的帧,主机D会将该帧丢弃,但对于主机A而言,他并不知道自己已发送完毕的该帧,在总线上传输的过程中遭遇了碰撞,因此不会重发,该帧很显然使用CSMACD协议的以太网的帧长不能太短,
以太网规定最小帧长为64字节,即512个比特。而发送512个比特的时间,即为争用期,如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。
以太网的最小帧长,确保了主机可在帧发送完成之前,就要检测到该帧在发送过程中是否遭遇了碰撞。
如果在争用期也就是共发送64节所耗费的时间内,没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞。
如果在争用期内检测到碰撞,就立即终止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧,都是由于碰撞而异常终止的无效帧。
既然以太网规定了最小帧长,那么是否还规定了最大帧长?我们来举例说明,假设主机A正在给主机D发送一个很长的帧,这会使得主机A长时间占用总线,而总线上的其他主机迟迟拿不到总线的使用权。另外由于帧很长,还可能导致主机D的接收缓冲区无法装下该帧而产生溢出,因此以太网的帧长应该有其上限。例如这是以太网版本二的MAC格式,其数据载荷的最大长度为1500字节,加上首部和尾部共18字节,帧的最大长度为1518字节,而数据载荷的最小长度不能小于46字节,这样加上首部和尾部共18字节,正好满足帧的最小长度为64字节。
这是插入VLAN标记字段后的802.1Q帧,其数据载荷的最大长度为1500字节,加上首部和尾部共22字节,帧的最大长度为1522字节,而数据载荷的最小程度不能小于42字节,这样加上首部和尾部共22字节,正好满足帧的最小长度为64字节。
接下来我们介绍退避时间的计算方法,也就是截断二进制指数退避算法,退避时间等于基本退避时间乘以随机数R。其中基本退避时间的取值为争用期2T,而随机数R是从离散的整数集合,0,1一直到2的K次-1中随机选出的一个数,K从重传次数,数值时装取小者,这也是该算法名称中截断二进制指数这种称谓的由来。我们来举例说明退避时间的计算。
假设这是第一次重传,K从重传次数1和10中取小者,也就是1则离散的整数集合为0,1.则可能的退避时间为0×2t,1×二T。
假设这是第二次重传,K从重传次数2和10中取小者,也就是2则离散的整数集合为0,1,2,3,则可能的配比时间为0×2T,1×2T,2×2T,3×二2T。
假设这是第12次重传,K从重传次数12和10中取小者,也就是10则离散的整数集合为0,1,2一直到1023,则可能的退避时间为0×2T,1×2T,2×2T,一直到1023×2T。
从该例可以看出,若连续多次发生碰撞,就表明可能有较多的主机参与竞争性的,但使用上述推比算法,可使重传需要推迟的平均时间,随重传次数而增大,这也×为动态退避,因而减小发生碰撞的概率,有利于整个系统的稳定。
当重传多达16次仍不能×功时,表明同时打算发送帧的,主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告。
接下来我们来讨论一下使用CSMACD协议的共享式以太网的信道利用率。如图所示横坐标为时间,总线上的某个主机可能发生多次碰撞,进行多次退避后,成功发送了一个帧,帧的发送时延即为T0。在最极端的情况下,源主机在总线的一端,而目的主机在总线的另一端,因此还要经过一个单程端到端的传播实验T后,总线才能完全进入空闲状态。因此发送一帧所需的平均时间为多个争用期2T,加上一个帧的发送时延T0,再加上一个单程端到端的传播时延T,
考虑以下这种理想情况,各主机发送帧都不会产生碰撞,总线一旦空闲,就有某个主机立即发送帧,因此这部分时间就不存在了。发送一帧所占用总线的时间为T0加上T,而帧本身的发送时间为T0,这样就可得出极限信道利用率的表达式,将分子分母同除以T0,将T除以T0系为参数A为了提高性到利用率,参数A的值应尽量小,要使参数A的值尽量小,则T的值应该尽量小,这意味着以太网端到端的距离应受到限制,不应太长,而T0的值应当尽量大,这意味着以太网的帧长应尽量大一些。
接下来我们给出CSMACD协议的帧发送流程图,这是载波监听部分,这是碰撞检测部分,这是检测到碰撞后的处理部分。
再来看CSMACD协议的帧接收流程图,若接收到的帧的长度小于最短帧长,则认为该帧遭遇到了碰撞,丢弃该帧,若接收到的帧的目的MAC地址与接收方的MAC地址相同,或是广播地址,则继续进行后续判断,否则丢弃该帧。
若使用循环冗余校验,检查出正在传输过程中出现了误码,则丢弃该帧。
只要正确通过上述三个检查,主机才能接受所收到的帧。
接下来我们来做几个相关的练习题,这是计算机专业考研全国统考计算机网络部分2015年的题36,答案是选项B。选项A描述的是碰撞检测或称冲突检测,这是CSMACD协议中的一部分,描述正确,选项B的描述错误,因为CSMACD协议并不适用于无线网络,对于无线网络可以使用CSMACA协议,选项C中给出的网络跨距,相当于给出了端到端传播实验T,进而可以得出争用期1T,在乘以数据传输速率即为最小帧长,描述正确。选项D描述正确,这可以从极限信道利用率的计算公式看出,当它趋近于零时,信道利用率趋近于100%。
再来看2009年的题37,答案是选项D 本题考察的是采用CSMACD协议的共享式以太网的最小帧长的相关概念,设最远两个站点之间的距离为D米,最小帧长为L比特,最小帧长等于争用期乘以数据传输速率,将题目所给的各已知量统一单位后,与之前所设的两个未知量D和L带入上式,就可以得出最远两个站点之间的距离D与最小帧长L的关系式。很显然若最小帧长减少800比特,最远的两个站点之间的距离至少会减少80米。
再来看2010年的题47的第一问,根据题意可画出如下所示的示意图,只有两主机同时发送数据,才能使得他们从开始发送数据时刻起到他们都检测到冲突时刻止,所经过的时间最短,如图所示,这段时间包括主机发送的数据信号,传播到距离终点处,所耗费的传播时延,以及发生碰撞后的碰撞信号,传播回主机做耗费的时间,这与之前的传播时延是相等的。因此这段时间实际上是两主机间单程的传播时延,计算如下,
再来看这样一种情况,主机甲发送的数据信号传播到无限接近主机乙的某个时刻,主机乙也要发送数据,它检测到信道空闲,但实际上信道此时并不空闲,就立刻开始发送数据,这必然会导致碰撞。如图所示主机已会首先检测到碰撞,一段时间后主机甲也会检测到碰撞,如图所示。很显然从开始发送数据时刻起到两台主机,均检测到碰撞时刻止,最长需要经过的时间为两台主机间信号传播的往返时延,也就是争用期2T,计算如下,
本节课的内容小结如下,需要提醒大家注意的,是C SMACD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中,现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA CD协议。
# 3.6.4 随机接入 CSMACA协议
在上节课中我们介绍了总线型局域网使用的媒体接入控制协议CSMACD,本节课我们介绍无线局域网使用的媒体接入控制协议,CSMA/CA也就是载波监听多址接入/碰撞避免。请大家思考一下,既然CSMACD协议已经成功的应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网,能不能也使用CSMACD协议?
在无线局域网中仍然可以使用载波监听多址接入,即在发送帧之前,先对传输媒体进行载波监听,若发现有其他站在发送帧就推迟发送,以避免发生碰撞。
但是在无线局网中不能使用碰撞检测CD,原因如下
- 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度,可能相差百万倍。如果要在无线网卡上实现碰撞检测,对硬件的要求非常高
- 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性,例如存在隐蔽站问题,进行碰撞检测的意义也不大
如图所示,这里有4个无线站点,A的信号范围可以覆盖到B但不能覆盖到C,C的信号范围可以覆盖到B但不能覆盖到A。换句话说A和C都检测不到对方的无线信号,当A和C都要给B发送帧时就会产生碰撞,但A和C无法检测到碰撞,这种未能检测出信道上其他站点信号的问题,叫做隐蔽站问题,
而同样使用广播信道的有线局域网就不存在这样的问题。例如总线上某个主机发送的信号,最多经过一个总线端到端传播时延,就会被总线上的各主机接收到,而总线上产生的碰撞信号最多经过一个总线端到端往返传播时延也会传遍总线。
因此802.11无线局域网使用CSMACA协议,在CSMA的基础上增加了一个CA也就是碰撞避免功能,而不再实现CD也就是碰撞检测功能。由于不可能避免所有的碰撞,并且无线信道误码率较高。802.11标准还使用了数据链路层确认机制,具体为停止等待协议,来保障数据被正确接收。
- 802.11的MAC层标准,定义了两种不同的媒体接入控制方式,一种是分布式协调功能DCF,在DCF方式下,没有中心控制站点,每个站点使用CSMACA协议,通过争用信道来获取发送权,这是802.11定义的默认方式。
- 另一种是点协调功能PCF。PCF方式使用集中控制的接入算法,一般在接入点AP实现集中控制,是802.11定义的可选方式,在实际中较少使用。
802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS。帧间间隔的长短取决于该站点要发送的帧的类型,高优先级帧需要等待的时间较短,因此可优先获得发送权。低优先级帧需要等待的时间较长,若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙状态,因而低优先级帧就只能在推迟发送了,这样就减少了发生碰撞的机会。
常用的两种帧间间隔如下,一种是短帧间间隔SIFS,长度为28微秒,是最短的帧间间隔,用来分隔开属于一次对话的各个帧,一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧,由过长的MAC帧分片后的数据帧,以及所有回答AP探询的帧,和在PDF方式中接入点AP发送出的任何帧。
另一种是DCF帧间间隔,DCF长度为128微妙,它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。
接下来我们来举例说明,CSMACA协议的工作原理,如图所示,这些是无线站点,横坐标为时间。假设无线信道是空闲的,源站有数据帧要发送,当源站检测到信道空闲,则在等待帧间间隔DIFS后发送该数据帧。目的站若正确收到该数据帧,则经过帧间间隔SIFS后向源站发送确认帧ACK。需要说明的是,若源站在规定时间内没有收到确认帧ACK,由重传计时器控制这段时间,就必须重传该数据帧,直到收到确认为止,或者经过若干次的重传失败后放弃发送。
请大家思考一下,源站为什么在检测到信道空闲后,还要在等待帧间间隔DISS后才发送数据帧?
这就是考虑到可能有其他的站,有高优先级的帧要发送,若有就让高优先级帧先发送,
个人理解:为了避免检测到空闲的那个时刻后,马上就有高优先级的帧发送,这时要等他发完,避免碰撞
那么目的站又是为什么在正确接收数据之后,还要再等待一段时间SIFS才能发送ACK帧? SIFS是最短的帧间间隔,用来分割开属于一次对话的各个帧。在这段时间内,一个站点应当能够从发送方式切换到接收方式,如图所示,在源站和目的站的一次对话过程中,无限信道处于忙状态,若无线信道处于忙状态时,其他无线站点要发送数据,则必须退避。当信道从忙状态转换到空闲状态,并经过帧间间隔DIFS后,其他要发送数据的无线站点,需要退避一段随机时间后才能发送。
那么既然信道已经由忙转为空闲,且经过中间间隔DIFS后,为什么还要退避一段随机时间才能使用信道,而不是立即使用信道,这样做的目的在于防止多个站点同时发送数据而产生碰撞。
当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后,立即连续发送的数据帧,则不使用退避算法,
而以下情况必须使用退避算法。
在发送数据帧之前,检测到信道处于忙状态时,必须使用退避算法,
在每一次重传一个数据帧时,必须使用退避算法,
在每一次成功发送后,要连续发送下一个帧时,必须使用退避算法,这是为了避免一个站点长时间占用信道。
下面我们来介绍CSMA CA协议的退避算法。在执行退避算法时,站点为退避计时器,设置一个随机的退避时间,当退避计时器的时间减小到0,就开始发送数据,当退避计时器的时间还未减小到零时,而信道又转变为忙状态,这时就要冻结蜕皮计时器的数值,重新等待信道变为空闲。在经过帧间间隔DIFS后,继续启动退避计时器,在进行第i次退避,退避时间在实际编号01 2~2+X-一中,随机选择一个然后乘以基本退避时间,也就是一个时隙的长度,就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少,当时隙编号达到255时,对应于第6次退避,就不再增加了。
我们来举例说明,DSMACA协议的退避算法,如图所示 ABCDE是5个无线站点,横坐标为时间,假设A正在占用无线信道发送帧,在A的发送过程中,BCD也要发送帧,我们用向上的箭头来表示,于是进行载波监听,发现信道忙需要退避,根据退避算法,选择出一个随机的退避时间,并在每个时隙对信道进行一次检测。当检测到信道由忙状态转为空闲状态,且经过帧间间隔DIFS后,退避计时器开始倒计时。假设C的退避时间最短,当C的退避计时器到时后,C立即开始发送帧,此时信道由空闲状态转换为忙状态。当B和D检测到信道忙后,就冻结各自剩余的退避时间。
假设在C占用无线信道发送帧的过程中,E也要发送帧,于是进行载部监听,发现信道忙需要退避,根据退避算法,选择出一个随机的退避时间,并在每个时隙对信道进行一次检测。当检测到信道由忙状态转为空闲状态,且经过帧间间隔DIFS后退避计时器开始倒计时。
当B和D检测到信道由忙状态转为空闲状态,且经过帧间间隔DIFS后,退避计时器重新开始,从上次冻结的退避剩余时间开始倒计时,D的退避计时器会首先到时,D立即开始发送帧,此时信道由空闲状态转换为忙状态,当BE检测到心脑门后,就冻结各自剩余的退避时间,当D发送完帧后,信道将转为空闲状态,当BE检测到信道由忙状态转换为空闲状态,且经过帧间间隔DIFS后退避计时器重新开始,从上次冻结的退币剩余时间开始倒计时,E的退避计时器会首先到时,E立即开始发送帧,此时信道由空闲状态转换为忙状态,
当B检测到信道忙后,就冻结自己剩余的退避时间。当E发送完帧后,信道将转为空闲状态,当B检测到信道由忙状态转换为空闲状态,且经过帧间间隔DISS后,退避计时器重新开始,从上次冻结的退避剩余时间开始倒计时。当B的退避计时器到时候,B立即开始发送帧,
若B发送完这一帧后,还有帧要发送,则在检测到新的空闲,且经过中间间隔DFIS号还必须再退避一段随机时间后才能发送。
接下来我们介绍CSMACA协议的信道预约和虚拟载波监听。为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约。我们来举例说明,源站在发送数据帧之前,先发送一个短的控制帧,称为请求发送RTS。它包括源地址、目的地址以及这次通信,包括相应的确认帧所需的持续时间。如图所示,当源站检测到新的空闲,且经过帧间间隔DIFS后,发送RTS帧,若目的站正确收到源站发来的RTS帧,在检测到新的空闲线,经过中间间隔,SIFS后就发送一个响应控制帧,称为允许发送CTS。它也包括这次通信所需的持续时间,如图所示,源站收到CTS证后,在等待一个帧间间隔,SIFS后就可发送其数据帧,如图所示
若目的站正确收到了源站发来的数据帧,在等待一个帧间间隔SIFS号,就像源站发送确认帧ACK,如图所示
除源站和目的站以外的其他各站,在收到CTS帧或数据帧后,就推迟接入到无线局域网中,这样就保证了源站和目的站之间的通信不会受到其他站的干扰。如图所示,
如果RTS帧发生碰撞,源站就收不到CTS帧,需要执行退避算法,重传RTS帧。由于RTS帧和CTS帧很短,发生碰撞的概率,碰撞产生的开销以及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延,碰撞的概率很大,且一旦发生碰撞,而导致数据帧重发,则浪费的时间就很多。因此用很小的代价对信道进行预约往往是值得的。802.11标准规定了三种情况,供用户选择,
一种是使用RTS帧和CTS帧
另一种是不使用RTS帧和CTS帧,
还有一种是只有当数据帧的长度超过某一数值时,才使用RTS帧和CTS帧。
除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。由于利用虚拟载波监听机制,站点只需要监听到RTS帧、CTS帧或数据帧中的任何一个就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号。因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。
例如这是4个无线站点,A和C互为隐蔽站,A的信号可以覆盖到B但不能覆盖到C C的信号可以覆盖到B但不能覆盖到A。A在给B发送数据之前,可以使用RTS帧来预约信道,尽管C收不到该RTS帧,但是C可以收到B发送给A的CTS帧,这样A就知道了信道将被占用多长时间
在这段时间内,C都不会争用信道,也就是说A给B发送数据帧时不会受到C的干扰
这是计算机专业考研全国统考计算机网络部分2011年的题36,答案是选项D
CSMA是指载波监听多址接入,他并不使用确认机制,
CSMACD是指载波监听多址接入/碰撞检测,是对CSMA的改进,是早期共享总线以太网使用的信道访问控制协议,他并不使用确认机制。
CSMACA是指在不监听多址接入碰撞避免,是802.11局域网采用的无线信道访问控制机制。802.11局域网在使用CSMA CA的同时,还使用停止等待协议,这是因为无线信道的通信质量远不如有限信道。因此无线站点每发送完一个数据之后,要等到收到对方的确认之后,才能继续发送下一帧。
CDMA是指码分多址,属于静态划分性道,是物理层的信道复用技术,而不属于MAC协议。
再来看2013年的题36,答案是选项B CDMA是指码分多址,TDMA是指时分多址,MDMA是指评分多址CSMA是指在播监听,多址接入
TDMA FD MACDMA是常见的物理层信道复用技术,属于静态划分信道,用于多用户共享信道,不会发生冲突。
CSMA属于争用型的媒体接入控制协议,连接在同一媒体上的多个站点,使用该协议,以竞争方式发送数据帧,可能出现冲突,也称为碰撞。
再来看2018年的题35,答案是选项D 本题考察本节课我们刚刚介绍过的CSMACA协议的信道预约方法,CSMACA协议使用RTS帧和CTS帧来预约信道,他们都携带有通信需要持续的时间。另外除RTS和CTS帧外,数据帧也能携带通信需要持续的时间,这就是802.11的虚拟载波监听。
本节课的内容小结如下
# 3.7 MAC地址
从本节课开始,我们将用三次课的时间分别介绍MAC地址、IP地址、ARP协议
- MAC地址是以太网的MAC层所使用的地址
- IP地址是tcpip体系结构网系层所使用的地址。
- ARP协议属于tcpip体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议,就可以通过该IP地址获取到设备的MAC地址。
- 从网络体系结构的角度来看,MAC地址属于数据链路层的范畴,IP地址和ARP协议属于网际层的范畴。
- 尽管IP地址和ARP协议属于TCP体系结构的网际层,而不属于数据链路层,但是它们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议。因此我们将这三者放在一起讨论。
# MAC地址作用
本节课我们介绍MAC地址,如图所示两台主机通过一条链路通信,很显然他们不需要使用地址就可以通信,因为连接在信道上的主机只有他们两个。换句话说,是用点对点信道的数据链路层不需要使用地址。
再来看使用共享信道的总线型局域网,总线上的某台主机要给另一台主机发送帧,表示帧的信号通过总线会传送到总线上的其他所有主机。那么这些主机如何判断该帧是否是发送给自己的呢?很显然使用广播信道的数据链路层必须使用地址来区分各主机,也就是说当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识。即一个数据链路层地址。
如图所示,假设总线上各主机的地址分别用一个不同的大写字母来表示,在每个主机发送的帧中,必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制的,写英文缩写词为MAC可以读作MAC,因此这类地址被称为MAC地址。
如图所示这是主机c要发送给主机d的帧,则在帧首部中的目的地址字段应填入主机D的MAC地址,而在源地址字段应填入主机c自己的MAC地址,这样总线上其他各主机收到该帧后,就可以根据真首部中的目的地址字段的值,是否与自己的MAC地址匹配,进而丢弃或接受该帧。
MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中,因此 MAC地址也被称为硬件地址,如图所示,这是一块PCI接口的千兆以太网卡,
核心芯片采用REALTEK的8169SC,该芯片实现了以太网的数据链路层和物理层,
这是一方EEPROM芯片,例如93C46,用来存储MAC地址以及网卡的相关信息,
这是boot room插槽,用于网络无盘工作站的启动,一般并不标配启动芯片,
这是网络隔离变压器,将核心芯片与外部隔离,提高抗干扰能力,对核心芯片进行保护。例如防雷击,
MAC地址有时也被称为物理地址,例如在windows系统中,但请大家注意,这并不意味着MAC地址属于网络体系结构中的物理层。我们来看这道考研题,这是计算机专业考研全国统考,计算机网络部分2018年的题34,本题的答案是选项c。如果大家知道物理地址又称为硬件地址或MAC地址,它并不属于物理层的范畴,而是属于数据链路层的范畴。那么本题可以直接选出答案,即便大家不知道物理层接口规范定义的内容,也可以选出答案。
但是如果大家不知道这个知识点,并且对物理层接口规范定义的机械特性,电气特性、功能特性以及过程特性不熟悉,而仅从字面上理解,那么很可能选项c会被大家首先排除掉。
一般情况下用户主机会包含两个网络适配器,一个是有线局域网试配器,也就是有线网卡,另一个是无线局域网试配器,也就是无线网卡。每个网络适配器都有一个全球唯一的MAC地址,而交换机和路由器往往拥有更多的网络接口,所以就会拥有更多的MAC地址。
综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
# MAC地址格式
接下来我们介绍IEEE 802局域网的MAC地址格式,它由48个比特构成,每8个比特为1个字节,从左至右依次为第1字节到第6字节
- 前三个字节是组织唯一标识符OUI,生产网络设备的厂商,需要向IEEE的注册管理机构申请一个或多个OUI
- 后三个字节是获得OUI的厂商可自行随意分配的。这种地址标识符成为扩展的唯一标识符EUI。对于48比特的MAC地址可称为EUI-48。
- MAC地址的标准表示方法是将每4个比特写成1个16进制的字符,共12个字符,将每两个字符分为一组,共6组,组之间用短线连接,例如这是windows系统中的表示方法,
- 也可以将短线更改为冒号。例如这是Linux系统,苹果系统,安卓系统中的表示方法,
- 还可以将4个字符分为一组,共三组组之间用点连接。例如这是packet tracer仿真软件中的表示方法,
- 如何在各种系统上查看设备所拥有的Mark地址,大家可自行在网上搜索。
# 查看MAC地址所属厂商
另外我们可以在IEEE的官方网站查看已分配的组织唯一标识符OUI,这是具体的网址。standards-oui.ieee.org/oui/oui.txt (opens new window)
可以看到30-fB-B8这个oui已被分配给华为科技有限公司,而a4-45-19这个oui已被分配给小米通信有限公司。
如果我们知道设备的MAC地址,而不知道该设备的厂商信息,可以通过设备的MAC地址来查询,有很多网站都提供这样的免费查询服务,例如在该网站MAC地址查询 - 根据网卡MAC地址查询厂商信息 (opens new window) 输入设备的MAC地址后,就可以查出设备的厂商信息。
# MAC地址种类
- MAC地址第一字节的b0位取零时,表示该地址是单播地址,取1时表示该地址是多播地址,又称为组播地址。
- MAC地址第一字节的b1位取0时,表示该地址是全球管理的,也就是全球唯一的,取1时,表示该地址是本地管理的。
根据上面的规定,我们来填写下表:
- 第一字节的第1位取0,表明MAC地址是全球管理的,取一,表明MAC地址是本地管理的
- 第一字节的b0位取0,表示MAC地址是单播地址,取1表明MAC地址是多波地址。
很显然一共有4种类型的MAC地址,分别是全球管理的单播地址,全球管理的多播地址,本地管理的单播地址,以及本地管理的多播地址。
- 全球管理的单播地址是厂商生产网络设备时给设备的各网络接口固化的MAC地址,
- 全球管理的多播地址是标准网络设备所应支持的多播地址,用于特定功能。例如交换机生成树协议,所需要的多播地址,
- 本地管理的单播地址由网络管理员分配,这种类型的地址会覆盖网络接口的全球管理单播地址,也就是它的优先级高,
- 本地管理的多播地址,用于用户对主机的软件配置,以表明该主机属于哪些多播组。需要注意的是当剩余46比特为权一时,也就是MAC地址的48比特全部为1,16进制形式为全F,就是广播地址,
- 由于MAC地址由48个比特构成,因此总地址数量为2的48次方个,也就是280多万亿个。这4类MAC地址各占总地址空间的1/4,也就是每种Mark地址有70多万亿个
请大家思考一下,我们每个人一般会拥有几个全球管理的单波MAC地址、台式机、笔记本电脑、平板电脑、智能手机等设备上的以太网接口、WiFi接口、蓝牙接口都分配有全球单波的MAC地址,而每台交换机和路由器都拥有多个网络接口,也就拥有多个全球单播的MAC地址。那么在我们有生之年是否会看到EUI-48地址空间耗尽?
对于使用EUI-48地址空间的应用程序,IEEE的目标寿命为100年,也就是直到2080年,但现在鼓励采用EUI64作为替代。
# MAC地址的发送顺序
接下来我们介绍MAC地址的发送顺序,字节发送顺序为第一字节到第六字节,字节内的比特发送顺序为b0~b7如图所示。
# 单播MAC地址
下面我们来举例说明单播MAC地址的作用。假设这是一个拥有三台主机的总线型以太网,各主机网卡上固化的全球单波MAC地址如图所示,假设主机b要给主机c发送单波帧,主机b首先要构建该单播帧,在帧首部中的目的地址字段,填入主机c的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段,数据载荷以及帧尾部,就构成了该单播帧。
主机b将该单播帧发送出去,主机a和c都会收到该单播帧。主机a的网卡,发现该单播帧的目的MAC地址与自己的MAC地址不匹配,于是丢弃该帧
主机c的网卡,发现该单波帧的目的MAC地址与自己的MAC地址匹配,于是接受该帧,并将该帧交给其上层处理,如图所示
# 广播MAC地址
再来看广播MAC地址的作用。假设主机b要发送一个广播帧,主机b首先要构建该广播帧,在帧首部中的目的地址字段填入广播地址,也就是16进制的全f。源地址字段填入自己的MAC地址,再加上帧首部中的其他字段,数据载荷以及帧尾部,就构成了该广播帧。主机b将该广播帧发送出去,主机a和c都会收到该广播帧,发现该帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,接受该帧,并将该帧交给上层处理。
# 多播MAC地址
再来看多播MAC地址的作用,假设主机a要发送多播帧给该多播地址,将该多播地址的左起第一个字节写成8个比特,可以看到最低比特位是一,这就表明该地址是多播地址。这里给大家介绍一个快速判断MAC地址是否是多播地址的方法,也就是如果该位16进制数不能整除二,即13579bdf,则该地址是多播地址。
假设主机bcd支持MAC多播,各用户给自己的主机配置的多播组列表如下所示,可以看到主机b属于两个多播组,主机c也属于两个多播组,而主机d不属于任何多播组。
主机a首先要构建该多播帧,在帧首部中的目的地址字段,填入该多播地址,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段,数据载荷以及帧尾部就构成了该多播帧。
主机a将该多播帧发送出去,主机bcd都会收到该多播帧,主机b发现该多播帧的目的MAC地址,在自己的多播组列表中,主机c发现该多播帧的目的MAC地址在自己的多播组列表中,因此主机b和c都会接受该帧并送交上层处理,
而主机地发现该多播帧的目的MAC地址不在自己的多播组列表中,主机地丢弃该多播帧。
需要提醒大家注意的是,当给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址,具体可在以下网址查询。
# 随机MAC
最后我们简单介绍一下随机MAC地址的概念。据斯诺登爆料,美国国家安全局有一套系统,通过监视电子设备的MAC地址,来跟踪城市中每个人的行动。因此苹果率先在iOS系列设备扫描网络时,采用随机MAC地址技术,随后 windows10,安卓6.0,以及内核版本为3.18的Linux系统,也开始提供随机MAC地址的功能。目前大多数移动设备已经采用了随机MAC地址技术
我们将本节课的内容小结:
# 3.7 IP地址
在上节课中我们介绍了MAC地址的相关知识,本节课我们介绍IP地址的相关知识,需要说明的是IP地址属于网络层的范畴,而非数据链路层的范畴。
之所以在数据链路层这一章的讲解中引入IP地址,是因为在我们日常的大多数网络应用中,属于数据链路层的MAC地址和属于网络层的IP地址都在使用,他们之间存在一定的关系。Ip地址的相关内容比较多,例如分类的IP地址,划分子网的IP地址,构造超网的IP地址等,这些内容我们将在网络层这一章详细介绍。本节课我们主要介绍IP地址的作用。
# 区分网络编号
IP地址是英特网上的主机和路由器所使用的地址,用于标识两部分信息,
- 一部分是网络编号,用来标识因特网上数以百万计的网络
- 另一部分是主机编号,用来标识同一网络上不同主机或路由器各接口
如图所示。假设这是因特网的一部分,我们给网络n8上的两台主机各分配了一个IP地址,给路由器r4连接该网络的接口,也分配了一个IP地址,这三个IP地址的前三个10进制数是相同的,也就是网络n8的编号。而最后一个10进制数各不相同,是网络n8上各主机和路由器接口的编号。换句话说,同一个网络上的各主机和路由器的各接口的IP地址的网络号部分应该相同,而主机号部分应该互不相同。
又例如我们给网络n9上的各主机和路由器的接口,各分配了一个IP地址,这三个IP地址的前三个10进制数是相同的,也就是网络n9的编号。而最后一个10进制数各不相同,是网络n9上各主机和路由器接口的编号。
因特网中不同网络的网络编号必须各不相同。例如在本例中,网络n8的编号为192.168.0,而网络n9的编号为192.168.1。需要提醒大家注意的是,在一个IP地址中,哪部分是网络编号,哪部分是主机编号,并不都和本例相同,我们将在后续网络层这一章进行详细介绍。
# IP地址与MAC地址的封装位置
很显然之前介绍的MAC地址不具备区分不同网络的功能,而IP地址具备这样的功能,如果只是一个单独的网络,不接入因特网,可以只使用MAC地址,但这并不是一般用户的常见应用方式。
如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。接下来我们从网络体系结构的角度,看看IP地址与MAC地址的封装位置。我们以5层原理体系结构为例
- 这是应用层封装好的应用层,报文将其向下交付给运输层,
- 运输层看不懂,也无需看懂应用层报文的结构与内容。我们用黑色表示,仅仅给其添加一个运输层首部,运输层将封装好的协议数据单元向下交付给网络层,
- 网络层看不懂,也无需看懂运输层协议数据单元的结构与内容,仅仅给其添加一个网络层首部,网络层将封装好的协议数据单元向下交付给数据链路层
- 数据链路层看不懂,也无需看懂网络层协议数据单元的结构与内容,仅仅给其添加一个数据链路层首部和一个数据链路层尾部,数据链路层将封装好的协议数据单元向下交付给物理层
- 物理层看不懂,也无需看懂数据链路层协议数据单元的结构与内容,仅仅将他们看作是比特流,以便将他们转换为相应的电信号,发送到传输媒体。
- 由于IP地址属于网络体系结构中网络层的范畴,因此在网络层首部中应该封装有原IP地址和目的IP地址,
- 相应的,由于MAC地址属于网络体系结构中数据链路层的范畴,因此在数据链路层首部中应该封装有源MAC地址和目的MAC地址
# 转发过程中IP地址与MAC地址的变化情况
接下来我们来看看数据包,在转发过程中IP地址与MAC地址的变化情况,如图所示为了简单起见,图中各主机和路由器各接口的IP地址和MAC地址用比较简单的标识符来表示,而并未使用实际的IP地址和MAC地址。
假设主机h1要给主机h2发送一个数据包,我们从网络体系结构的角度来看看数据包在传输过程中,IP地址与MAC地址的变化情况。
需要注意的是主机中有完整的网络体系结构,而路由器的最高层为网络层,它没有网络体系结构中的运输层和应用层,我们所关注的重点是网络层封装IP数据报时,原IP地址和目的IP地址应该填写什么?数据链路层封装帧时,源MAC地址和目的MAC地址应填写什么?
因此我们忽略网络体系结构中,除网络层和数据链路层外的其他各层,可以想象成各网络层进行水平方向的逻辑通信,各数据链路层进行水平方向的逻辑通信。
- 主机h1将数据包发送给路由器R1,在网络层封装的IP数据报首部中,源IP地址应填写主机h1的IP地址IP1,目的IP地址应填写主机h2的IP地址IP2,也就是从IP1发送给IP2。而在数据链路层封装的帧首部中,源MAC地址应填写主机h1的MAC地址MAC1,目的MAC地址应填写路由器R1的MAC地址MAC3,也就是从MAC1发送给MAC3,
- 路由器R1将收到的数据包转发给路由器r2,在网络层封装的IP数据报首部中,源IP地址仍然填写主机h1的IP地址,IP1目的IP地址仍然填写主机h2的IP地址IP2,也就是从IP1发送给IP2。而在数据链路层封装的帧首部中,源MAC地址应填写路由器R1的MAC地址MAC4,目的MAC地址应填写路由器r2的MAC地址MAC5,也就是从MAC4发送给MAC5,
- 路由器r2将收到的数据包转发给主机h2,在网络层封装的IP数据报首部中,源IP地址仍然填写主机h1的IP地址IP1,目的IP地址仍然填写主机h2的IP地址IP2,也就是从IP1发送给IP2;而在数据链路层封装帧首部时,源MAC地址应填写路由器r2的MAC地址MAC6,目的MAC地址应填写主机h2的MAC地址MAC2,也就是从MAC6发送给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都存在一个共同的问题,那就是知道IP地址,但不知道其相应的MAC地址,如何通过IP地址找出其对应的MAC地址,这是我们下节课将要介绍的地址解析协议ARP所要实现的功能。
MAC地址和IP地址相关的练习题:计算机专业考研全国统考,计算机网络部分2018年的题37,答案是选项d
我们来一起分析一下,我们之前刚刚介绍过,在数据包的转发过程中,源IP地址和目的IP地址始终保持不变,而源MAC地址和目的MAC地址逐段链路或逐个网络改变。
针对本题我们来一起填写下表,
- 主机h1将数据包传输给路由器r。在网络层封装IP数据报时,在其首部的源IP地址字段填入主机h1的IP地址,目的IP地址字段,填入主机h2的IP地址。
- 在数据链路层封装market时,在其首部的原MAC地址字段填入主机h1的MAC地址,目的MAC地址字段,填入路由器r相应接口的MAC地址,
- 路由器r数据包转发给主机h2。在网络层封装IP数据报时,在其首部的源IP地址字段仍然填入主机h1的IP地址,目的IP地址字段仍然填入主机h2的IP地址,
- 在数据链路层封装MAC帧时,在其手部的原Mark地址字段,填入路由器r相应接口的Mark地址,目的MAC地址字段填入主机h2的MAC地址。
将本节课的内容小结如下: