[计网]3.数据链路层

目录:

数据链路层

数据链路层概述

  • 链路:就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点
  • 数据链路:把实现通信协议的硬件和软件加到链路上,就构成了数据链路
  • :数据链路层以帧为单位传输和处理数据
  • 封装成帧:为网络层数据单元添加帧头和帧尾,使其层位数据链路层的数据单元(帧)

    • 帧头:包换源地址和目的地址和类型
    • 帧尾:用于差错检测,以便于接收方能接受正确的数据包
  • 差错检测:帧在传输过程中可能出现误码,这个时候接收方通过帧尾(检错码)来判别是否出现误码

    • 接收方如果收到有误码的帧,会将其丢弃
    • 不可靠传输:数据链路层若为其上层提供的是不可靠传输服务,则丢弃后不会有其他措施
    • 可靠传输:若提供的是可靠传输服务,则还需其他措施来确保接收方能收到正确的帧的副本
  • 可靠传输:实现发送方发送什么,接受方就收到什么

封装成帧

所谓封装成帧,是指数据链路层给上层交付的协议数据单元添加帧头和帧为使其成为帧,帧头和帧尾中包含重要的控制信息,其中FCS为检测码

image-20211001134742580

值得一提的是,数据链路层将上层协议数据单元封装成帧后,物理层将构成帧的各比特转换成电信号发送给传输媒体

帧定界

帧定界解决的是接收方的物理层如何通过传输过来的比特流中提取出帧,接收方的物理层通过帧定界来提取帧

在ppp(点对点传输)帧中:在帧头和帧尾中各包含有一个长度为1字节的标志字段,在完成帧定界

image-20211001135238855

在MAC帧中:不包含标志,而是让物理层为其添加一个8字节的前导码

  • 时钟同步码:为前导码的前七码,作用是使接收方的时钟同步
  • 帧开始定界码:为前导码的最后一码,其作用是表明在其后即为MAC帧

image-20211001135553269

  • 以太网还规定了帧发送间隔时间为96比特时间,因此,MAC帧并不需要帧结束定界符

透明传输

透明传输是指数据链路层对上层交付的传输数据并没有任何限制,就好像数据链路层不存在一样

其主要解决的问题就是在帧数据中,包含了帧头或帧尾的信息,接收方该如何判别这是定界信息还是数据的问题

  • 面向字节的物理链路使用的是字节填充(或称字符填充)的方法实现透明传输,其意思是,在发送帧之前,扫描帧的数据段,若发现了与帧定界则在其前面添加一个转义字符

    • 在接收方扫描比特流时,从第一个帧定界判别为开始,后面遇到转义字符则将转义字符后的比特流视作数据
    • 若扫描时发现出现转义字符,其也是在前面添加一个转义字符
    • 转义字符为特殊的控制字符,十进制为27,长度为一个字节

image-20211001221721807

  • 面向比特的物理链路使用比特填充的方法实现透明传输,在发送帧之前,扫码帧的数据段,在每连续五个1后面添加一个0,这样在接收方接受的时候,将连续五个1后面的0剔除即可
  • 这样就确保了帧定界符的唯一性

image-20211001221424255

最大传送单元(MTU)

为了提高帧的传输效率,理应使帧的数据部分长度尽可能大些,因为数据部分才是主要的传输任务,而帧头和帧为即是为了完成数据链路层功能而添加的

考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大的传送单元MTU

差错检测

  • 误码:比特在传输过程中可能会产生差错,1可能变成0,这为比特差错或称为误码
  • 误码率BER:在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率(Bit Error Rate)
  • FCS:为帧尾所包含的控制信息,又称差错检测码,用于检测数据在传输过程中是否出现了误码

奇偶校验

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

image-20211002095626257

  • 通过上述可以发现:
  • 如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码
  • 如果有偶数个位发生误码,则奇偶性不变,不能检查出误码,这是因为变化的0和1两两抵消了(漏检)

由于奇偶校验的漏检率比较高,所以数据链路层一般不采用此方法

★循环冗余校验CRC

  • 收发双方约定好一个生成多项式G(x)
  • 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输
  • 接收方通过生成多项式来计算收到的数据是否产生了误码

image-20211002104347587

image-20211002104445427

需要注意的是,这儿的除法中的“减”是异或运算,来看下面的例子

发送方:

image-20211002104744895

接收方:

image-20211002104828815

需要注意的是

image-20211002104915739

★可靠传输

使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)

检测出差错后,如何处理则取决于数据链路层向其上层提供的服务类型

  • 不可靠传输:仅仅丢弃误码,什么都不做
  • 可靠传输:需要想办法让发送方发送什么接收方就受到什么

一般情况下,有线链路误码率低,不需要数据链路层向上提供可靠服务,即使出现误码,可靠传输的问题由其上层处理

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

比特差错只是传输差错中的一种

传输差错还包括:分组丢失、分组失序、分组重复

综上所述,可靠传输不仅局限于数据链路层,其他各层均可选择实现可靠传输,例:

image-20211002105820187

停止-等待协议SW

  • ACK:确认分组,接收方在接受到发送方的数据后,检测无误码情况,则向发送方发送该分组
  • NAK:否认分组,接收方若检测出误码,则向发送方发送该分组要求重传出错的分组
  • 计时器:发送方长时间未收到ACK或NAK,若时长超过计时器所定时长,则会重发该分组,称为超时重传

    • 一般重传时间为略大于发送方到接收方的平均往返时间
  • 序号:为每个分组携带一个0或1的序号,用于解决分组迟到和重复的问题

综上所述,停止等待可总结为:

  1. 接收方检测到数据分组有误码时,将其丢弃并等待发送方的超时重传,也可给发送方发送NAK分组让其尽早重传
  2. 为了让接受方能判断所收到的分组是否重复,需要给数据分组分组编号,由于每个分组都会被处理,所以只需要1个比特编号就可以了,即0或1
  3. 为了让发送方能判断所收到的ACK分组是否重复,需要给ACK分组编号,所用比特数量与数据分组所用比特数量一样
  4. 超时计时器设置的重传时间一般选择略大于“从发送方到接收方的平均往返时间”

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

计算公式:数据分组的发送时延 / 数据分组的发送时延+往返时间+确认分组的发送时延

由于确认分组的发送时延远小于往返时间,当数据分组的发送时延过大时,其信道利用率则特别低

例:

image-20211002170008674

停止-等待协议又称为自动请求重传ARQ,意思是重传的操作是自动进行的

回退N帧协议GBN

停止-等待协议中,发送方每发送一个数据分组,就至少要等待一个往返时间,当往返时间较大时,信道利用率则很大

如果发送方在收到接收方的确认分组前,可以发送多个分组,就能解决这个问题

此方法又称流水线传输,这个传输也是回退N帧的主要思想

  • 发送窗口:发送方发送数据分组的容量称为发送窗口
  • 接受窗口:接收方能接受分组的容量称为接受窗口
  • 累积确认:接受方可在接收完发送方所发送的全部分组时,再发送一个最后接受分组序号的确认分组,例如ACK4,则代表最后一个接受的是序号四分组

image-20211003002136917

一句话总结就是:发送方发送多个分组,接收方依次接受分组,遇到有误码的则需要重发这一段所发送的所有分组,这就是回退N帧

选择重传协议SR

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

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

我们可以设法只重传出现误码的数据分组,因此,接收窗口的尺寸应该大于1以便接收方收下失序到达但无误码并且序号落在接收窗口的那些数据分组,等到所缺分组收齐后再一并送交上层

选择重传为了让发送方仅重传出现差错的分组,接收方不能采用累积确认,而是对每个正确接收到的数据分组进行逐一确认

image-20211003011233606

小结

停-等协议采用逐一发送,逐一接收,逐一确认,遇到误码发送NAK,或等待接收方超时重传,发送方再收到ACK后才会发送下一分组,因为都是逐一进行,则序号为0或1即可

回退N帧协议采用多组发送,逐一接收,多组确认,遇到误码则需将这一组数据进行重传,而因采用多组确认,则最后无需确认分组序号前的数据进行确认,哪怕之前这些数据分组丢失也不会有问题

选择重传协议采用多组发送,多组接收,逐一确认,由于逐一接收,则遇到有误码的分组只需重传该分组,待接收窗口内的所有分组都被正确接收,接收窗口才会向前滑动,发送方只有收到发送窗口内分组的所有确认信息,才能向前滑动

PPP点对点协议

ppp是目前使用最广泛的点对点数据链路层协议,我们使用的电信,联通,移动等就是用户通过ppp协议连接因特网的,其也广泛应用于广域网链路之间的专用线路

ppp协议构成

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

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

image-20211003132841394

PPP协议帧格式

其帧格式如下所示

image-20211003132936731

其拥有透明传输和CRC冗余校验的特性

ppp协议工作状态

其工作状态如下所示:

image-20211003133553277

HDLC(高级数据链路控制)协议

  • HDLC既可以用于点对点链路,还可以用于点对多点协议
  • 帧定界符:01111110
  • HDLC用于广域网点对点专线连接
  • 其是面向比特的一种协议
  • 基于任何一种比特流都可以完成透明传输
  • 其只能运行在同步串行线路
  • 其格式如下:

    • image-20211009020542660

媒体接入控制

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

其分为两类,具体如图所示:

image-20211003213513482

静态划分信道

静态划分信道分为:频分多址,时分多址,码分多址,其采用预先固定分配好信道,这类方法非常不灵活,对于突发性数据传输信道利用率会很低,通常再无线网络的物理层中使用,而不是数据链路层中使用

  • 信道复用:复用是通信技术中的一个重要概念,复用就是通过一条物理线路同时传输多路用户的信号,当网络中传输媒体的传输容量大于多条单一信道传输的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽
  • 例如:三个用户可在发送端使用复用器,在接收端使用分用器,就可以共享一条信道发送数据

频分复用FDM

将传输线路的频带资源划分成多个子频带,形成多个子信道,,各子信道之间需要流出隔离频带,以免造成子信道间的干扰

当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上

接收端由相应的分用器通过过滤波将各路信号分开,将合成的复用信号恢复成原始的多路信号

image-20211003215608691

时分复用TDM

将时间划分成一个个的时隙,时分复用技术将传输线路的带宽资源按时隙轮流分配给不同的用户,每对用户只在所分配的时隙里使用线路传输数据

时分复用技术将时间划分成了一段段等长的时分复用帧

每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙,每一对用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度

image-20211003215943363

波分复用WDM

波分复用其实就是光的频分复用,如下图所示

image-20211003220142252

码分复用CDM

码分复用CMD是另一种共享信道的方法,实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA

同理,频分复用和时分复用同样可用于多址接入,相对应的是频分多址和时分多址

  • 某种情况下,多址可看作是复用的应用

码分复用的每一个用户可以在同样的时间使用同样的频带进行通信

由于个用户使用不同的码型,因此各用户之间不会造成干扰

image-20211003224047555

例如:

image-20211003223449871

接收方通过发送发发送的码片序列和收到的码片序列做规格化内积计算

  • 如果结果为1,则发送方发送的为比特1
  • 如果结果为-1,则发送方发送的为比特0
  • 如果结果为0,则判断该站点未发送数据

image-20211003225457829

小结

  • 频分复用:将信道划分成多个子信道,用户可在同时间不同的子信道内发送数据
  • 时分复用:将信道划分成多个时隙,每个用户独享一个时间段,用户可在该时间向信道内发送信息
  • 波分复用:利用不同光的波长划分出不同的信息
  • 码分复用:给每个用户分配一个m长的码片序列,用该序列代替比特1,该序列反码代替比特0,用户使用该序列发送信息,接收方用收到的序列与用户发送的序列做规格化内积运算,判断用户发送的是比特0还是1
  • 多址可看作复用的应用,TDMA、FDMA、CDMA、是常见的物理层信道复用技术,属于静态划分信号,用于多用户共享信道

动态接入控制

随机接入 -- CSMA/CD协议(适用于有线网)

多个主机连接到一根总线上,两个主机同时发送帧的时候,就会产生冲突,其便不适用于无线网络,如图所示

早期以太网采用载波监听多址接入/碰撞检测 CSMA/CD协议来解决该问题

image-20211004032335070

  • 强化碰撞:发送端检测到碰撞后发送人为干扰信号,让所有主机尽快收到碰撞信号
  • 争用期:以太网的端到端往返传播时延,已被规定好了(例:10Mb/s以太网的争用期为512bit)
  • 最小帧长:若帧小于所规定的最小帧长,则起发送完毕后不会再对该帧进行碰撞检测,最小帧长为64字节
  • 最大帧长:帧的最大长度为1518字节,带VLAN的为1522字节

image-20211004121115249

帧发送流程

image-20211004121752748

帧接收流程

image-20211004121837307

小结

image-20211004122417609

随机接入 -- CSMA/CA协议(适用于无线网)

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

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

  • 如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高
  • 存在隐蔽站问题,进行碰撞检测的意义也不大

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

  • 使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收

802.11的MAC层定义了两种不同的媒体接入控制方式

  1. 分布式协调功能能DCF:没有中心控制站点,每个站点使用CSMA/CA协议通过争取信道来获得发送权
  2. 点协调功能PCF:PCF方式使用集中控制的接入算法
帧间间隔IFS

802.11规定,所有站点,必须在持续检测到信道空闲一段指定时间后才能发送帧,这个时间段称为帧间间隔IFS

常用的两种帧间间隔如下:

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

    • 适用于:ACK帧、CTS帧、MAC帧分片帧、回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧
  • DCF帧间间隔DIFS(128微秒):在DCF方式中用来发送数据帧和管理帧
退避算法

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

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

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

退避算法流程

  1. 站点为退避计时器设置一个随机的退避时间

    1. 当退避计时器为零时,开始发送数据
    2. 当退避计时器的时间未减少到零时,而信道又转变为忙状态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过DIFS时间后,继续启动退避计时器
  2. 再进行

image-20211004140750950

退避算法图示

image-20211004141315390

信道预约

为了见可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约

  1. 请求发送RTS帧:源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RST帧,它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间
  2. 允许发送CTS帧:若目的站正确收到源站发送的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS,它也包括这次通信所需的持续时间(从RTS帧中将持续时间复制到CTS帧中)
  3. 源站收到CTS帧后,再等到一段时间SIFS后,就可以发送其数据帧
  4. 若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK

image-20211004161327901

虚拟载波监听

image-20211004161716165

小结

  • 核心原理:CMSA/CA采用退避算法来避免各种可能的碰撞
  • 退避算法:采用一个计时器来限制站点的数据发送,计时器在信道忙时会冻结,只有等计时器归零时,该站点才能发送数据
  • 帧间间隔:帧发送完毕后,必须等待帧间间隔才能发送下一段帧数据
  • 信道预约:进行信道预约时需要先发送一个RTS,然后等待接收方发来CTS,才能发送数据帧
  • 虚拟载波监听:RTS、CTS、数据帧都能携带通信所需时间,站点只要监听到其中任何一个,就能知道信道忙

MAC地址、IP地址、ARP协议

MAC地址

  • MAC地址:数据链路层地址,每个主机唯一的标识
  • 每个主机发送的帧中必须携带源主机的MAC地址和目的主机的MAC地址
  • MAC地址又被称为硬件地址和物理地址,但其不属于物理层
  • MAC地址是网络上各接口的唯一标识,而不是对网络上各设备的唯一标识

image-20211004180146343

IP地址

IP地址是因特网(Internet)上的主机和路由器所使用的地址,用于标识两部分信息:

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

很显然,之前介绍的MAC地址不具备区分不同网络的功能

  • 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址
  • 如果主机所在的网络需要接入因特网,则IP地址和MAC地址都需要使用

数据包转发过程中,源IP地址和目的IP地址保持不变源MAC地址和目的MAC地址逐个链路(或逐个网络)改变

ARP协议

ARP协议用于解决:如何通过相应的IP地址找到对应的MAC地址,其又称为地址解析协议

  • ARP高速缓存表:每个主机都有一张ARP高速缓存表,表中存在各个主机的IP地址和其所对应的MAC地址

    • 其类型分为静态和动态两种

      • 静态:为运维人员自己配置的
      • 动态:为自己获取的,生命周期为2两分钟
  • ARP请求报文:ARP请求报文中包括该主机自己的IP地址和MAC地址,和其想获取目标主机的IP地址
  • ARC响应报文:ARP响应报文中包括该主机自己的IP地址和MAC地址

其流程如下所示:

  1. 源主机在自己的ARP高速缓存表中查找目的主机的IP地址所对应的MAC地址

    1. 若找到了,则可以封装MAC帧进行发送
    2. 若找不到,则发送ARP请求(封装在广播MAC帧中)
  2. 目的主机收到ARP请求后,将源主机的IP地址与MAC地址记录到自己的ARP高速缓存表中

    • 然后源主机发送ARP响应(封装在单播MAC帧中)
    • ARP响应中包含有目的的主机的IP地址和MAC地址
  3. ARP的作用范围:逐段链路或逐个网路使用
  4. 除ARP请求和响应外,ARP还有其他类型的报文(例如用于检查IP地址冲突的”无故ARP、免费ARP“)
  5. ARP没有安全验证机制,存在ARP欺骗(攻击)问题

集线器与交换机的区别

image-20211004234205959

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

  • 以太网交换机工作在数据链路层(也包括物理层)
  • 以太网交换机收到帧后,在帧交换表中查找帧的目的MACD地址所对应的接口号,然后通过该接口转发帧
  • 以太网通过自学习算法自动逐渐建立起帧交换表
  • 以太网自学习和转发帧流程如下:

    1. 收到帧后进行登记,登记内容为帧的源MAC地址及进入交换机的接口号
    2. 根据帧的目的MAC地址和交换机的帧交换表对帧进行转发,有以下三种情况:

      • 明确转发:交换机知道应当从哪个(或那些)接口转发该帧(单播、多播、广播)
      • 盲目转发:交换机不知道应当从哪个端口转发帧,只能将其通过除进入交换机的接口外的其他所有接口转发(也称为泛洪)
      • 明确丢弃:交换机知道不应该转发该帧,将其丢弃
  • 帧交换表中每条记录都有自己的有效时间,到期删除,原因如下:

    • 交换机的接口改接了另一台主机
    • 主机更换了网卡

虚拟局域网VLAN概述

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

简单来说就是同一个VLAN中的主机可以通信,不同VLAN中的主机不能通信

虚拟局域网的实现需要交换机支持IEEE 802.1Q帧和其接口需支持不同类型

IEEE 802.1Q帧

  • IEEE 802.1Q帧对以太网的MAC帧格式进行了扩展,插入了4字节的VLAN标记
  • 802.1Q帧是由交换机来处理的,而不是用户主机来处理的

image-20211005030240760

  • VLAN标识符VID:位于VLAN标记的最后12比特,它唯一标志以太网帧属于哪一个VLAN

    • VID的取值范围是 1 ~ 4094
  • 打标签:当交换机收到普通的以太网帧时,会将其插入4字节的VLAN标记转换为802.1Q帧
  • 去标签:当交换机转发802.1Q帧时,可能会删除其4字节VLAN标记转变为普通以太网帧

交换机的端口类型

  • 交换机类型:

    • Access
    • Trunk
    • Hybrid
  • PVID:华为交换机的各端口缺省ID,交换机的每个端口有且仅有一个PVID,其对应的为该VLAN中主机的VID
  • PVID相同的端口直接可以互通,不同的端口直接不能互通

image-20211005032649917

本文链接:

https://nullcode.fun/173.html
1 + 6 =
快来做第一个评论的人吧~