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


    数据链路层概述

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

    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. 改善了安全性
  • 相关阅读:
    【STL面试】说说 vector 和 list 的区别,分别适用于什么场景?
    WEB3 solidity 带着大家编写测试代码 操作订单 创建/取消/填充操作
    多GPU训练的实现
    tomcat官网下载配置全部详细步骤(包含各种报错解决办法)
    <%=%>模板写法
    docker入门加实战—部署Java和前端项目
    斐波那契数列和斐波那契数
    动态规划:得到目标货币的方法数(有限张货币 + 面值相同的货币相同)
    数学建模准备知识
    analyzer [ik_max_word] not found for field [title]
  • 原文地址:https://blog.csdn.net/qq_43417581/article/details/127954611