重庆网站建设 制作 设计 优惠价,腾讯广告推广平台,网站关键词设置,网页设计需要学什么k文章目录媒体接入控制媒体接入控制-静态划分信道随机接入 CSMACD协议随机接入 CSMACA协议MAC地址MAC地址作用MAC地址格式MAC地址种类MAC地址的发送顺序单播MAC地址广播MAC地址多播MAC地址随机MAC地址IP地址区分网络编号IP地址与MAC地址的封装位置转发过程中IP地址与MAC地址的变…
文章目录媒体接入控制媒体接入控制-静态划分信道随机接入 CSMACD协议随机接入 CSMACA协议MAC地址MAC地址作用MAC地址格式MAC地址种类MAC地址的发送顺序单播MAC地址广播MAC地址多播MAC地址随机MAC地址IP地址区分网络编号IP地址与MAC地址的封装位置转发过程中IP地址与MAC地址的变化情况ARP协议集线器与交换机的区别以太网交换机自学习和转发帧的流程以太网交换机的生成树协议STP虚拟局域网VLAN虚拟局域网VLAN概述虚拟局域网VLAN的实现机制媒体接入控制 如图所示这是一根同轴电缆有多台主机连接到这根同轴电缆上他们共享这跟传输媒体形成了一个总线型的局域网各主机竞争使用总线随机的在信道上发送数据如果恰巧有两个或更多的站点在同一时刻发送数据那么信号在共享媒体上就要产生碰撞即发生了冲突使得这些站点的发送都失败。例如主机c和主机d同时使用总线来发送数据这必然会产生所发送信号的碰撞。
共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用也就是媒体接入控制MAC也可以读作Mark。
媒体接入控制技术的分类如下 需要注意的是随着技术的发展交换技术的成熟和成本的降低具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网但由于无线信道的广播天性无线局域网仍然使用的是共享媒体技术
媒体接入控制-静态划分信道
首先我们介绍媒体接入控制的其中一类方法也就是静态划分信道。
我们首先介绍信道复用的基本概念。复用是通信技术中的一个重要概念也就是通过一条物理线路同时传输多路用户的信号。当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽
如图所示这是三对用户各自使用一条独立的物理线路进行通信如果在发送端使用复用器在接收端在使用分用器这三段用户就可以共享一条物理线路进行通信。 常见的信道复用技术有
频分复用fdm时分复用tdm波分复用wdm码分复用CDM 频分复用
首先来看频分复用如图所示将传输线路的平台资源划分成多个子频带形成多个子信道各子信道之间需要留出隔离频1带以免造成子信道间的干扰。当多路信号输入一个多路复用器时这个复用器将每一路信号调制到不同频率的载波上接收端由相应的分用器通过滤波将各路信号分开将合成的复用信号恢复成原始的多路信号。很显然频分复用的所有用户同时占用不同的频带资源并行通信 时分复用
再来看时分复用。如图所示横坐标为时间将时间划分成一个个的时隙时分复用技术将传输线路的带宽资源按时隙轮流分配给不同的用户每对用户只在所分配时隙里使用线路传输数据。
时分复用技术将时间划分成了一段段等长的时分复用帧每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。如图所示每一个用户所占用的时隙是周期性出现的其周期就是时分复用帧的长度很显然时分复用的所有用户在不同的时间占用同样的频带宽度。 波分复用
再来看波分复用波分复用其实就是光的频分复用如图所示
这是8路传输速率均为2.5g比特每秒的光载波其波长均为1310纳米经光调制后分别将波长变换到1550~1561.2纳米每个光载波相隔1.6纳米这8个波长很接近的光载波经过光复用器或称合波器就在一根光纤中传输因此在一根光纤上数据传输的总速率就达到了8*2.5g比特每秒也就等于20g比特每秒光信号传输一段距离后会衰减因此对衰减了的光信号必须进行放大才能继续传输。现在已经有了很好的掺铒光纤放大器两个光纤放大器之间的光缆线路长度可达120公里而光复用器和光分用器或称分拨器之间可以放入4个掺铒光纤放大器使得光复用器和光分用器之间的无光电转换的距离可达600公里。 码分复用 我们来举例说明假设只派给码分多址系统中某个站点的码片序列为0001 1011该站发送比特1就是发送自己的码片序列0001 1011。该站发送比特0就是发送自己的码片序列的二进制反码1110 0100。
为了方便我们按惯例将码片序列中的0写为-11写为正1则该站点的马片序列是-1 -1-1、1、 1、1、-1、1。顺便提一下这种通信方式称为直接序列扩频DSSS。
码片序列的挑选原则如下: 分配给每个站的码片序列必须各不相同实际常采用每随机码序列。 分配给每个站的码片序列必须相互正交也就是规格化内积为零。 正交就是规格化内积为0相关计算公式上图中已经显示。 然后我们来看一道习题融会贯通一下 接下来我们来看码分多址的应用举例 假设ABCD是码分多址系统中的4个站点a站发送比特1也就是发送自己所分配到的码片序列。为了简单起见我们用向量a来表示a站的码片序列b站发送比特0也就是发送自己所分配到的码片序列的二进制反码。我们用b法反来表示b站的码片序列的二进制砝码。c站没有发送数据显然 d站可以接收到a站和b站所发送信号的叠加信号。
假设系统中的各站所发送的码片序列都是同步的接收站d知道其他各站点或特有的码片序列则接收站d对所接收到的叠加信号可以进行判断
要判断a站是否发送数据所发送的是比特0还是比特1可将收到的叠加信号的码片向量与a站自身的码片向量进行规格化内机运算。根据我们之前就给出过的参考公式和计算出结果为1。同理要判断b站和将收到的叠加信号的码片向量与b站自身的码片向量进行规格化内机运算可计算出结果为-1。要判断c站可将收到的叠加信号的码片向量与c站自身的码片向量进行规格化内积运算可计算出结果为0。
从上述计算结果可以看出计算结果为数值1被判断方发送了比特1计算结果为数值-1被判断方发送了比特0计算结果为数值0被判断方未发送数据 我们基于上述方法来做一个练习 结果 最后小结一下
随机接入 CSMACD协议
接下来我们介绍随机接入它属于媒体接入控制的另一类方式即动态接入控制。
如图所示多个主机连接到一根总线上各主机随机发送帧。当两个或多个主机同时发送帧时代表帧的信号就会产生碰撞或称为冲突又或者当某个主机正在使用总线发送帧的过程中另一台主机也要发送帧这同样也会产生碰撞。
很显然如何协调总线上各主机的工作尽量避免产生碰撞是一个必须要解决的重要问题。早期的共享式以太网采用载波监听/多址接入碰撞检测也就是CSMA/CD协议来解决该问题。
我们来具体看看这个协议: 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就可检测到本次发送是否遭受了碰撞。 接下来我们介绍最小帧长的概念假设主机A正在给主机D发送一个很短的帧边发送边检测碰撞主机A很快就将该帧发送完毕了之后就不再针对该帧检测碰撞。在该帧的传输过程中主机C也要发送帧主机C检测到总线空闲96比特时间后就立即发送帧尽管总线实际上并不空闲这必然会产生碰撞主机D最终会收到主机A发送的并遭遇碰撞的帧主机D会将该帧丢弃但对于主机A而言他并不知道自己已发送完毕的该帧在总线上传输的过程中遭遇了碰撞因此不会重发该帧很显然使用CSMACD协议的以太网的帧长不能太短 前面说过如果发生碰撞那么碰撞检测的信号一定会在争用期内发回来 既然以太网规定了最小帧长那么是否还规定了最大帧长
我们来举例说明假设主机A正在给主机D发送一个很长的帧
这会使得主机A长时间占用总线而总线上的其他主机迟迟拿不到总线的使用权另外由于帧很长还可能导致主机D的接收缓冲区无法装下该帧而产生溢出
因此以太网的帧长应该有其上限
例如下图是以太网版本二的MAC格式以及插入VLAN标记字段后的802.1Q帧 接下来我们通过一张图理解退避时间的计算方法也就是截断二进制指数退避算法 接下来我们来讨论一下使用CSMA/CD协议的共享式以太网的信道利用率。
如图所示横坐标为时间总线上的某个主机可能发生多次碰撞进行多次退避后成功发送了一个帧帧的发送时延即为T0。在最极端的情况下源主机在总线的一端而目的主机在总线的另一端因此还要经过一个单程端到端的传播实验T后总线才能完全进入空闲状态。因此发送一帧所需的平均时间为多个争用期2T加上一个帧的发送时延T0再加上一个单程端到端的传播时延T
考虑以下这种理想情况各主机发送帧都不会产生碰撞总线一旦空闲就有某个主机立即发送帧因此这部分时间就不存在了。发送一帧所占用总线的时间为T0加上T而帧本身的发送时间为T0这样就可得出极限信道利用率的表达式将分子分母同除以T0将T除以T0系为参数A为了提高性到利用率参数A的值应尽量小要使参数A的值尽量小则T的值应该尽量小这意味着以太网端到端的距离应受到限制不应太长而T0的值应当尽量大这意味着以太网的帧长应尽量大一些。 接下来我们给出CSMACD协议的帧发送流程图: 再来看CSMACD协议的帧接收流程图:
我们来看几道题 内容小结如下需要提醒大家注意的是CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中现在的以太网基于交换机和全双工连接不会有碰撞因此没有必要使用CSMA/CD协议
随机接入 CSMACA协议
这里我们介绍无线局域网使用的媒体接入控制协议CSMA/CA也就是载波监听多址接入/碰撞避免。请大家思考一下既然CSMA/CD协议已经成功的应用于使用广播信道的有线局域网那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议
在无线局域网中仍然可以使用载波监听多址接入(CSMA)即在发送帧之前先对传输媒体进行载波监听若发现有其他站在发送帧就推迟发送以避免发生碰撞。
但是在无线局网中不能使用碰撞检测CD原因如下:
由于无线信道的传输条件特殊其信号强度的动态范围非常大无线网卡上接收到的信号强度往往会远远小于发送信号的强度可能相差百万倍。如果要在无线网卡上实现碰撞检测对硬件的要求非常高即使能够在硬件上实现无线局域网的碰撞检测功能但由于无线电波传播的特殊性例如存在隐蔽站问题进行碰撞检测的意义也不大
如图所示这里有4个无线站点A的信号范围可以覆盖到B但不能覆盖到CC的信号范围可以覆盖到B但不能覆盖到A。换句话说A和C都检测不到对方的无线信号当A和C都要给B发送帧时就会产生碰撞但A和C无法检测到碰撞这种未能检测出信道上其他站点信号的问题叫做隐蔽站问题
而同样使用广播信道的有线局域网就不存在这样的问题。例如总线上某个主机发送的信号最多经过一个总线端到端传播时延就会被总线上的各主机接收到而总线上产生的碰撞信号最多经过一个总线端到端往返传播时延也会传遍总线。 因此802.11无线局域网使用CSMA/CA协议在CSMA的基础上增加了一个CA也就是碰撞避免功能而不再实现CD也就是碰撞检测功能。由于不可能避免所有的碰撞并且无线信道误码率较高。802.11标准还使用了数据链路层确认机制具体为停止-等待协议来保障数据被正确接收802.11的MAC层标准定义了两种不同的媒体接入控制方式
一种是分布式协调功能DCF在DCF方式下没有中心控制站点每个站点使用CSMA/CA协议通过争用信道来获取发送权这是802.11定义的默认方式。另一种是点协调功能PCF。PCF方式使用集中控制的接入算法一般在接入点AP实现集中控制是802.11定义的可选方式在实际中较少使用。 然后我们通过下面一张图了解一下帧间间隔IFS
接下来我们来举例说明CSMACA协议的工作原理
如图所示这些是无线站点横坐标为时间。假设无线信道是空闲的源站有数据帧要发送当源站检测到信道空闲则在等待帧间间隔DIFS后发送该数据帧。目的站若正确收到该数据帧则经过帧间间隔SIFS后向源站发送确认帧ACK。
需要说明的是若源站在规定时间内没有收到确认帧ACK由重传计时器控制这段时间就必须重传该数据帧直到收到确认为止或者经过若干次的重传失败后放弃发送。 请大家思考一下源站为什么在检测到信道空闲后还要在等待帧间间隔DISS后才发送数据帧
这就是考虑到可能有其他的站有高优先级的帧要发送若有就让高优先级帧先发送
那么目的站又是为什么在正确接收数据之后还要再等待一段时间SIFS才能发送ACK帧
SIFS是最短的帧间间隔用来分割开属于一次对话的各个帧。在这段时间内一个站点应当能够从发送方式切换到接收方式。
如图所示在源站和目的站的一次对话过程中无线信道处于忙状态若无线信道处于忙状态时其他无线站点要发送数据则必须退避。当信道从忙状态转换到空闲状态并经过帧间间隔DIFS后其他要发送数据的无线站点需要退避一段随机时间后才能发送。 那么既然信道已经由忙转为空闲且经过中间间隔DIFS后为什么还要退避一段随机时间才能使用信道而不是立即使用信道
这样做的目的在于防止多个站点同时发送数据而产生碰撞 这里的DIFS同样也是为了让优先级高的先行
当站点检测到信道是空闲的并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧(也就是说刚开始发)则不使用退避算法
而以下情况必须使用退避算法 在发送数据帧之前检测到信道处于忙状态时必须使用退避算法 在每一次重传一个数据帧时必须使用退避算法 在每一次成功发送后要连续发送下一个帧时必须使用退避算法这是为了避免一个站点长时间占用信道。 下面我们来介绍CSMA/CA协议的退避算法。
我们来举例说明DSMA/CA协议的退避算法如图所示 ABCDE是5个无线站点横坐标为时间
假设A正在占用无线信道发送帧在A的发送过程中BCD也要发送帧我们用向上的箭头来表示于是进行载波监听发现信道忙需要退避根据退避算法选择出一个随机的退避时间并在每个时隙对信道进行一次检测。当检测到信道由忙状态转为空闲状态且经过帧间间隔DIFS后退避计时器开始倒计时。假设C的退避时间最短(退避时间一到是可以直接发送帧的而检测到信道空闲之后是必须要等一个DIFS才能发送帧的这要区分清楚)当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号还必须再退避一段随机时间后才能发送。 接下来我们介绍CSMA/CA协议的信道预约和虚拟载波监听。 除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的干扰
本节课的内容小结如下
MAC地址
MAC地址是以太网的MAC层所使用的地址IP地址是tcpip体系结构网系层所使用的地址。ARP协议属于tcpip体系结构的网际层其作用是已知设备所分配到的IP地址使用ARP协议就可以通过该IP地址获取到设备的MAC地址。从网络体系结构的角度来看MAC地址属于数据链路层的范畴IP地址和ARP协议属于网际层的范畴。尽管IP地址和ARP协议属于TCP体系结构的网际层而不属于数据链路层但是它们与MAC地址存在一定的关系并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议。因此我们将这三者放在一起讨论。
MAC地址作用
如图所示两台主机通过一条链路通信很显然他们不需要使用地址就可以通信因为连接在信道上的主机只有他们两个。换句话说是用点对点信道的数据链路层不需要使用地址。 再来看使用共享信道的总线型局域网总线上的某台主机要给另一台主机发送帧表示帧的信号通过总线会传送到总线上的其他所有主机。那么这些主机如何判断该帧是否是发送给自己的呢
很显然使用广播信道的数据链路层必须使用地址来区分各主机也就是说当多个主机连接在同一个广播信道上要想实现两个主机之间的通信则每个主机都必须有一个唯一的标识。即一个数据链路层地址。
如图所示假设总线上各主机的地址分别用一个不同的大写字母来表示在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制的写英文缩写词为MAC可以读作MAC因此这类地址被称为MAC地址。
如图所示这是主机c要发送给主机d的帧则在帧首部中的目的地址字段应填入主机D的MAC地址而在源地址字段应填入主机c自己的MAC地址这样总线上其他各主机收到该帧后就可以根据帧首部中的目的地址字段的值是否与自己的MAC地址匹配进而丢弃或接受该帧。 MAC地址一般被固化在网卡的电可擦可编程只读存储器EEPROM中因此 MAC地址也被称为硬件地址如图所示这是一块PCI接口的千兆以太网卡
MAC地址有时也被称为物理地址例如在windows系统中但请大家注意这并不意味着MAC地址属于网络体系结构中的物理层。
一般情况下用户主机会包含两个网络适配器一个是有线局域网试配器也就是有线网卡另一个是无线局域网试配器也就是无线网卡。每个网络适配器都有一个全球唯一的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地址大家可自行在网上搜索。 另外我们可以在IEEE的官方网站查看已分配的组织唯一标识符OUI这是具体的网址standards-oui.ieee.org/oui/oui.txt(opens new window)
可以看到30-fB-B8这个oui已被分配给华为科技有限公司而a4-45-19这个oui已被分配给小米通信有限公司。 如果我们知道设备的MAC地址而不知道该设备的厂商信息可以通过设备的MAC地址来查询有很多网站都提供这样的免费查询服务。
MAC地址种类 请大家思考一下我们每个人一般会拥有几个全球管理的单波MAC地址、台式机、笔记本电脑、平板电脑、智能手机等设备上的以太网接口、WiFi接口、蓝牙接口都分配有全球单波的MAC地址而每台交换机和路由器都拥有多个网络接口也就拥有多个全球单播的MAC地址。那么在我们有生之年是否会看到EUI-48地址空间耗尽 对于使用EUI-48地址空间的应用程序IEEE的目标寿命为100年也就是直到2080年但现在鼓励采用EUI-64作为替代 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个比特可以看到最低比特位是1这就表明该地址是多播地址。 这里给大家介绍一个快速判断MAC地址是否是多播地址的方法也就是如果该位16进制数不能整除2即1、3、5、7、9、b、d、f则该地址就是多播地址。 假设主机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地址技术
内容小结
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知道应该把数据包转发给r2R1知道R2相应接口的IP地址为IP5但不知道其对应的MAC地址是什么路由器r2知道应该把数据包传给主机h2r2知道h2的IP地址为IP2但不知道其对应的MAC地址是什么 有的同学可能会对这部分内容产生疑问请大家目前先权且这么认可我们将在后续的网络层这一章详细介绍。 对于本地主机h1、路由器r1和r2都存在一个共同的问题那就是知道IP地址但不知道其相应的MAC地址如何通过IP地址找出其对应的MAC地址这是我们下面将要介绍的地址解析协议ARP所要实现的功能。
内容小结如下
ARP协议
前面我们提出了这样一个问题那就是如何通过IP地址找到其相应的IP地址这就是我们将要介绍的地址解析协议ARP所要实现的主要功能。
下面我们就来举例说明 ARP协议的工作原理这是一个共享总线型的以太网为了简单起见我们只画出了该网络中的三台主机各主机所配置的IP地址和其网卡上固化的MAC地址如图所示 假设主机b要给主机c发送数据包主机b知道主机c的IP地址但不知道它的MAC地址因此主机b的数据链路层在封装MAC帧时就无法填写目的MAC地址字段进而也就无法构建出要发送的MAC帧。 实际上每台主机都会有一个ARP高速缓存表例如这是主机b的ARP高速缓存表ARP高速缓存表中记录有IP地址和MAC地址的对应关系。例如这是主机b之前获取到的主机a的IP地址与MAC地址的对应关系。在本例中当主机b要给主机c发送数据包时会首先在自己的ARP高速缓存表中查找主机c的IP地址所对应的MAC地址但未找到因此主机b需要发送ARP请求报文来获取主机c的MAC地址 Arp请求报文的内容是我的IP地址为192.168.0.2我的MAC地址为00e0f9a34377我想知道IP地址为192.168.0.3的主机的MAC地址。
需要说明的是为了简单起见这里我们以比较通俗的语言来描述ARP请求报文的内容但实际上 ARP请求报文有其具体的格式。另外需要大家注意的是 ARP请求报文被封装在MAC帧中发送目的地址为广播地址。
主机b发送封装有ARP请求报文的广播帧总线上的其他主机都能收到该广播帧主机a的网卡收到该广播帧后将其送交上层处理。上层的ARP进程解析ERP请求报文发现所询问的IP地址不是自己的IP地址因此不予理会。主机c的网卡收到该广播之后将其上交上层处理上层的ARP进程解析ARP请求报文发现所询问的IP地址正是自己的IP地址需要进行响应主机c首先将ARP请求报文中所携带的主机b的IP地址与MAC地址记录到自己的ARP高速缓存表中然后给主机b发送ARP响应报文以告知自己的MAC地址。 ARP响应报文的内容是我的IP地址是192.168.0.3我的MAC地址为00-0c-Cf-b8-4a-82需要注意的是ARP响应报文被封装在MAC帧中发送目的地址为主机b的MAC地址主机c给主机b发送封装有ARP响应报文的单播帧总线上的其他主机都能收到该单播帧
主机a的网卡收到该单波针后发现其目的MAC地址与自己的MAC地址不匹配直接丢弃该帧
主机b的网卡收到该单波帧后发现其目的MAC地址就是自己的MAC地址将其交付上层处理。
上层的ARP进程解析ERP响应报文将其所包含的主机c的IP地址与MAC地址记录到自己的ARP高速缓存表中 主机b现在可以给主机c发送之前发送的数据包了ARP高速缓存表中的每一条记录都有其类型类型分为动态和静态两种
动态类型是指记录是主机自动获取到的其生命周期默认为两分钟当生命周期结束时该记录将自动删除。这样做的原因是IP地址与MAC地址的对应关系并不是永久性的。例如当主机的网卡坏了更换新的网卡后主机的IP地址并没有改变但主机的MAC地址改变了。静态类型是指记录是用户或网络维护人员手工配置的。不同操作系统下的生命周期不同例如系统重启后不存在或在系统重启后依然有效。 接下来请大家思考一下在下图所示的网络拓扑中主机h1是否可以使用ARP协议获取到主机h2的MAC地址
回答是否定的ARP协议只能在一段链路或一个网络上使用而不能跨网络使用。对于本例ARP协议的使用是逐段链路进行的。
MAC地址IP地址以及ARP协议的总结如下
需要说明的是除ARP请求和响应报文外ARP还有其他类型的报文例如用于检查IP地址冲突的无故ERP或称免费ERP。另外 ARP协议没有安全验证机制存在ARP欺骗或攻击等问题。 集线器与交换机的区别
我们首先来看早期的总线型以太网他最初使用粗铜轴电缆作为传输媒体后来演进到使用价格相对便宜的细同轴电缆。
当初认为这种连接方法既简单又可靠因为在那个时代普遍认为有源器件不可靠而无缘的电缆线才是最可靠的。然而这种使用无源、电缆和大量机械接头的总线型以太网并不像人们想象的那么可靠。 后来以太网发展出来了一种使用大规模集成电路可靠性非常高的设备叫做集线器并且使用更便宜更灵活的双绞线。作为传输媒体如图所示这是一个使用集线器和双脚线电缆互联了4台主机的新型拓扑的以太网。主机中的以太网卡以及极限器各接口使用RJ-45插座它们之间通过双绞线电缆进行连接在双脚线电缆的两端是RJ-45插头也就是我们俗称的水晶头。
实践证明使用双绞线和集线器比使用具有大量机械接头的无源电缆要可靠的多并且价格便宜使用方便。因此粗缆和细缆以太网早已成为了历史从市场上消失了 使用集线器的以太网虽然物理拓扑是星型的但在逻辑上仍然是一个总线网各站共享逻辑上的总线资源使用的还是csma/cd协议集线器只工作在物理层它的每个接口仅简单的转发比特不进行碰撞检测碰撞检测的任务由各站的网卡负责。
在分析问题时我们可将集线器简单看作是一条总线集线器一般都有少量的容错能力和网络管理功能。例如若网络中某个网卡出现了故障不停的发送帧此时集线器也可以检测到这个问题在内部断开与出故障网卡的连线使整个以太网仍然能正常工作。
使用集线器可以对以太网进行扩展。由于集线器只工作在物理层所以更具体的说法是使用集线器在物理层扩展以太网。我们来举例说明假设某学院下设三个系部每个系部都有一个使用集线器作为互联设备的以太网这三个以太网相互独立各自共享自己的总线资源是三个独立的碰撞域或称冲突域。 例如一系中的某台主机给另一台主机发送数据帧由于总线特性表示该数据帧的信号会传输到一系中的其他各主机
二系中的多台主机同时发送数据帧由于总线特性这必然会产生信号碰撞碰撞后的信号会传输到二系中的各主机。
为了使各系部的以太网能够相互通信可再使用一个集线器将它们互联起来。这样原来三个独立的以太网就要互联成为了一个更大的以太网而原来三个独立的碰撞域就要合并成了一个更大的碰撞域。换句话说形成了一个更大的总线型以太网。比如一系中的某台主机给二系中的某台主机发送数据帧由于总线特性表示该数据帧的信号会传输到整个网络中的其他各主机 在集线器之后发展出了更先进的网络互联设备也就是以太网交换机。我们先从一个典型的例子来看看以太网交换机与集线器的区别
使用集线器互联而成的共享总线式以太网上的某个主机要给另一个主机发送单播帧该单播帧会通过共享总线传输到总线上的其他各个主机使用交换机互联而成的交换式以太网上的某个主机要给另一个主机发送播帧针该单波帧进入交换机后交换机会将该单波帧转发给目的主机而不是网络中的其他各个主机。 很显然交换机具有明显的优势需要说明的是为了简单起见这里所有举例的前提条件是忽略ARP过程并假设交换机的帧交换表已经学习或配置好了。
以太网交换机通常都有多个接口每个接口都可以通过双绞线电缆与一台主机或另一个以太网交换机相连一般都工作在全双工方式也就是发送帧和接收帧可以同时进行。 注意使用集线器的以太网在逻辑上是共享总线的需要使用csma/cd协议来协调各主机征用总线只能工作在半双工模式也就是收发帧不能同时进行。以太网交换机具有并行性能同时连通多对接口使多对主机能同时通信而无碰撞。 以太网交换机的接口一般都支持多种速率例如10兆比特每秒100兆比特每秒1G比特每秒10G比特每秒等。以太网交换机工作在数据链入层当然也包括物理层他收到帧后在帧交换表中查找帧的目的MAC地址所对应的接口号然后通过该接口转发帧 假设这是该交换机的帧交换表主机a给主机b发送数据帧交换机收到该帧后在帧交换表中查找该帧的目的MAC地址也就是主机b的Mark地址发现应该从接口2转发于是就从接口2将该帧转发出去
以太网交换机是一种即插即用的设备上电即可工作。其内部的帧交换表是通过自学习算法自动的逐渐建立起来的。
许多以太网交换机对收到的帧采用存储转发方式进行转发但也有一些交换机采用直通交换方式
直通交换不必把整个帧先缓存后再进行处理而是在接收帧的同时就立即按帧的目的MAC地址决定该帧的转发接口因而提高了帧的转发速率。一般采用基于硬件的交叉矩阵这样交换时延就非常小但直通交换的一个缺点他不检查帧是否有差错就直接将帧转发出去。 接下来我们再通过举个例子进一步对比集线器和交换机。
我们首先来对比主机发送单播帧的情况 对于使用集线器的共享总线型以太网单播帧会传播到总线上的其他各主机各主机中的网卡根据帧的目的MAC地址决定是否接受该帧。 对于使用交换机的交换式以太网交换机收到单播帧之后根据帧的目的MAC地址和自身的帧交换表将帧转发给目的主机而不是网络中的其他各主机。
我们再来对比发送广播帧的情况
对于使用集线器的共享总线型以太网广播帧会传播到总线上的其他各主机各主机中的网卡检测到帧的目的MAC地址是广播地址就接受该帧对于使用交换机的交换式以太网。交换机收到广播帧之后检测到帧的目的MAC地址是广播地址于是从除该帧进入交换机接口外的其他各接口转发该帧网络中除源主机外的其他各主机收到广播帧后接受该广播帧。从本例可以看出使用集线器的共享总线型以太网中的各主机属于同一个广播域而使用交换机的交换式以太网中的各主机也属于同一个广播域。因此对于广播帧的情况从效果上看没有什么区别。
我们再来对比网络中的多台主机同时给另一台主机发送单播帧的情况 对于使用集线器的共享总线型以太网这必然会产生碰撞遭遇碰撞的帧会传播到总线上的各主机 对于使用交换机的交换式以太网交换机收到多个帧时会将它们缓存起来然后逐个转发给目的主机不会产生碰撞。
接下来我们来对比使用集线器扩展以太网 和 使用交换机扩展以太网有什么区别 前提 忽略ARP过程 假设交换机的帧交换表已经学习好了 首先对比发送单播帧的情况这是仅使用集线器扩展以太网后发送单波帧的情况 这是仅使用交换机扩展以太网后发送单播帧的情况很显然交换机具有非常明显的优势 再来对比发送广播帧的情况这是仅使用集线器扩展以太网后发送广播帧的情况这是仅使用交换机扩展以太网后发送广播帧的情况从效果上看是一样的。 可见不管是用集线器还是交换机来扩展以太网扩展后的以太网中的各主机都属于同一个广播域仅使用集线器扩展的以太网在逻辑上仍然是共享总线的并且形成为一个更大的碰撞域。换句话说参与竞争总线的主机比扩展前的更多了这是竞争总线并产生碰撞的一个例子。 同样的传输任务在仅使用交换机扩展的以太网上就不会产生碰撞。 因此如果仅仅使用集线器来扩展以太网不仅会扩大广播域还同时扩大了碰撞域但是如果使用交换机将原来各自独立的碰撞域连接起来只会扩大广播域而不会扩大碰撞域也就是说交换机可以隔离碰撞域 我们将集线器和交换机的区别小结如下需要说明的是工作在数据链路层的以太网交换机其性能远远超过工作在物理层的集线器而且价格并不贵这就使得集线器逐渐被市场淘汰。目前很难在市场上再见到集线器了
以太网交换机自学习和转发帧的流程
这里我们介绍以太网交换机自学习和转发帧的流程
首先我们要注意 以太网交换机工作在数据链路层当然也包括物理层需要说明的是目前市场上也有包含网络层部分功能的交换机称为三层交换机 以太网交换机收到帧后在帧交换表中查找帧的目的MAC地址所对应的接口号然后通过该接口转发帧 以太网交换机是一种即插即用的设备刚上电启动时其内部的帧交换表是空的。随着网络中各主机间的通信以太网交换机通过自学习算法自动逐渐建立起帧交换表。
下面我们来举例说明以太网交换机自学习和转发帧的流程。如图所示相互连接的两台以太网交换机各自连接了三台主机构成了一个交换式以太网。为了简单起见各主机中网卡上固化的MAC地址仅用一个大写字母表示各主机互不相同。为了将重点放在以太网交换机自学习和转发帧的流程上我们假设各主机已经知道了网络装其他各主机的MAC地址换句话说不需要首先通过ARP来获取目的主机的MAC地址。 假设主机A给主机B发送帧该帧从交换机1的接口1进入交换机1交换机1首先进行登记的工作将该帧的源MAC地址A记录到自己的帧交换表中将该帧进入自己的接口的接口号1相应的也记录到帧交换表中上述登记工作就称为交换机的自学习。 之后交换机1对该帧进行转发该帧的目的MAC地址是B在帧交换表中查找MAC地址B找不到于是对该帧进行盲目的转发也称为泛洪也就是从除该帧进入交换机接口外的其他所有接口转发该帧可以看出交换机一开始还是比较笨的他还没有足够的知识来明确转发帧只能进行盲目的转发。 主机B的网卡收到该帧后根据帧的目的MAC地址B就知道这是发送给自己的帧于是就要接受该帧。 主机C的网卡收到该帧后根据帧的目的MAC地址B就知道这不是发送给自己的帧于是就丢弃该帧。 该帧从交换机2的接口二进入交换机2交换机2首先进行登记的工作将该帧的源MAC地址A记录到自己的帧交换表中将该帧进入自己的接口的接口号2相应的也记录到帧交换表中。 之后交换机2对该帧进行转发该帧的目的MAC地址是B在帧交换表中查找MAC地址B找不到于是对该帧进行盲目的转发主机DEF都会收到该帧根据帧的目的MAC地址B就知道这不是发送给自己的帧于是丢弃该帧。 接下来主机B给主机A发送帧该帧从交换机1的接口3进入交换机1交换机1首先进行登记的工作将该帧的源MAC地址B记录到自己的帧交换表中将该帧进入自己的接口的接口号3相应的也记录到帧交换表中。 之后交换机1对该帧进行转发该帧的目的MAC地址是A在帧交换表中查找MAC地址A可以找到于是按照MAC地址A所对应的接口号1从接口1转发该帧这是明确的转发。 主机A的网卡收到该帧后根据帧的目的MAC地址A就知道这是发送给自己的帧于是接受该帧很显然交换机2不会收到该帧。
接下来主机E给主机A发送帧该帧从交换机2的接口3进入交换机2交换机2首先进行登记的工作之后交换机2对该帧进行转发该帧的目的MAC地址是A在帧交换表中查找MAC地址A可以找到于是按照MAC地址A所对应的接口号2从接口2转发该帧这是明确的转发该帧从交换机1的接口4进入交换机1交换机1首先进行登记的工作之后交换机1对该帧进行转发该帧的目的MAC地址是A在帧交换表中查找MAC地址A可以找到于是按照MAC地址A所对应的接口号1从接口1转发该帧这是明确的转发。
主机A的网卡收到该帧后根据帧的目的MAC地址A就知道这是发送给自己的帧于是接受该帧。 我们再来看看以太网交换机丢弃帧的情况为了演示该情况我们给交换机1的接口1再连接一台主机G为了简单起见没有画出集线器这样主机A主机G交换机1的接口1就共享同一条总线. 假设主机G给主机A发送帧该帧通过总线进行传输主机A和交换机1的接口1都可以收到主机A的网卡收到该帧后根据帧的目的MAC地址A就知道这是发送给自己的帧于是接受该帧。交换机1收到该帧后首先进行登记工作之后交换机1对该帧进行转发该帧的目的MAC地址是A在帧交换表中查找MAC地址A可以找到MAC地址A所对应的接口号是1但是该帧正是从接口1进入交换机1的交换机1不会再从该接口将该帧转发出去因为这是没有必要的于是丢弃该帧很显然交换机2不会收到该帧.
随着网络中各主机都发送了帧后网络中的各交换机就可以学习到各主机的MAC地址以及他们与自己各接口的对应关系。
需要注意的是帧交换表中的每条记录都有自己的有效时间到期自动删除。请大家想想看这是为什么呢好不容易学习来的记录为什么要到期自动删除这不是多此一举吗
这是因为MAC地址与交换机接口的对应关系并不是永久性的例如交换机某接口所连接的主机更换成了另一台主机又或者主机中的网卡坏了更换了新的网卡这些情况都会导致MAC地址与交换机接口的对应关系的改变。
相信大家还记得我们曾经介绍过的ARP高速缓存表表中的IP地址与MAC地址的对应关系记录也是会定期自动删除的这是因为IP地址与MAC地址的对应关系也并不是永久性的。
内容小结如下:
以太网交换机的生成树协议STP
请大家思考一下应该如何提高以太网的可靠性呢例如如图所示的以太网由三台交换机互联而成每个交换机上都连接有一些主机为了简单起见我们只画出了每个交换机上连接的一台主机
如果交换机A与B之间的链路出现了故障则交换机B上连接的所有主机既无法与交换机A上连接的所有主机进行通信也无法与交换机C上连接的所有主机进行通信。
如果交换机A与交换机B和C之间的链路都出现了故障则原来的以太网变成了三个独立的较小的以太网他们之间无法通信
相信很多同学已经想到了可以通过添加冗余链路的方法来提高以太网的可靠性。
例如在本例中我们给交换机B和C之间添加一条冗余链路后即使交换机A和B之间的链路出现了故障整个网络还是连通的但是冗余链路也会带来负面效应那就是形成网络环路。网络环路会带来一些问题。例如广播风暴我们来举例说明 很显然该广播帧将在各交换机之间反复转发分别按顺时针和逆时针方向同时兜圈这就是所谓的广播风暴广播风暴会大量消耗网络资源使得网络无法正常转发其他数据帧也会使主机反复收到广播帧大量消耗主机资源还会使交换机的帧交换表震荡漂移
如图所示这是交换机B的帧交换表这是其各接口的接口号。为了简单起见假设各主机的名称也可作为其MAC地址 当交换机B收到主机H1发送的广播帧后进行登记工作将帧的源MAC地址H1和帧进入交换机B的接口号1登记到帧交换表中这条记录是正确的。 当交换机B再次收到交换机C转发来的该广播帧后进行登记工作将帧的源MAC地址H1和帧进入交换机B的接口号2这条错误记录登记到帧交换表中并删除原先正确的记录。 当交换机B再次收到交换机A转发来的该广播帧号进行登记工作将帧的源MAC地址H1和帧进入交换机B的接口号3这条错误记录登记到帧交换表中并删除原先错误的记录。 当交换机B再次收到交换机C转发来的该广播帧后进行登记工作将帧的源MAC地址H1和帧进入交换机B的接口号2这条错误记录登记到帧交换表中并删除原先错误的记录。很显然有关MAC地址H1的记录将在这两个错误记录之间反复震荡 注意 交换机不会改变帧中的MAC地址经过路由器才会改变MAC地址。跨网段才会改变MAC地址。 为了可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。以太网交换机使用生成树协议其英文缩写词为STP。不论交换机之间采用怎样的物理连接使用生成树协议的交换机都能够自动计算并构建出一个逻辑上没有环路的网络其逻辑拓扑结构必须是树形的也就是没有逻辑环路。
我们来举例说明如图所示为了提高可靠性5台交换机之间进行了冗余连接冗余链路不止一条网络环路也不止一个。为了简单起见各交换机上连接的主机没有画出。我们用绿色的小圆圈表示交换机的接口状态为正常状态用橙色的小方块表示交换机的接口状态为阻塞状态用红色的叉表示出现了故障如果各交换机的各接口都处于正常状态则会存在多个网络环路。实际上各交换机之间按照生成树协议中规定的生成树算法交互一些参数后就可以判断出自己应该阻塞自己的哪些接口。例如图中所示这样就会形成一个逻辑上没有环路的网络如图所示。
当然这个逻辑上没有环路的网络一定要确保联通整个网络否则就没有意义了。当首次连接交换机或网络物理拓扑发生变化时这有可能是人为改变造成的也有可能是出现故障造成的交换机都将进行生成树的重新计算。例如假设某段链路出现了故障相关交换机检测到该故障后重新计算生成树决定将自己之前阻塞的接口恢复为正常状态这样就会形成一个新的逻辑上没有环路的网络。
虚拟局域网VLAN
虚拟局域网VLAN概述
以太网交换机工作在数据链路层也包括物理层使用一个或多个以太网交换机互联起来的交换式以太网其所有站点都属于同一个广播域。
随着交换式以太网规模的扩大广播域相应扩大如图所示这是一个由多个以太网交换机互联而成的交换式以太网。每个以太网交换机上都连接了多个主机形成了一个巨大的广播域。 然而巨大的广播域会带来很多弊端例如广播风暴、难以管理和维护潜在的安全问题等。
我们来举例说明广播风暴的问题假设网络中的某个主机要给另一个主机发送一个数据帧但是在自己的ARP高速缓存表中无法查到目的主机的MAC地址于是首先要发送ARP广播请求来获取目的主机的MAC地址。该ARP广播请求会传遍整个网络网络中的其他所有主机都可以收到该广播 这种情况就是所谓的广播风暴广播风暴会浪费网络资源和网络中各主机的CPU资源因此除非应用需求必须要使用广播否则网络中的主机应尽量不使用广播。
也许有的同学会有这样的想法如果网络中只是偶尔出现广播那还是可以接受的但事实上网络中会频繁出现广播信息。目前使用最广泛的tcpip协议当中的很多协议都会使用广播例如地址解析协议ARP路由信息协议rap动态主机配置协议dhcp等。除此之外其他一些协议站也会频繁使用广播 那么如何才能将较大的广播域分割成更小的广播域使用路由器就可以隔离广播域
如图所示这是由两台以太网交换机互联而成的交换式以太网。网络中的各主机同属于一个广播域使用路由器可以将该广播域分割成两个较小的广播域。路由器工作在网络体系结构的第三层也就是网络层。 由于路由器默认情况下不对广播数据包进行转发因此路由器很自然的就可以隔离广播域。然而路由器的成本较高局域网内部全部使用路由器来隔离广播域是不现实的。
在这种情况下虚拟局域网技术应运而生虚拟局域网的英文缩写词为VLAN它是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术。这些逻辑组具有某些共同的需求。
如图所示一楼、二楼、三楼分别有一个局域网可将他们通过另外一个交换机互联成一个更大的局域网那么原来每一个局域网成为现在局域网的一个网段网络中的各主机属于同一个广播域某个主机发送到广播数据包其他所有主机都可以收到。
根据应用需求我们将该局域网划分成两个VLANVLAN1和VLAN1。此后VLAN1中的广播数据包不会传送到VLAN2VLAN2中的广播数据包也不会传送到VLAN1也就是说同一个VLAN内部可以广播通信不同VLAN之间不能广播通信 小结
虚拟局域网VLAN的实现机制
这里我们介绍虚拟局域网VLAN的实现机制虚拟局域网VLAN是在交换机上实现的需要交换机能够实现以下两大功能
一个是能够处理带有VLAN标记的帧也就是IEEE 802.1Q帧另一个是交换机的各端口可以支持不同的端口类型不同端口类型的端口对帧的处理方式有所不同
我们首先来看 IEEE802.1q帧也称为dot one q帧。他对以太网的MAC帧格式进行了扩展插入了四字节的VLAN标记如图所示
VLAN标记的最后12个比特称为VLAN标识符VID它唯一的标识了以太网帧属于哪一个VLAN Vid的取值范围是0~ 4095其中0和4095都不用来表示VLAN因此用于表示VLAN的vid的有效取值范围是1~4094
需要注意的是802.1q帧是由交换机来处理的而不是用户主机来处理的。 当交换机收到普通的以太网帧时会将其插入四字节的VLAN标记将其转变为802.1q帧简称为打标签。 当交换机转发802.1q帧时可能会删除其4字节VLAN标记将其转变为普通以太网帧简称为去标签 VLAN标记字段的其他内容对我们理解VLAN划分机制来说并没有什么帮助因此就不再赘述了。 接下来我们介绍交换机的端口类型交换机的端口类型一般有以下三种它们分别是
AccessTrunkHybrid
需要说明的是思科交换机没有Hybrid端口。在介绍这三种交换机端口类型之前我们首先需要了解一下端口的缺省VLAN ID这个概念在思科交换机上将其称为本征VLAN。例如思科交换机在用户未配置VLAN时所有端口都默认属于VLAN1即所有端口的本帧VLAN都是VLAN1而在华为交换机上将其称为端口VLAN ID剪辑为PVID。 在我们接下来的介绍中为了描述方便我们采用PVID而不是本征VLAN。需要注意的是交换机的每个端口有且仅有一个PVID 接下来我们首先介绍Access端口 我们来举例说明
假设主机A发送了一个广播帧该帧从交换机的端口一进入交换机由于端口1的类型是Access它会对接收到的未打标签的普通以太网MAC帧打标签也就是插入四字节的VLAN标记字段由于端口1的PVID值等于1因此所插入的四字节VLAN记字段中的VID的值也等于1。Access端口的发送处理方法是若帧中的VID与端口的PVID相等则去标签后转发该帧否则不转发。对于本例广播帧中的VID的取值与端口234的PVID取值都等于1因此交换机会从这三个端口对帧进行去标签转发。 再来看这个例子我们的应用需求是将主机A和B划归到VLAN2将C和D划归到VLAN3这样VLAN2中的广播帧不会传送到VLAN3VLAN3中的广播帧也不会传送到VLAN2。
为了实现这种应用可以在交换机上创建VLAN2和VLAN3然后将交换机的端口1和2划归到VLAN2因此端口1和2的PVID值等于2将交换机的端口3和4划归到VLAN3因此端口3和4的PVID值等于3。
我们来看主机A发送广播帧的情况该帧从交换机的端口1进入交换机由于端口1的类型是Access它会对接收到的未打标签的普通以太网MAC帧打标签也就是插入四字节的VLAN标记字段如图所示由于端口1的PVI D值等于2因此所插入的四字节VLAN标记字段中的VID的值也等于2广播帧中的VID的取值与端口二的PVID取值都等于2因此交换机会从端口二对帧进行去标签转发。 我们再来看主机C发送广播帧的情况该帧从交换机的端口三进入交换机由于端口三的类型是Access它会对接收到的未打标签的普通以太网MAC帧打标签也就是插入四字节的VLAN标记字段如图所示由于端口三的PVID值等于3因此所插入的四字节VLAN标记字段中的VID的值也等于3广播帧中的VID的取值与端口4的PVID取值都等于3因此交换机会从端口4对帧进行去标签转发。 接下来我们介绍Trunk端口Trunk端口一般用于交换机之间或交换机与路由器之间的互联使不同交换机的主机可以属于同个VLAN。
Trunk端口可以属于多个VLAN也就是说Trunk端口可以接收和发送多个VLAN的帧用户可以设置Trunk端口的PVID值默认情况下Trunk端口的PVID值为1。
我们来举例说明Trunk端口的功能如图所示两台交换机互联而成了一个交换式以太网我们的应用需求是将主机ABEF划归到VLAN1将主机CDGH划归到VLAN2由于交换机首次上电时默认配置各端口属于VLAN1其相应的PVID值等于1并且端口的类型为Access因此我们需要对交换机进行相应的配置才能满足应用需求分别在两个交换机上创建VLAN2并将他们的端口3和4都划归到VLAN二其相应的PVID值2而两个交换机的端口一和二保持默认配置即可也就是属于VLAN1其相应的PVID值等于1。特别需要注意的是两个交换机互联的端口5需要将他们的类型更改为Trunk类型而他们的PVID值保持默认的1即可。 Trunk端口的发送处理方法是对VID等于PVID的帧去标签再转发。
假设主机A发送了一个广播帧 该帧从交换机一的端口1进入交换机由于端口一的类型是Access它会对接收到的未打标签的普通以太网MAC帧打标签也就是插入四字节的VLAN标记字段。由于端口1的PVID值等于1因此所插入的四字节VLAN标记字段中的VID的值也等于1。该广播帧中的VID的取值与端口二的PVID值都等于1端口二的类型是Access因此交换机一会从端口2对帧进行去标签转发 该广播帧中的VID的取值与端口5的PVID值都等于1端口5的类型是Trunk因此交换机一会从端口5对帧进行去标签转发很显然该广播帧会从交换机2的端口5进入交换机二Trunk端口的接收处理方法是接收未打标签的帧根据接收帧的端口的PVID给帧打标签即插入四字节VLAN标记字段字段中的VID取值与端口的PVID取值相等。对于本例交换机2会对接收到的未打标签的普通以太网MAC帧打标签也就是插入4字节的VLAN标记字段。如图所示由于端口5的PVID值等于1因此所插入的4自字节VLAN标记字段中的VIP的值也等于1 该广播帧中的VID的取决与端口1和2的PVID值都等于1端口1和2的类型都是Access因此交换机1会从端口1和2对帧进行去标签转发。 再来看主机C发送广播帧的情况该帧从交换机1的端口3进入交换机由于端口三的类型是Access它会对接收到的未打标签的普通以太网MAC帧打标签也就是插入四字节的VLAN标记字段。如图所示由于端口3的PVID值2因此所插入的4自字节VLAN标标记字段中的VID的值也等于2该广播站中的VID的取值与端口4的PVI D值都等于2端口4的类型是Access因此交换机1会从端口4对帧进行去标签转发
该广播帧中的VID的取值与端口5的PVID值不相等由于Trunk端口对VID不等于PVID的帧是直接转发的因此交换机1会从端口5对帧直接转发也就是不去掉标签而带着标签直接转发。很显然该802.1Q广播帧会从交换机2的端口5进入交换机2 Trunk端口接收已打标签的802.1Q帧该广播帧中的VID的取值与端口3和4的PVID值都等于2端口3和4的类型都是Access类型因此交换机二会从端口3和4对帧进行去标签转发。
通过本例可以看出在由多个交换机互联而成的交换式以太网装划分VLAN时连接主机的交换机端口应设置为Access类型交换机之间互联的端口应设置为Trunk类型。 接下来请同学们做一个练习题以加深对Access端口和Trunk、端口功能的理解 本节课的内容小结如下