计算机网络——数据链路层

news2025/1/10 2:49:11

数据链路层概述

数据链路层在网络体系结构中所处的地位

image-20221113191546650

主机H1给主机H2发送数据时,需要通过路由器R1通过广域网链路转发到路由器R2,R2转发到主机H2。路由器转发只用到网络层及以下各层。【以上涉及数据包按网络体系结果逐层封装解封】

为了简单起见,当学习数据链路层相关问题时,在大多数情况下,我们可以只关注数据链路层本身而忽略网络体系结构中的其他各层。因此上例就变成了这样:

image-20221113192034129

上述三段不同的数据链路层可能采用不同的数据链路协议。

链路、数据链路和帧

image-20221113192522776

image-20221113192553878

数据链路层三个重要问题

封装成帧和透明传输

封装成帧

发送方的应用层将待传输应用层协议数据单元交付给运输层,运输层为其添加一个运输层首部使之封装成运输层协议数据单元并将运输层协议数据单元交付给网络层,网络层为其添加一个网络层首部使之封装成网络层协议数据单元并将网络层协议数据单元交付给数据链路层,数据链路层为其添加一个首部和尾部使之封装成帧,帧的首部和尾部包含一些重要的控制信息

image-20221113194507695

例如以太网版本2的MAC帧格式,尾部包含帧检验序列FCS字段,接收方通过该字段的值可判断帧在传输过程中是否产生误码。

image-20221113194832337

又例如点对点PPP协议帧格式,帧的首部和尾部各有一个标志字段,接收方的数据链路层在收到物理层交付上来的比特流后,根据帧首部和尾部的标志字段,就可以从收到的比特流中识别出帧的开始和结束,也就是进行帧定界。

透明传输

发送方向接收方连续发送两个帧,如果帧的数据载荷部分出现了标志字段,就会出现帧定界错误。

image-20221113195733430

差错检测

表示比特的信号在信道上传输时,不可避免的会产生失真甚至出现误码,接收方数据链路层收到该帧后如何知道帧中出现了误码呢?这就需要采用差错检测措施,例如:发送方的数据链路层采用某种检错技术根据帧的内容计算出一个检错码将检错码填入帧尾部,帧尾部中存放检错码的字段成为帧检验序列FCS,接收方的数据链路层从帧尾中取出检错码采用与发生方相同的检错技术即可通过检错码检测出帧在传输过程中是否出现了误码,下面会介绍奇偶校验循环冗余校验两种检错算法。

可靠传输

若数据链路层向其上层提供的是不可靠传输服务,则接收方数据链路层直接丢弃有误码的帧即可,其他什么都不用做,未收到发送方的帧,也不进行任何处理;

如数据链路层向其上方提供的是可靠传输服务,这就需要数据链路层通过某种机制实现发送方发送什么接收方就能收到什么

image-20221113201430918

小结

image-20221113202320782

封装成帧和透明传输

封装成帧

封装成帧是指数据链路层给上层交付下来的协议数据单元PDU添加一个首部和一个尾部,使之成为帧。

  • 帧的首部和尾部中包含有一些重要的控制信息
  • 帧首部和尾部的作用之一就是帧定界

并不是每一种数据链路层协议的帧都包含有帧定界标志。

点对点协议PPP协议包含

image-20221113202953192

但是以太网版本2MAC帧不包含

image-20221113203037351

这种如何进行帧界定呢?数据链路层将MAC帧交付给物理层,物理层为其添加一个前导码,前导码包含帧开始定界符,不需要结束定界符,因为有帧间间隔的存在。

image-20221113203300571

image-20221113203513609

image-20221113203642723

透明传输

透明传输是指数据链路层对上层交付下来的协议数据单元PDU没有任何限制,就好像数据链路层不存在一样。

  • 面向字节的物理链路使用字节填充的方法实现透明传输。(封装成帧时,将数据载荷中标识字符和转义字符之前插入标识字符,接收方数据链路层接收到帧时,进行全帧扫描,扫描到转义字符时继续向后提取数据直到碰到结束标识符)

image-20221113205637295

  • 面向比特的物理链路使用比特填充的方法实现透明传输。(发送方的数据链路层在将该帧交付给物理层之前,扫描帧的数据载荷只要出现5个连续的比特1就在其后面填入一个0,填充之后就确保数据载荷不包含帧定界符,接收方数据链路层在把载荷向上交付给网络层之前,对数据载荷进行扫描,每当发现5个连续比特1时就把其后的一个比特0删除,这样就可以还原出原始的数据载荷)

image-20221113205702670

差错检测

误码的相关概念

image-20221113205949825

发送方的数据链路层采用某种检错技术根据帧的内容计算出一个检错码将检错码填入帧尾部,帧尾部中存放检错码的字段成为帧检验序列FCS,接收方的数据链路层从帧尾中取出检错码采用与发生方相同的检错技术即可通过检错码检测出帧在传输过程中是否出现了误码。

image-20221113210130075

image-20221113210205386

奇偶校验

image-20221113210505103

image-20221113210547168

循环冗余校验

image-20221113210640092

基本思想

image-20221113210722320

小结

image-20221113211525315

可靠传输

可靠传输基本概念

image-20221113212343059

image-20221113212404405

传输差错并不只有误码

image-20221113212501242

分组丢失

分组传输到路由器时,输入队列快满了主动丢弃收到的分组

分组失序

多个分组在传输的过程中,由于由不同的路由器来实现传输,导致接收方接收到的分组顺序与发送方发送的顺序不一致

分组重复

由于路由器繁忙分组在输入队列中等待较长时间,导致发送方重复发送分组,接收方接收重复分组

image-20221113213018579

image-20221113213213941

三种可靠传输实现机制

停止-等待协议SW、回退N帧协议GBN、选择重传协议SR

这三种可靠传输协议实现机制的基本原理并不限于数据链路层,可以应用到计算机网络体系结构的各层协议中。

停止-等待协议SW

确认与否认

image-20221113220818333

由上可知,发送方每发送完一个数据分组后,并不能立刻将数据分组从缓存中删除,只有收到针对该数据分组的确认分组后,才能将其从缓存中删除,若收到否认分组,则重发之前发送的数据分组。实现可靠传输。

超时重传

image-20221113221822940

一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”。

image-20221113222030548

确认丢失

image-20221113222320281

数据分组需要编号

image-20221113222430743

确认迟到

image-20221113223821634

确认分组需要编号

image-20221113223941368

需要说明的是,对于数据链路层点对点信道,往返时间比较固定不会出现确认迟到的情况。因此如果只在数据链路层实现停止-等待协议,可以不用给确认分组编号。

注意事项

image-20221113225258302

停止-等待协议信道利用率

image-20221113225600501

当往返时延RTT远大于数据帧发送时延TD时(例如使用卫星链路),信道利用率非常低。

若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低。

在往返时间RTT相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止-等待协议,而可以选择使用回退N帧(GBN)协议或选择重传(SR)协议。

如果发送方在收到接收方的确认分组之前,可以连续发送多个数据分组,则可大大提高信道利用率。
image-20221114203034006

回退N帧协议GBN

image-20221114203322380

采用n个比特给分组编序号,序号范围是0 ~(2^n -1)。本例假设采用3个比特给分组编序号,则序号范围是0~7。

发送窗口

image-20221114203648431

接收窗口

image-20221114203751424

image-20221114203843019

回退N帧协议:发送方积满发送窗口数据分组统一发送,接收方将一个窗口所有数据分组处理完毕,统一返回确认分组。

在无传输差错的情况下,回退N帧协议的信道利用率比停止-等待协议的信道利用率有显著提高。提高的程度取决于发送窗口的大小。

累积确认

接收方不一定要对收到的数据分组逐个发送确认,而是可以收到几个数据分组后(由具体实现决定),对按序到达的最后一个数据分组发送确认。ACKn表示序号为n及以前的所有数据分组全都已经正确接收。

即使确认分组丢失,发送方也不必重传!能够减少网络的占用。

image-20221114205207216

累积确认优缺点:

image-20221114205238300

超时重传

image-20221114205634452

WT > (2^n - 1)

image-20221114210314465

接收方无法辨认新、旧数据分组

小结

image-20221114210815830

选择重传协议SR

回退N帧协议接收窗口WR=1,因此只能按序接收数据分组。

一个数据分组的误码会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管他们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。

为了避免上述情况,WR不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交给上层,这就是选择重传协议

image-20221114212055029

与回退N帧协议不同,选择重传协议不采用累积确认,接收方需要对每一个正确接收的数据分组进行逐一确认。

选择重传协议

image-20221114213324269

点对点协议PPP

点对点协议PPP概述

image-20221114214154609

image-20221114214218180

PPP协议由三部分组成

  • 对各种协议数据报的封装方法(封装成帧)
  • 链路控制协议LCP(用于建立、配置以及检测数据链路的连接)
  • 一套网络控制协议NCPs(其中的每一个协议支持不同的网络层协议)

image-20221114214654423

PPP的帧格式

image-20221114215018459

PPP帧的透明传输

问题

PPP帧的数据载荷中出现标志字段F时,会误判帧的长度。

image-20221114215348528

image-20221114215410606

透明传输(解决方案)

字节填充法

image-20221114215546701

比特填充法

image-20221114215626733

PP帧的差错检测

PPP帧的尾部包含1个两字节的帧检验序列FCS字段。

image-20221114220030136

FCS计算方式(C语言版)

image-20221114220146587

PPP的工作状态

image-20221114221612353

媒体接入控制

媒体接入控制基本概念

image-20221115220307674

引出问题: 主机A和主机C同时使用总线来发送数据,这必然会造成信号碰撞。

共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享媒体的占用,即媒体接入控制MAC(Medium Access Control).

媒体接入控制分类

image-20221115222459657

随着技术的发展,交换技术的成熟和成本的降低,具有更高性能的使用点对点链路和链路层交换机的交换式局域网在有线领域已完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术。

静态划分信道

信道复用

频分复用FDM (Frequency Division Multiplexing)

  • 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
  • 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。

时分复用TDM (Time Division Multiplexing)

  • 时分复用则是将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。
  • 每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧的长度)的。
  • TDM 信号也称为等时 (isochronous) 信号。
  • 时分复用的所有用户在不同的时间占用同样的频带宽度。

波分复用 WDM(Wavelength Division Multiplexing)

波分复用就是光的频分复用,使用一根光纤来同时传输多个光载波信号

光信号传输一段距离后悔衰减,所以要用 掺铒光纤放大器 放大光信号

码分复用 CDM (Code Division Multiplexing)

静态划分信道通常用于无线网络的物理层,一般不会产生信号碰撞。

动态接入控制——随机接入(CSMA/CD协议)

CSMA/CD 协议基本原理

总线局域网使用协议:CSMA/CD

总线的特点是:当一个站点发送数据时,总线上的所有站点都能检测到并接收到这个数据。

96比特时间是指发送96比特所耗费的时间也称为帧间最小间隔。其作用是使接收方可以检测出一个帧的结束,同时也使得所有其他站点都能有机会平等竞争信道并发送帧。

多址接入MA

表示许多站点以多址接入的方式连接在一根总线上,各主机随机发送帧。

载波监听CS

是指每一个站点在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,要等待信道变为空闲时再发送。

其实总线上并没有什么“载波”。 “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。

碰撞检测CD

  • “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。
  • 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
  • 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
  • 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。
  • 在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
  • 每一个正在发送数据的站点,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

image-20221120095019231

CSMA/CD 协议——争用期(碰撞窗口)

使用CSMA/CD协议的共享总线以太网上的任意站点在发送帧的过程中都可能会遭遇碰撞。

image-20221120090227253

CSMA/CD 协议的最小帧长和最大帧长

最小帧长

image-20221120100338808

最大帧长

image-20221120100412294

CSMA/CD 协议工作——截断二进制指数退避算法

image-20221120100732102

CSMA/CD 协议工作——信道利用率

image-20221120100841944

CSMA/CD 协议工作流程

image-20221120100133929

CSMA/CD 协议工作——帧接收流程

image-20221120101044377

CSMA/CD 协议的重要特性

  • 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
  • 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
  • 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。

CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。

现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CS协议

随机接入——CSMA/CA协议

为了解决各站点争用总线的问题,共享总线以太网使用了一种专用协议CSMA/CD。

无线局域网使用的协议:CSMA/CA协议

无线局域网使用CSMA/CA协议的原因

image-20221120102718227

原因如下:

image-20221120102804943

无线局域网隐蔽站问题

image-20221120102926255

因此

image-20221120103102989

帧间间隔IFS(InterFrame Space)

image-20221120103226168

CSMA/CA协议的工作原理

image-20221120103507400

源站为什么在检测到信道空闲后还要再等待一段时间DIFS?

  • 考虑到可能有其他的站有高优先级的帧要发送。若有,就要让高优先级帧先发送

目的站为什么正确接收数据帧后还要等待一段时间SIFS才能发送ACK帧?

  • SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧,在这段时间内,一个站点应当能够从发送方式切换到接收方式

image-20221120103634722

信道由忙转为空闲且经过DIFS时间后,还要退避一段随机时间才能使用信道?

防止多个站点同时发送数据而产生碰撞

CSMA/CA协议的退避算法

image-20221120103840598

使用退避算法的时机

image-20221120103912408

CSMA/CA协议的信道预约和虚拟载波监听

image-20221120104046558

image-20221120104211705

MAC地址、IP地址以及ARP协议

image-20221120114352786

MAC地址

image-20221120155211764

MAC地址一般被固化在网卡上

  • 使用点对点信道的数据链路层不需要使用地址
  • 使用广播信道的数据链路层必须使用地址来区分各主机

image-20221120155318718

广播信道的数据链路层必须使用地址(MAC)

image-20221120155712899

image-20221120155821821

MAC地址又称为硬件地址或物理地址。请注意:不要被 “物理” 二字误导认为物理地址属于物理层范畴,物理地址属于数据链路层范畴

IEEE 802局域网的MAC地址格式

image-20221120155959730

组织唯一标识符OUI

  • 生产网络设备的厂商,需要向IEEE的注册管理机构申请一个或多个OUI

网络接口标识符

  • 由获得OUI的厂商自行随意分配

EUI-48

  • 48是这个MAC地址的位数

image-20221120160059743

对于使用EUI-48空间的应用程序,IEEE的目标寿命为100年(直到2080年),但是鼓励采用EUI-64作为替代

关于无效的 MAC 帧

  • 数据字段的长度与长度字段的值不一致;
  • 帧的长度不是整数个字节;
  • 用收到的帧检验序列 FCS 查出有差错;
  • 数据字段的长度不在 46 ~ 1500 字节之间。
  • 有效的 MAC 帧长度为 64 ~ 1518 字节之间。

对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。

IEEE 802局域网的MAC地址发送顺序

image-20221120160323484

单播MAC地址举例

image-20221120160351724

主机B给主机C发送单播帧,主机B首先要构建该单播帧在帧首部中的目的地址字段填入主机C的MAC地址,源地址字段填入自己的MAC地址,再加上帧首部的其他字段、数据载荷以及帧尾部,就构成了该单播帧

image-20221120160434555

主机B将该单播帧发送出去,主机A和C都会收到该单播帧

主机A的网卡发现该单播帧的目的MAC地址与自己的MAC地址不匹配,丢弃该帧

主机C的网卡发现该单播帧的目的MAC地址与自己的MAC地址匹配,接受该帧

并将该帧交给其上层处理

广播MAC地址举例

image-20221120160638684

假设主机B要发送一个广播帧,主机B首先要构建该广播帧在帧首部中的目的地址字段填入广播地址,也就是十六进制的全F,源地址字段填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该广播帧

image-20221120160729504

主机B讲该广播帧发送出去,主机A和C都会收到该广播帧发现该帧首部中的目的地址字段的内容是广播地址,就知道该帧是广播帧,主机A和主机C都接受该帧,并将该帧交给上层处理

多播MAC地址举例

image-20221120160808401

假设主机A要发送多播帧给该多播地址。将该多播地址的左起第一个字节写成8个比特,第一个字节的最低比特位是1,这就表明该地址是多播地址

快速判断地址是不是多播地址,就是上图所示箭头所指的第十六进制数不能整除2(1,3,5,7,9,B,D,F),则该地址是多播地址

假设主机B,C和D支持多播,各用户给自己的主机配置多播组列表如下所示

image-20221120160924108

主机B属于两个多播组,主机C也属于两个多播组,而主机D不属于任何多播组

image-20221120161001145

主机A首先要构建该多播帧在帧首部中的目的地址字段填入该多播地址,源地址点填入自己的MAC地址,再加上帧首部中的其他字段、数据载荷以及帧尾部,就构成了该多播帧

image-20221120161041024

主机A将该多播帧发送出去,主机B、C、D都会收到该多播帧

主机B和C发现该多播帧的目的MAC地址在自己的多播组列表中,主机B和C都会接受该帧

主机D发现该多播帧的目的MAC地址不在自己得多播组列表中,则丢弃该多播帧

给主机配置多播组列表进行私有应用时,不得使用公有的标准多播地址

IP地址

IP地址属于网络层的范畴,不属于数据链路层的范畴

下面内容讲的是IP地址的作用,详细的IP地址内容在网络层中介绍

基本概念

image-20221120161307487

从网络体系结构看IP地址与MAC地址

image-20221120161413367

数据包转发过程中IP地址与MAC地址的变化情况

图中各主机和路由器各接口的IP地址和MAC地址用简单的标识符来表示

image-20221120161513551

image-20221120161556509

如何从IP地址找出其对应的MAC地址?

ARP协议

ARP协议

如何从IP地址找出其对应的MAC地址?

ARP(地址解析协议)

流程

image-20221120161728013

ARP高速缓存表

image-20221120161849507

当主机B要给主机C发送数据包时,会首先在自己的ARP高速缓存表中查找主机C的IP地址所对应的MAC地址,但未找到,因此,主机B需要发送ARP请求报文,来获取主机C的MAC地址

image-20221120161930085

ARP请求报文有具体的格式,上图的只是简单描述

ARP请求报文被封装在MAC帧中发送,目的地址为广播地址

主机B发送封装有ARP请求报文的广播帧,总线上的其他主机都能收到该广播帧

image-20221120162044765

收到ARP请求报文的主机A和主机C会把ARP请求报文交给上层的ARP进程

主机A发现所询问的IP地址不是自己的IP地址,因此不用理会

主机C的发现所询问的IP地址是自己的IP地址,需要进行响应

image-20221120162230753

需要注意的是,ARP响应报文也被封装在MAC帧中发送,目的地址为主机B的MAC地址,主机C给主机B发送装有ARP响应报文的单播帧,总线上的其他主机都能收到该单播帧,主机根据情况丢弃或者交付上层处理。

image-20221120162252953

image-20221120162449842

高速缓存表动态与静态的区别

image-20221120162547501

动态生命周期结束时,该记录会自动删除。这样做的原因是IP地址与MAC地址的对应关系并不是永久性的,例如当主机的网卡坏了,更换新的网卡后,主机的IP地址没变但是MAC地址变了。

image-20221120162643864

主机H1能不能直接使用ARP协议直接获取主机H2 MAC地址呢?

ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用

ARP协议的使用是逐段链路进行的

小结

image-20221120162916918

集线器与交换机的区别

集线器-在物理层扩展以太网

image-20221120164911096

image-20221120164933709

  • 传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。
  • 采用双绞线的以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)。
  • 集线器是也可以看做多口中继器,每个端口都可以成为一个中继器,中继器是对减弱的信号进行放大和发送的设备
  • 集线器的以太网在逻辑上仍是个总线网,需要使用CSMA/CD协议来协调各主机争用总线,只能工作在半双工模式,收发帧不能同时进行

集线器HUB在物理层扩展以太网

使用集线器扩展:将多个以太网段连成更大的、多级星形结构的以太网

image-20221120165233462

  • 优点
    1. 使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
    2. 扩大了以太网覆盖的地理范围。
  • 缺点
    1. 碰撞域增大了,但总的吞吐量并未提高。
    2. 如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。

碰撞域

  • 碰撞域(collision domain)又称为冲突域,是指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。
  • 碰撞域越大,发生碰撞的概率越高。

以太网交换机-在数据链路层扩展以太网

  • 扩展以太网更常用的方法是在数据链路层进行。
  • 早期使用网桥,现在使用以太网交换机

image-20221120165456628

网桥

  • 网桥工作在数据链路层。
  • 它根据 MAC 帧的目的地址对收到的帧进行转发和过滤。
  • 当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或把它丢弃。

交换机

  • 1990 年问世的交换式集线器 (switching hub) 可明显地提高以太网的性能。
  • 交换式集线器常称为以太网交换机 (switch) 或第二层交换机 (L2 switch),强调这种交换机工作在数据链路层。
  • 以太网交换机实质上就是一个多接口的网桥

集线器HUB与交换机SWITCH区别

image-20221120165720172

使用集线器互连而成的共享总线式以太网上的某个主机,要给另一个主机发送单播帧,该单播帧会通过共享总线传输到总线上的其他各个主机

使用交换机互连而成的交换式以太网上的某个主机,要给另一个主机发送单播帧,该单播帧进入交换机后,交换机会将该单播帧转发给目的主机,而不是网络中的其他各个主机

这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了

image-20221120165904240

以太网交换机的交换方式

  • 存储转发方式
    • 把整个数据帧先缓存后再进行处理。
  • 直通 (cut-through) 方式
    • 接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的转发速度。
    • 缺点是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。

这个例子的前提条件是忽略ARP过程,并假设交换机的帧交换表已经学习或配置好了

多台主机同时给另一台主机发送单播帧

集线器以太网:会产生碰撞,遭遇碰撞的帧会传播到总线上的各主机

交换机以太网:会将它们缓存起来,然后逐个转发给目的主机,不会产生碰撞

集线器扩展以太网和交换机扩展以太网区别

单播

image-20221120170210954

广播

image-20221120170305785

广播方法两者没什么区别

多个单播

image-20221120170354620

区别

image-20221120170418417

广播域(broadcast domain):指这样一部分网络,其中任何一台设备发出的广播通信都能被该部分网络中的所有其他设备所接收。

总结

image-20221120170529446

image-20221120170932068

工作在数据链路层的以太网交换机,其性能远远超过工作在物理层的集线器,而且价格并不贵,这就使得集线器逐渐被市场淘汰

以太网交换机自学习和转发帧的流程

概念

image-20221120201134017

自学习和转发帧的例子

以下例子假设各主机知道网络中其他各主机的MAC地址(无需进行ARP)

A -> B

image-20221120201234147

  1. A 先向 B 发送一帧。该帧从接口 1 进入到交换机1
  2. 交换机1首先进行登记工作,交换机把这个帧的源MAC地址 A 和接口 1 记录到自己的帧交换表中【自学习】
  3. 之后交换机1对该帧进行转发,在帧交换表中查找MAC地址B,未找到,于是对帧进行盲目的转发【泛洪】(也就是从除该帧进入交换机接口(接口1)外的其他所有接口转发该帧)
  4. 主机B的网卡收到该帧后,根据帧的目的MAC地址B就知道这是发送给自己的帧,于是就接收该帧
  5. 主机C的网卡收到该帧后,根据帧的目的MAC地址B就知道这不是发送给自己的帧,于是就丢弃该帧
  6. 该帧从交换机的接口2进入交换机2,交换机2首先进行登记的工作,将这个帧的源MAC地址 A 和该帧进入自己的接口的接口号2 记录到自己的帧交换表中
  7. 主机2对该帧进行转发,该帧的目的MAC地址B,在交换表中查找MAC地址B未找到,于是对该帧进行盲目的转发,主机D、E、F都会收到该帧,根据帧的目的MAC地址B发现这不是发给自己的帧,于是丢弃该帧

B -> A

image-20221120201337555

  1. B 向 A 发送一帧。该帧从接口 3 进入到交换机
  2. 交换机1收到帧后,首先进行登记工作,将源MAC地址B和接口3记录到交换机1的帧交换表中。
  3. 登记完成后对该帧进行转发,在帧交换表中查找MAC地址A可以找到,于是按照MAC地址A所对应的接口1,从接口1转发该帧【明确转发】
  4. 主机 A 发现目的地址是它,就接受该帧
  5. 很显然,交换机2不会收到该帧

E -> A

image-20221120201400905

  1. E 向 A发送一帧
  2. 交换机2首先进行登记工作,交换机把这个帧的源地址 E 和接口 3记录到自己的帧交换表中
  3. 之后交换机2对该帧进行转发,查找帧交换表找到MAC地址A,于是进行明确转发,从接口2进行转发该帧。
  4. 该帧从交换机1的接口4进入交换机1,交换机1把这个帧的源地址 E 和接口记录到帧交换表中
  5. 于是对该帧进行转发,查找帧交换表找到MAC地址A,从对应接口1转发该帧【明确转发】
  6. 主机A网卡收到该帧后,根据帧的MAC地址A就知道这是发给自己的帧,于是接受该帧

G -> A

image-20221120201434904

主机 A、主机 G、交换机 1的接口 1就共享同一条总线(相当于总线式网络,可以想象成用集线器连接了)

  1. 主机 G 发送给 主机 A 一个帧
  2. 主机 A 和 交换机接口 1都能接收到
  3. 主机 A 的网卡收到后,根据帧的目的MAC地址A,就知道是发送给自己的帧,就接受该帧
  4. 交换机 1收到该帧后,首先进行登记工作
  5. 然后交换机 1对该帧进行转发,该帧的MAC地址是A,在主机1帧交换表查找MAC 地址有 A
  6. MAC 地址为 A的接口号是1,但是该帧正是从接口 1 进入交换机的,交换机不会再从该接口 1 将帧转发出去,因为这是没有必要,于是丢弃该帧

随着网络中各主机都发送了帧后,网络中的各交换机就可以学习到各主机的MAC地址,以及它们与自己各接口的对应关系

image-20221120201516986

考虑到可能有时要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间过期的项目就自动被删除

以太网交换机的这种自学习方法使得以太网交换机能够即插即用,不必人工进行配置,因此非常方便。

总结

交换机自学习和转发帧的步骤归纳

image-20221120201627370

image-20221120201722865

以太网交换机的生成树协议STP

如何提高以太网的可靠性

image-20221120202559015

image-20221120202629434

只要有链路发生故障,就会导致有些主机之间无法通信。

image-20221120202720330

image-20221120202739285

生成树协议STP

image-20221120202827468

  • IEEE 802.1D 标准制定了一个生成树协议 STP (Spanning Tree Protocol)。
  • 要点是:不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。

image-20221120203014815

虚拟局域网VLAN

为什么要虚拟局域网VLAN

广播风暴

image-20221120210536265

image-20221120210641325

分割广播域的方法

image-20221120210713770

路由器可以将一个广播域,分割成两个较小的广播域。路由器工作在网络体系结构的第三层也就是网络层。

由于路由器默认情况下不对广播数据包进行转发,因此路由器很自然的就可以隔离广播域。

但是由于路由器成本较高,所以局域网内部全部使用路由器来隔离广播域是不现实的。在这种情况下,虚拟局域网VLAN技术应运而生。

概念

image-20221120210804479

  • 利用以太网交换机可以很方便地实现虚拟局域网 VLAN (Virtual LAN)。
  • IEEE 802.1Q 对虚拟局域网 VLAN 的定义虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。
  • 同一个VLAN内部可以广播通信,不同VLAN不可以广播通信
  • 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
  • 由于虚拟局域网是用户和网络资源的逻辑组合,因此可按照需要将有关设备和资源非常方便地重新组合,使用户从不同的服务器或数据库中存取所需的资源。

虚拟局域网VLAN的实现机制

虚拟局域网VLAN技术是在交换机上实现的,需要交换机能够实现以下功能

  • 能够处理带有VLAN标记的帧——IEEE 802.1 Q帧
  • 交换机的各端口可以支持不同的端口类型,不同端口类型的端口对帧的处理方式有所不同

IEEE 802.1 Q帧

image-20221120210938288

交换机端口类型

image-20221120211038175

Access端口

交换机与用户计算机之间的互连

image-20221120211209387

image-20221120211308009

同一个VLAN内部可以广播通信,不同VLAN不可以广播通信

Truck端口

交换机之间或交换机与路由器之间的互连

image-20221120211404508

image-20221120211439276

在由多个交换机互连而成的交换式以太网中转发WLAN时,连接主机的交换机端口应设置为Access类型,交换机之间互联的端口应设置为Trunk类型。

小例题

image-20221120211515774

华为交换机私有的Hybrid端口类型

image-20221120211632693

image-20221120211727132

主机只能识别普通以太网帧,不能直接识别802.1Q帧

总结

image-20221120211908072

虚拟局域网优点

虚拟局域网(VLAN)技术具有以下主要优点:

  1. 改善了性能
  2. 简化了管理
  3. 降低了成本
  4. 改善了安全性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DevC++的调试方法

目录 Dev C调试程序 Dev C调试注意事项对于修改后的程序,调试程序之前一定要先编译程序。 要想学会编程,第一步就是要学会调试(想我这种码龄一年的人还不会调试,丢死人). 今天,为了让你们的脸丢少点,特意写了这篇博文,给予需要帮助的人. 所谓调试程序&#xff0…

[附源码]计算机毕业设计JAVA基于JSP健身房管理系统

[附源码]计算机毕业设计JAVA基于JSP健身房管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM m…

Python实现KNN(K近邻)分类模型(KNeighborsClassifier算法)并应用网格搜索算法寻找最优参数值以及数据标准化均衡化项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 股票市场是已经发行的股票转让、买卖和流通的场所,包括交易所市场和场外交易市场两大类别。…

【C++】C++11部分特性

目录 一、初始化列表 二、变量类型的推导 1、auto 2、decltype 三、右值引用 1、左值与右值 2、关于左值引用、右值引用的问题 1、左值引用可以引用右值吗? 2、右值引用可以引用左值吗? 3、右值引用之后的问题 3、移动构造、移动拷贝 1、引用…

软件测试质量保证与测试

软件测试质量保证与测试 第一章 软件测试概述 1.1 软件测试背景 随着计算机技术的迅速发展和越来越广泛深入地应用于国民经济与社会生活的各个方面,软件系统的规模和复杂性与日俱增,软件的生产成本和软件中存在的缺陷与故障造成的各类损失也大大增加&…

【应用】PostgreSQL 流复制配置

PostgreSQL 流复制配置centos7 安装 postgresql时序库 timescaleDB 的安装postgresql-14 主从流复制主库配置从库配置同步流复制与异步流复制异步流复制转换为同步流复制流复制的相关参数主从流复制原理PostgreSQL WAL 日志主从流复制架构主从流复制的过程基于 docker swarm 的…

CMSC5713-IT项目管理之七、质量管理Quality Management

文章目录7.1 Quality7.2. Software Quality7.2.1. ISO/IEC 25010 Software Qualities7.2.2. Internal versus External qualities7.2.3. Software Metrics7.3. Quality Specification7.4. Project Quality Management7.4.1. Quality Planning7.4.2. Quality Assurance7.4.2.1. …

vscode 阅读 linux kernel 源码

前言 虽然身边的朋友大都在使用 source insight,但我却更喜欢 vscode。 不过 vscode 在代码搜索上确实不如 source insight,这点上我也是吃过亏的。阅读大型代码时,常常搜索不到关键代码,导致对代码的理解不充分。 当使用 vscode…

Java-反射

前言 动态语言与静态语言 动态语言 是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构主要动态语言有:Object…

【开源电路】STM32F401RCT6开发板

【开源电路】STM32F401RCT6开发板🌷实物PCBA: 🌼优化后的3D效果图 📚STM32F401RCT6开发板简介 📑主控是LQFP-64封装的STM32F401RCT6芯片,Micro USB接口供电,功能引脚全部引出,一个…

金融强化学习与finRL开发包

原创文章第110篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。 01 一些感受 时代的一粒沙,落在每个人身上就是一座山。 这三年,对于这句话,相信很多人更能感同身受。 看历史风云变幻,轻轻…

力扣(LeetCode)21. 合并两个有序链表(C++)

迭代 同时遍历两个链表 , 当前结点值较小的结点插入新的链表尾部。直到有一个链表为空 , 我们将另一个非空链表插入新的链表尾部。 提示 : 使用哑结点,避免特判头结点。二路归并思想应用于链表~ class Solution { public:ListNode* mergeT…

gRPC gateway - Http Restful API gRPC 协议转换

gRPC gateway - http restful gRPC gateway 介绍 gRPC-Gateway 是protocalBufffer的编译插件,根据protobuf的服务定义自动生成反向代理服务器,并将Restful Http API 转化为 gRPC通信协议。反向代理服务器根据 google.api.http 注解生成。 gRPC底层是使用HTTP2 协…

mybatis # $

总结: # 你传入的变量类型会被保留 $ 本质就是拼接 不会考虑拼串的 $ 情况下 参数是整数 跟参数是字符串 字符串情况: 缺少’’ 相当于字符串拼接 ”select * from t_user where username “ “张三” ”select * from t_user where username 张三&…

java 容器

java 容器 数组 数组的扩容问题 ArrayList 的默认初始化容量为0,首次添加元素时,创建容量为(10 || 添加集合大小) ,以后每次扩容的话,为当前容量的1.5倍 public ArrayList() {/*初始化容量大小为0private static final Object…

CEAC之《计算机应用助理工程师》2

👨‍💻个人主页:微微的猪食小窝 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 微微的猪食小窝 原创 收录于专栏 【CEAC证书】 1组合框的常用属性有 ____________ 。 A、Index B、Text C、Caption D、ListCountA,B,D2在…

ES6 入门教程 16 Reflect 16.2 静态方法 16.3 实例:使用 Proxy 实现观察者模式

ES6 入门教程 ECMAScript 6 入门 作者:阮一峰 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录ES6 入门教程16 Reflect16.2 静态方法16.2.1 Reflect.get(target, name, receiver)16.2.2 Reflect.set(target, name, value, receiver)1…

数据结构之:数组

数组初体验之数组中重复的数字 数组 : 有限个 相同类型的变量 组成的有序集合 int[] arr; int arr[]; // 静态初始化 String[] strArr {"和平精英","王者荣耀","开心消消乐","欢乐斗地主"}; // 动态初始化 String[] strAr…

自学 TypeScript 第三天 使用webpack打包 TS 代码

安装: 首先第一步,我们要初始化我们项目,在目录下输入 npm init 接下来,我们的安装几个工具 npm i -D webpack webpack-cli typescript ts-loader -D 意思是 开发依赖,也就是我们现在所安装的依赖都是开发依赖&am…

知乎 日报

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言评论界面首页cell的小标题的文字显示下拉刷新前言 这周完成了评论内容,改了一些小bug。收藏界面正在加油,FMDB库目前不是很理解 评论界面…