数据链路层

目录:

基本概念

结点:主机、路由器

链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。

数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上构成数据链路。

image-20231128170242284

:链路层的协议数据单元,封装网络层数据报。

数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。

功能概述

数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

功能

① 为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务(有连接一定有确认)。

② 链路管理,即连接的建立、维持、释放(用于面向连接的服务)

③ 组帧

④ 流量控制,限制发送方发送速度。

⑤ 差错控制(帧错/位错)

封装成帧

image-20231128174306798

封装成帧就是在一段数据的前后部分添加首部和尾部(帧定界符),这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

image-20231128174351225

首部和尾部包含许多的控制信息,其有一个重要作用:帧定界(确定帧的界限)。

image-20231128174548493

帧同步:接受方应当能从接收到的二进制比特流中区分出帧的起始和终止。

image-20231128174737480

组帧方法:① 字符计数法 ② 字符(节)填充法 ③ 零比特填充法 ④ 违规编码法

透明传输

透明传输指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。

当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

字符计数法

帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。

image-20231128210735485

但是有一个问题,就是当计数的字符发生错误,例如第一个计数字符变成了6,则是告诉接收方第一帧有六个字符,但是实际只有五个,原本第一帧到4就结束了,但是现在到5才结束,结果又导致下一帧误为6个字符,于是接收方接受到的数据信息全部都是错乱的,接收双方失去了同步,所以不常用。

字符填充法

image-20231128211433965

现在用一个字符表示帧开始的头部,再用一个字符表示帧结束的尾部。这样就能完整的接收到一个帧的信息。

这种方式只适用于由文本文件组成时(文本文件的字符都是从键盘中输入的,即都为ASCII码),无论从键盘输入什么字符都可以放进帧中传过去,即为透明传输。

当传送的帧是由非ASCII码的文本文件组成时(例如二进制代码的程序或图像等)。就要采用字符填充法实现透明传输。

image-20231128212338819

零比特填充法

image-20231128212525974

保证了透明传输,在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。

违规编码法

image-20231128212725378

可以用“高-高”,“低-低”来定界帧的起始和终止。

由于字节计数法中的Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充法实现上的复杂性和不兼容性,目前较为普遍使用的帧同步法是比特填充法违规编码法

差错控制

传输中的差错都是由噪声引起的。

全局性:由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。

局部性:外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。

针对全局性的噪声的解决办法是对传感器下手,提高信噪比来减少或避免干扰。而针对局部性的噪声,通常是利用编码技术进行解决。

image-20231201114334689

image-20231201114418539

image-20231201115100996

数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过几余码的技术实现一组二进制比特串在传输过程是否出现了差错。

冗余编码:在数据发送之前,先按某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的几余位也随之变化,使码字遵从不变的规则。接收端根据收到码字是否仍符合原规则,从而判断是否出错。

奇偶校验

在待发送的数据后面添加一位奇偶校验位,使整个数据(包括所添加的校验位在内)中的“1”的个数为奇数(奇校验)或偶数(偶校验)。

image-20231201142906857

如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码。若有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)。

因为该方法漏检率极高,所以一般不采用此方式。

循环冗余检验

循环冗余检验CRC(Cyclic Redundancy Check)。

步骤:

  1. 收发双方约定好一个生成多项式。

    image-20231201144955029

    image-20231201145404093

  2. 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输。

  3. 接收方通过生成多项式来计算收到的数据是否产生了误码。

image-20231201144708877

image-20231201150122488

检错码只能检测出帧在传输过程中出现了差错,但并不能定位错误,因此无法纠正错误。

若要想纠正传输中的差错,可以使用冗余信息更多的纠错码进行前向纠错。但纠错码的开销比较大,在计算机网路中较少使用。

循环冗余校验CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于使用硬件实现,因此被广泛使用于数据链路层。

在计算机网络中通常采用我们后续课程中将要讨论的检错重传方式来纠正传输中的差错或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务。

可靠传输

使用差错检测技术(例如循环冗余检测CRC),接收方的数据链路层就可以检测出帧在传输过程中是否出现误码(比特错误,只是传输差错中的一种)。

image-20231202172337471

数据链路层向上层提供的服务类型:

  • 不可靠传输服务:仅仅丢弃有误码的帧,其他什么都不做。
  • 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。

一般情况下,有线链路的误码率比较低,为了减少开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由上层处理。

image-20231202172830709

无线链路易受到干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠的传输服务。

image-20231202173016805

从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组乱序及分组重复。

分组丢失

image-20231202173532752

分组乱序

给H2发送数据前:

image-20231204095716543

由于网络或其他原因,导致到达H2的顺序与发送前不一致:

image-20231204095852372

分组重复

当主机H6给主机H2发送信息时,由于一些原因在网络中滞留了,没有及时到达H2

image-20231204100005672

导致H6对此分组进行超时重发,当重发的分组到达H2后,滞留的分组也到达H2,造成分组重复

image-20231204100115819

当然分组丢失、失序、重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。因此可靠的传输服务并不仅仅局限于数据链路层,其他各层均可以选择实现可靠传输。

image-20231204100333239

注意,可靠传输的实现比较复杂,开销比较大,因此是否使用可靠传输取决于应用需求。


实现可靠传输有三种实现机制:停止等待协议SW、回退N帧协议GBN、选择重传协议SR。

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

停止等待协议

SW(Stop-and-Wait),停止-等待协议。也常成为自动请求重传协议ARQ(Automatic Repeat reQuest),因为重传的请求是自动进行的,不需要接收方显示地请求。

如下图所示,发送方在每发送一个分组之后,都需要等待接收方返回确认ACK信号或者否认NCK信号之后才能发送下一个分组。

image-20231204101006017

上面的情况适用于数据链路层点对点的信道通信,因为不太容易发生下图一样的错误,但是对于多个网络通过多个路由器互联的互联网这种复杂的情况而言,是很容易出现这种错误。

image-20231204101913110

接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。

为解决该问题,可以在发送方发送完一个数据分组时启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK或NAK,则重传原来的数据分组,这就叫做超时重传。

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

image-20231204102206851

当然,还有可能会出现下面的情况,即当接收方接收到分组之后,返回的ACK在传输时丢失,导致发送方超时重发,此时接收方需要判断并解决这种分组重复的问题

image-20231204102534025

为了避免分组重复这种传输错误,必须给每个分组戴上序号。

对于停止-等待协议,由于发送一个数据分组就会停止等待,只要保证每发送一个新的数据分组,其发送序号与上次发送的数据分组的序号不同,则使用一个比特编号(0和1)即可。

image-20231204102927540

既然分组已经编号,那确认信息是否需要编号呢?

image-20231204103044546

注意,上图的最后一个DATA0与上面的DATA0的数据不一样,只是代号相同。

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

image-20231204104229632

信道利用率 = 数据帧发送时延 / (数据帧发送时延 + 端到端往返时延)

其中的端到端往返时延也是两倍的单程传播时延

image-20231204104504028

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

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

为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议。

回退N帧协议

停止-等待协议的信道利用率很低(例如在使用卫星链路时)。若出现超时重传,则信道利用率会更低。

image-20231204185327471

如何解决呢?

可以采用流水线传输课来提高信道利用率。即,如果在发送方在接收到接收方的确认分组之前能够连续发送多个数据分组,则信道利用率会大大提高。

image-20231204185556868

这里引入回退N帧协议,采用的是滑动窗口的思想。

  1. 采用3个比特位给分组编序号,即序号0~7;
  2. 发送窗口的尺寸WT的取值为:1 < WT <= 2 3-1,这里假设WT = 5
  3. 接受窗口的尺寸WR的取值为:WR = 1

image-20231204191220198

正常情况下(无差错情况):

image-20231204191510763

接收方每接受一个分组,其接受窗口就往前滑动一位,并返回一个ACK

image-20231204191701569

当发送方接收到5个ACK后,发送窗口则先前挪动五个位置,并将前面的分组从缓存区中删除,而接收方会将分组数据交由上层处理。

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

image-20231204192107031

如上图,即使ACK1在传输过程中丢失,ACK4到达发送方,发送方也可以得知接收方已经接收到全部分组,而不必进行重传。

当出现有差错的情况时

image-20231204193952974

接收方会丢弃出现错误的分组,然后发现接下来的分组与接受序号不匹配,则会丢弃不匹配的分组,直至丢弃全部分组。

image-20231204194038185

然后发送之前按序接收的最后一个数据分组进行确认,即发送ACK4,每丢弃一个分组,就发送一个ACK4。

image-20231204195452251

当发送方接收到重复的确认,则知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻重传数据分组。

在上面的情况中,即使序号6,7,0,1的数据分组正确的到达接收方,但是由于五号数据分组误码而不被接受,它们也会不被接受,发送方还要重传这些数据分组,这就是所谓的Go-back-N(回退N帧)。

因此当通信线路质量不好时,回退N帧协议的信道利用率并不比停止-等待协议高。

image-20231204205806298

回退N帧协议在流水线传输的基础上利用发送窗口来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗口协议。

选择重传协议

回退N帧协议的接收窗口尺寸WR只能于1,因此接收方只能按序接收正确到达的数据分组。

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

为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸WR不应再等于1(而应大于1),以便接收方先下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一送交上层。这就是选择重传协议(SR,Selective Request)

需要注意的是,选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认的方式,而是需要对每个正确接收到的数据分组进行逐一确认。

image-20231204212022081

image-20231204212442914

点到点协议

点到点协议 PPP(Point-to-Point Protocol)是目前使用最广泛的点对点数据链路层协议。

PPP协议是因特网工程任务组IETF在1992年制定的。经过1993年和1994年的修订,现在的PPP协议已经成为因特网的正式标准[RFC1661,RFC1662]。

image-20231205164633002

PPP协议为在点对点链路传输各种协议数据报提供了一个标准方法,由以下三个部分主要构成:

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

image-20231205165134536

帧格式

image-20231205165309930

标志(Flag)字段:PPP帧的定界符,取值为0x7E

地址(Address)字段:取值为0xFF,预留(目前没有什么作用)

控制(Control)字段:取值为0x03,预留(目前没有什么作用)

协议(Protocol)字段:指明帧的数据部分送交哪个协议处理:

取值为0x0021表示:帧的数据部分为IP数据报

image-20231205165705281

取值0xC021表示:帧的数据部分为LCP分组

image-20231205165741469

取值0x8021表示:帧的数据部分为NCP分组

image-20231205165811351

帧检验序列(Frame Check Sequence)字段:CRC计算出的校验位。

透明传输

面向字节的异步链路:采用插入转义字符的字节填充法

image-20231205174616367

面向比特的同步链路:采用插入比特0的比特填充法

image-20231207161250640

发送方处理:对帧的数据部分进行扫(一般由硬件实现)。只要发现五个连续的比特1,则立即填充1个比特0(如上图所示)。

image-20231207161518828

接收方处理:对帧的数据部分进行扫描(一般由硬件实现)。只要发现连续的五个比特1,就把其后的1个比特0删除(如上图所示)。

差错检测

image-20231207161723844

采用的是CRC循环冗余校验的方式检测差错,CRC多项式为:

image-20231207161951590

接收方每接收到一个PPP帧,就进行CRC检验。若CRC检验正确,则收下该帧,反之则丢弃。使用PPP的数据链路层向上部提供可靠传输服务。

工作状态

image-20231207162847039

媒体接入

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

image-20231207163225699

image-20231207164503439

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

信道复用

复用(Multiplexing)是通信技术中的一个重要概念。复用就是通过一条物理线路同时传输多路用户的信号。

当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽。

image-20231207164910347

静态划分信道

频道复用FDM

image-20231207165308725

频道复用的所有用户同时占用不同的频带资源并行通信。

时分复用TDM

image-20231207165430266

时分复用的所有用户在不同的时间占用同样的频带宽度。

波分复用WDM

image-20231207165609517

码分复用CDM

码分复用CDM是另一种共享信道的方式。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA(Code Division Multiple Access)

同理的,频分复用FDM和时分复用TDM同样可用于多址接入,相应的名词是频分多址FDMA(Frequency Division Multiple Access)和时分多址TDMA(Time Division Multiple Access)

复用与多址:

  • 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源来看,每个子信道只占用媒体频带资源的一部分。
  • 多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久性地分配给用户的应用中,多址是不需要的
  • 在某种程度上,FDMA、TDMA、CDMA可以分别看成是FDM、TDM、CDM的应用

与FDM与TDM不同的是,CDM的每一个用户可以在同样的时间使用同样的频带通信,由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。

在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(Chip)。通常m的值为64或128。

在使用CDMA的每一个站被指派一个唯一的m bit码片序列的(Chip Sequence):

  • 一个站如果要发送比特1,则发送它自己的m bit码片序列。
  • 一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码。

image-20231207171426469

这种通信方式称为直接序列扩频DSSS。

码片序列的挑选原则如下:

  1. 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列。
  2. 分配给每个站的码片序列必须相互正交(规格化内积为0)。
    令向量S表示站S的码片序列,令向量T表示其他任何站的码片序列。
    两个不同站S和T的码片序列正交,就是向量S和T的规格化内积为0

image-20231207172148899

image-20231207172252431

应用举例

image-20231207172658782

例题:

image-20231207173424211

随机接入

总线碰撞有下面的两种情况:

image-20231207173845967

CSMA/CD

早期的共享式以太网采用载波监听多址接入/碰撞检测:CSMA/CD(Carrier Sense Multiple Access/Collision Detection),总线局域网使用的协议

image-20231207174214591

image-20231207175325893

以太网还采取一种叫做强化碰撞的措施。即当发送帧的站点一旦检测到碰撞,除了立即停止发送帧外,还要再继续发送32比特或者48比特的认为干扰信号(Jamming Singal),以便有足够多的碰撞信号使所有站点都能检测出碰撞。

争用期(碰撞窗口)

image-20231207175835663

主机最多经过2τ(即6→0)的时长就可检测到本次发送是否遭受了碰撞。因此,以太网的端到端往返传播时延2τ称为争用期碰撞窗口

经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的。它取决于另一个发送帧的主机到本主机的距离,但不会超过总线的端到端往返传播时延,即一个争用期时间。

显然,在以太网中发送帧的主机越多,端到端往返传播时延越大,发生碰撞的概率就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长。

10Mb/s以太网把争用期定为512比特发送时间,即51.2μs,因此其总线长度不能超过5120m,但考虑到其他一些因素,如信号衰减等,以太网规定总线长度不能超过2500m。

最小帧长

很显然,当以太网的帧长太短时,会出现下图的情况

image-20231207180303474

以太网规定最小帧长为64字节,即512比特(512比特时间即为争用期)

如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。

以太网的最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞;

如果在争用期(共发送64字节)没有检测到碰撞,那么后续发送的数据 一定不会发生碰撞;如果在争用期内检测到碰撞,立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的帧都是由于碰撞而异常中止的无效帧。

最大帧长

image-20231208161118804

截断二进制指数退避算法

image-20231208161344003

若连续多次发生碰撞,表明可能有较多的主机参与竞争信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大 (这也称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。

当重传达16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,向高层报告。

信道利用率

image-20231208161647713

假设当前处于① 各主机发送帧都不会产生碰撞。 ② 总线一旦空闲就有某个主机立即发送帧 ③ 发送一帧占用总线的时间为 T0 + τ,而帧本身的发送时间是T0 的理想情况。

image-20231208162046939

image-20231208163343246

image-20231208163722516

CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。

CSMA/CA

载波监听多址接入/碰撞避免 CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)协议,是一种无线局域网使用的协议。

在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。

在无线局域网中,不能使用碰撞检测CD,原因如下:

  • 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。
  • 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站问题),进行碰撞检测的意义也不大。
image-20231208165343684

例如上图,A和C都检测不到对方的无线信号。当A和C都给B发送帧时,产生碰撞,然而A和C无法检测到此碰撞。这种未能检测出信道上其他站点信号的问题就是隐蔽站问题。

802.11无线局域网使用(SMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能。

由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制 (停止-等待协议)来保证数据被正确接收。

802.11的MA(层标准定义了两种不同的媒体接入控制方式:

  1. 分布式协调功能DCF(DistributedcoordinationFunction)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式。
  2. 点协调功能PCF(Point Function)。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。

帧间间隔IFS(InterFrame Space)

802.11标准规定,所有站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔IFS。帧间间隔的长短取决于该站点要发送的帧的类型:

  • 高优先级帧需要等待的时间较短,因此可优先获得发送权。
  • 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已经发送到信道上,则信道变成忙态,因而低优先级帧就只能再推迟发送,这样就减少了发生碰撞的机会。

常见的帧间间隔:

  • 短帧间间隔SIFS(28μs),是最短的帧间间隔,用来分隔开属于一次对话的各帧。一个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
  • DCF帧间间隔DIFS(128μs),它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。
工作原理

image-20231208172658239

当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立刻发送的数据帧,则不适用退避算法。

以下情况必须使用退避算法:

  • 在发送数据帧之前检测到信道处于忙状态时。
  • 在每一次重传一个数据帧时。
  • 在每一次成功发送后要连续发送下一帧时(为了避免一个站点长时间占用信道)。
退避算法

在执行退避算法时,站点为退避计时器设置一个随机的退避时间:

  • 当退避计时器的时间减小到零时,就开始发送数据;
  • 当退避计时器的时间还未减小到零时而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DFS后,继续启动退避计时器。

在进行第次退避时,退避时间在时隙编号0,1,…,22+i- 1)中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加了。

image-20231208173519061

信道预约和虚拟载波监听

image-20231208173828020

image-20231208173950967

MAC地址

MAC地址是以太网的MAC子层所使用的地址。

image-20231208175738833

image-20231208175808503

image-20231208175958173

般情况下,用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线
网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识

image-20231208180335030

image-20231209091145590

字节发送顺序:第一字节 => 第六字节

字节内的比特发送顺序:b0 => b7

image-20231209090844901

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

单播MAC地址

image-20231209092719526

广播MAC地址

image-20231209093212088

多播MAC地址

IMG_20231209_093823

image-20231209094337807

IP地址

IP地址是因特网上的主机和路由器所使用的地址(IP地址是TCP/IP体系结构网际层所使用的地址。IP地址属于网络层的范畴,而非数据链路层的范畴),用于标识两个部分的信息:

  • 网络编号:标识因特网上数以百万计的网络。
  • 主机编号:标识同一网络上不同主机(或路由器接口)

如果只是一个单独的网络,不接入因特网,可以只使用MAC地址。但一旦主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。因此,之前介绍的MAC地址并不具备区分不同网络的功能。

image-20231210110410807

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

image-20231210110730921

由上图可得,数据包在转发过程中:

  • 源IP地址和目的IP地址保持不变。
  • 源MAC地址和目的MAC地址逐个链路(网络)改变。

image-20231210111844358

ARP地址

ARP地址属于TCP/IP体系结构的网络层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址。

image-20231210112840572

主机C会先将主机B的IP地址和MAC地址记录到自己的ARP高速缓存表中。然后给B发送ARP响应,以告知自己的MAC地址。

image-20231210113101124

image-20231210113139505

高速缓存的类型分为两种:

  • 动态:自动获取,生命周期默认为两分钟。
  • 静态:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。

image-20231210113948847

注意ARP协议只能在一段链路或一个网络上使用,无法跨网络进行使用

除了ARP请求和响应外,ARP还有其他类型的报文(如用于检查IP地址冲突的“无故ARP、免费ARP(Gratuitous ARP)”)

ARP没有安全验证机制,存在ARP欺骗(攻击)问题:

ARP欺骗(ARP Spoofing)是一种网络攻击,攻击者通过伪装(spoofing)的ARP响应来欺骗网络中的其他设备,使其将网络流量发送到攻击者指定的错误物理地址。这种攻击的目的通常是中间人攻击、窃取敏感信息或监视网络通信。下面是ARP欺骗攻击的详细解释:

  1. ARP协议的漏洞: ARP协议的设计本身是基于信任的,它假设网络中的所有设备都会提供正确的ARP响应。然而,ARP是一个无验证的协议,没有机制来验证ARP响应的真实性。

  2. 攻击步骤:

    • 攻击者首先发送虚假的ARP响应,宣称自己是某个IP地址对应的正确MAC地址。
    • 被攻击的目标设备收到这个虚假的ARP响应后,会更新自己的ARP缓存表,将攻击者的MAC地址与指定的IP地址关联起来。
    • 此后,目标设备在尝试与拥有该IP地址的设备进行通信时,将流量发送到攻击者的MAC地址上。
    • 攻击者可以选择将收到的流量转发到正确的目标,以保持通信正常,或者进行拦截和修改。
  3. 攻击应用场景:

    • 中间人攻击: 攻击者可以在目标设备和通信目标之间插入自己,截获或修改通信内容。
    • 会话劫持: 攻击者截获并篡改通信,以窃取敏感信息,如登录凭据。
    • 网络监视: 攻击者截获通信以进行监视,获取有关网络活动的信息。
  4. 防范措施:

    • 使用静态ARP条目: 将关键设备的IP地址和MAC地址的映射配置为静态,减少对动态ARP表的依赖。
    • ARP缓存检测工具: 使用网络工具来监视和检测异常的ARP活动。
    • 网络流量加密: 使用加密协议(如SSL/TLS)来保护通信内容,即使被截获也难以解密。
    • ARP防护工具: 一些网络设备和安全软件提供了防护ARP欺骗攻击的功能,可以检测和防止此类攻击。

集线器与交换机的区别

早期的总线型以太网

image-20231210114922952

使用双绞线和集线器HUB的星型以太网

image-20231210115328953

使用集线器的以太网在逻辑仍是一个总线网,各立共享总线资源,使用的还是CSMA/CD协议,只能工作在半双工模式;

集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站的网卡检测);

集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作。

image-20231210115628633

以太网交换机

当一台主机要发送数据帧给另一台主机时,数据帧通过集线器时,集线器是将该数据帧,广播至该集线器下的所有主机,消耗资源较多。

image-20231210120037771

而通过交换机时,交换机会将该数据帧通过单播的方式直接对接给目的主机。很显然,交换机的优势较大。

image-20231210120200206

以太网交换机通常都有多个接口。每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式。

image-20231210120515951

以太网交换机具有并行性,能同时连通多对接口,使多对主句能同时通信,无碰撞(不使用CSMA/CD协议)。

以太网交换机一般都具有多种速率的接口,例如:10Mb/s、100Mb/s、1Gb/s、10Gb/s接口的多种组合。

以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧。

以太网交换机时一种即插即用设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的。

在交换机中,帧有两种转发方式:

  • 存储转发
  • 直通交换:采用基于硬件的交叉矩阵(交换时时延非常小,但并不会检查帧是否有差错)

image-20231210182324446

以太网的自学习和转发帧

image-20231210183528232

image-20231210184227200

image-20231210184358407

image-20231210184543177

生成树协议STP

当以太网中的多个交换机之间的链路出现故障时,则会导致最初大的以太网变成较小的以太网,导致各小群体之间无法进行通信。

image-20231210185317083

此时可以添加冗余链路来提高以太网的可靠性。

image-20231210185441942

但是此时的冗余链路会带来负面效应,形成了一个网络环路。此时会带来以下的问题:

  1. 广播风暴:网络中的广播消息在短时间内被大量传播,导致网络拥塞、性能下降甚至崩溃。广播风暴通常发生在存在网络环路的情况下,这使得广播消息在网络中无限循环。
IMG_20231210_185835
  1. 主机收到重复的广播帧:大量消耗主机资源。

  2. 交换机的帧交换表震荡(漂移):以H1为例,当H1发送消息时,交换表将记录正确的H1地址1。而当H2发送帧时,会将错误的记录H1地址2记录到交换表中,而当H3发送帧时,会将错误的记录H1地址3记录到交换表中。如此往复,H1的地址会在错误记录2和3中跳转。

image-20231210190706319

以太网交换机使用生成树协议STP(Spanning Tree Protocol),可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题。

不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路)

最终生成的树型逻辑拓扑要确保连通整个网络;当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树的重新计算。

虚拟局域网VLAN

以太网交换机工作在数据链路层(也包括物理层),使用一个或多个以太网交换机互联起来的交换式以太网,其所有站点都属于同一个广播域。随着交互式以太网规模的扩大,广播域相应扩大。

巨大的广播域会带来很多弊端:① 广播风暴 ② 难以管理和维护 ③ 潜在的安全问题

image-20231211200134696

无法减少广播出现的频率,因为在网络中会频繁出现广播信息:

  • TCP/IP协议栈中的很多协议都会使用广播
    • 地址解析协议ARP(已知IP地址,找出其相应的MAC地址)
    • 路由信息协议RIP(一种小型的内部路由协议)
    • 动态主机配置协议DHCP(用于自动配置IP地址)
  • NestBEUI:Widnows下使用的广播型协议
  • IPX/SPX:Novell网络的协议栈
  • Apple Talk:Apple公司的网络协议栈

分隔广播域的方法

使用路由器可以隔离广播域。因为路由器属于网络层,由于路由器默认情况下不对广播数据包进行转发,因此路由器很自然地就可以隔离广播域。

image-20231211210916072

但是路由器的成本较高。

此时虚拟局域网VLAN技术应运而生。


虚拟局域网VLAN(Virtual Local Area Network)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求。

image-20231211211426565

相同VLAN下的设备可以相互通信,不同VLAN下的设备不能进行直接通信。

实现机制

image-20231211211710103

交换机各端口的缺省VLAN ID:

  • 在思科交换机上称为Native VLAN,即本证VLAN
  • 在华为交换机上称为Port VLAN ID,即端口VLAN ID,简记为PVID

交换机的端口类型有以下三种:

  • Access:一般用于连接用户计算机,Access端口只属于一个VLAN,其PVID值与端口所属VLAN的ID相同(默认为1)

    • 接收处理方法:一般只接受“未打标签”的普通以太网MAC帧。根据接受帧的端口的PVID给帧“打标签”,即插入4字节的VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
    • 发送处理方法:若帧中的VID与端口的PVID相等,则“去标签”并转发该帧;否则不转发。
    image-20231211212311023
  • Trunk:一般用于交换机之间或交换机与路由器之间的互连。可以属于多个VLAN。用户可以设置Trunk端口的PVID值,默认情况下,Trunk端口的PVID的值为1。

    • 发送处理方法:对VID等于PVID的帧“去标签”后再转发
    • 接收处理方法:接收“未打标签”的帧,根据接收帧的端口的PVID给帧“打标签”,即插入4字节VLAN标记字段,字段中的VID取值与端口的PVID取值相等。
    image-20231211213339145

    image-20231211214123011

image-20231211213709139

结论:互连的Trunk端口的PVID值不等,可能会造成转发错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值