3.数据链路层

一 定义

(一) 基本概念

  • 结点: 主机,路由器
  • 链路: 网络中两个节点的物理通道,链路的传输介质主要有双绞线,光纤等,为物理层的概念
  • 数据链路: 网络中两个节点之间的逻辑通道, 把实现控制数据传输协议的硬件和软件加到链路上就构成了数据链路,为数据链路层的概念
  • 帧: 数据链路层将网络层的分组封装成帧进行传输

(二) 功能描述

数据链路层在物理层的基础上向网络层提供服务,其主要作用是加强物理层的比特流传输,将物理层提供的可能出错的物理连接,改造为

逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路.其最基本的服务是将源自网络层的数据可靠的传输到相临节点的目标机网络层.

  • 为网络层提供服务 (无确认的无连接服务,有确认无连接服务,有确认面向连接服务)
  • 链路管理 (即连接的建立,维持,释放)
  • 组帧
  • 流量控制
  • 差错控制

二 组帧

(一) 封装,定界,同步

封装成帧 指将来自网络层的数据,在其前后分别添加首部和尾部,以构成帧(称为组帧)

首部和尾部包含许多控制信息,他们的的一个重要作用是确定帧的界限(帧定界)

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

透明传输 指不管所传输的数据是什么样的比特组合,都应该能在链路上传输.

也即,当所传输的比特组合恰巧与某一个控制信息完全一样时,就必须采取何时的措施,使接收方不会将这样的数据

误以为使某种控制信息.这样才能保证数据链路层的传输是透明的

image-20201125214202278

(二) 组帧的方法

字符计数法

image-20201125214725673

字符填充的首尾定界法
  • 发送方在封装帧时,数据的可能有图中两种类型,传输数据时可能会出现图中所述的错误
    image-20201125214914616
  • 那么我们如何去解决这种错误呢?
  • 我们可以在特殊字符(SOH、EOT、ESC)前面填充一个转义字符来区分
  • 发送方在封装帧时,进行扫描,扫描到SOH、EOT、ESC(转义字符)时在其前面添加转义字符,以区分,告诉接受方这个和特殊字符相同的字符是数据,当然这些约定由双方之间的协议完成
    image-20201125214936174
零比特填充的首尾标志法
  • 以01111110为头尾界限,为了不使出现信息位中出现的比特流0111110被误判位帧的首位标志,发送端在信息位中连续遇到5个1时,就

在其后插入一个0,想反,接收方遇到5个1,去除一个0,以恢复原信息

image-20201125215117708

违规编码法
  • 该编码将1编码位’高-低’,将0编码位’低-高’,而’低-低’,'高-高’为违规编码,因此利用该特性,作为界限

image-20201125215632420

三 差错控制

实际的通信链路都不是理想的,比特在传输过程可能会产生差错,1变成0,0变成1.这就是比特差错

通常利用编码技术进行差错控制,主要有两类:

  • 检错编码: 接收方发现出错,通知发送方重传
  • 纠错编码: 接收方不仅能发现出错,还能纠错

(一) 冗余编码

数据链路层的编码针对的是一组比特,他通过冗余码的技术实现一组二进制比特在传输过程中是否出现了差错

冗余编码: 在数据发出前,先按照某种关系附加上一定的冗余位,构成一个符合某一规则的码字后再发出

当发送的有效数据编码时,相应的冗余位也会随之变化,接收方可根据码字是否符合规则,从而判断是否出错

(二) 检错编码

纠错编码主要借助冗余编码技术

奇偶校验码

image-20201125220821642

循环冗余码(CRC)

原码如何编码生成CRC码?

  1. 首先,发送端和接受端会有一个生成多项式G(x)约定,生成多项式G(x)的最高次幂为R。任意一个二进制数码都可用一个系数为0或1的多项式与之对应。比如:二进制数码 1101 对应的G(x)=1X3+1X2+0X1+1X0= X3+X2+1
  2. 在发送端,将要传送的K位二进制信息码左移R位,将它与生成多项式G(x)所对应的的二进制数码进行模2除法,产生余数,生成一个R位检验码,并附在信息码后,构成一个新的二进制码(CRC)码,共K+R位。

模2运算:分为模2加、模2减、模2乘、模2除,不考虑进位借位

例题: 设生成多项式G(x)=X3+X2+1 ,信息码为 101001 ,求对应的CRC码 。

  • 分析:校验位长度:R=3 , 信息码长度:K=6 , CRC码长度:N=R+K= 9
  • 生成多项式对应二进制码:1101

(1)信息码左移R位

  • 发送端将原信息码左移R位,低位补0:101001 000

(2)模2除法得余数

  • 方法:发送端用移位后的信息码 101001000 除以G(x)所对应的二进制数码 1101 求余数,余数除得够就写1,不够就写0,直到余数小于 1101 ,余数即为校验位的数值。
  • 图中即为具体计算步骤,得到最后的结果CRC码为:101001 001,然后发送端将CRC码101001 001发送给接收端。
    image-20201125232545108

(3)如何检错和纠正错误?

  • 接收端收到CRC码后,用生成的CRC码除以生成多项式G(x)所对应的的二进制数码,若余数为0,则信息码在传输过程中没有产生错误,数据正确。
  • 若接受到的CRC码为C9C8C7C6C5C4C3C2C1= 101001011,除以G(x)所对应的二进制码1101得到余数为010,不为0,说明数据在传输过程中产生错误。010=2(10)说明C2出错,将C2取反即可纠正错误。

(三) 纠错编码(海明码)

关于海明码这里有篇文章简单易懂:

https://www.cnblogs.com/lesroad/p/8688634.html

四 流量控制 ⭐

(一) 相关定义

流量控制
  • 流量控制是数据链路层的一种功能,流量控制对数据链路上的帧的发送速率进行控制,以使接收方有足够的缓冲空间来接受每个帧
  • 流量控制的基本方法是由接收方控制发送方发送数据的速率
  • 常见的流量控制方式有两种:停止-等待协议、滑动窗口协议
可靠传输机制
  • 可靠传输机制是为了使数据可以正确稳定的传输和接收而制定的规则。
  • 数据链路层的可靠传输通常使用确认超时重传两种机制来完成。
  • 确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认
  • 超时重传是指发送方在发送某一个数据帧以后就开始一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。
  • 自动重传请求(Auto Repeat reQuest,ARQ),通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。
  • 传统自动重传请求分为三种,即停等式(Stop-and-Wait)ARQ、后退N帧(Go-Back-N)ARQ以及选择性重传(Selective Repeat)ARQ。后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大,帧在线路上可以连续地流动,因此又称为连续ARQ协议。
滑动窗口机制
  • 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口
  • 发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。
  • 不同的滑动窗口协议窗口大小一般不同。
  • 发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。

image-20201125234037145
image-20201125234050182

  • 发送端,每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(即窗口内的帧全部是已发送但未收到确认的帧),发送方就会停止发送,直到收到接受方发送的确认帧使窗口移动,窗口内有可以发送的帧,之后才开始继续发送。
  • 接受端,当收到数据帧后,将窗口向前移一个位置,并发回确认帧,若收到的数据帧落在接受窗口之外则一律丢弃。
  • 滑动窗口有以下重要特性
  1. 只有接受窗口向前滑动时(同时接受方发送确认帧),发送窗口才有可能(只有发送方收到确认帧才是一定)向前滑动。
  2. 从滑动窗口的概念看,停止-等待协议、后退N帧协议和选择重传协议只有在发送窗口大小和接收窗口大小有所差别。
  3. 停止-等待协议:发送窗口大小=1,接受窗口大小=1;
  4. 后退N帧协议:发送窗口大小>1,接受窗口大小=1;
  5. 选择重传协议:发送窗口大小>1,接受窗口大小>1;
  6. 当接受窗口的大小为1时,可保证帧的有序接受。
三者关系
  • 可靠传输: 传输的稳定和正确
  • 流量控制: 传输的速率

二者可用滑动窗口来解决

(二) 停止-等待协议

  • 停止-等待协议也称为单帧滑动窗口与停止-等待协议
  • 当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。
  • 该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。
  • 由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。
  • 由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。
1.无差错情况

image-20201125234111766

2.有差错情况
  • 数据帧丢失或检测到帧出错

发送方在发送一帧后,会在本地缓存他的副本,若出现差错,可进行重传

image-20201125224839071

  • ACK确认帧丢失

image-20201125225051156

  • ACK确认帧迟到超时

image-20201125225149862

3.性能分析

由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n帧协议(GBN)和选择重传协议(SR)

(三)多帧滑动窗口与后退N帧协议(GBN)

后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍未收到确认帧,就要重发相应的数据帧。

如图所示,源站向目的站发送数据帧.当发送完0帧后,可用继续发送1,2帧.由于连续发送了多帧,所以确认帧必须要指明是对哪一帧进行确认.

为了减少开销,GBN协议还规定接收端不一定每收到一个真确帧就返回一个确认帧,而是可用在连续收到好几个正确的确认帧后,才对最后一个数据帧发送确认信息.

这就是说,对第N帧的确认就代表从当前N到之前的所有帧都成功接收了,且希望下一次接收N+1 帧

如下图,虽然有在有差错的第2帧后又接收到了正确的5个帧,但接收方必须抛弃这些帧,并重复发送一个确认帧ACK1,请求发送发重发1之后的帧

而接收方发现帧2超时,也即久久没有收到ACK2,就会重新发送帧2及其之后的帧

image-20201125230917755

  • 从这里不难看出,后退n协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。

  • 由此可见,若传输信道的传输质量很差因而误码率较大时,连续测协议不一定优于停止等待协议。

  • 注意,根据累计确认机制,发送方的发送帧号等于接收方最大ACK数+1,如:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrd7oZJG-1606570953411)(C:\Users\86180\AppData\Roaming\Typora\typora-user-images\image-20201125231155840.png)]

    • 因为接收端可以累积确认,所以只要看最大的确认帧就行,所以接下来发送方要重发的帧数为4

(四)多帧滑动窗口与选择重传协议(SR)

  • 在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。由此诞生了SR(SELECTICE REPEAT)。
  • SR工作原理:当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以将已存于缓冲区中的其余帧一并按正确的顺序递交上一层。
  • 显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

image-20201125231415209

五 数据链路层设备

网卡

网卡是局域网中提供各种网络设备与网络通信介质相连的接口,全名是网络接口卡,也叫网络适配器,其品种和质量的好坏直接影响网络的性能和网上所运行软件的效果。网卡作为一种I/O接口卡插在主机板的拓展槽上,其基本结构包括接口控制电路、数据缓冲器、数据链路控制、编码解码电路、内收发器、介质接口装置等6大部分。

网卡用于物理层和数据链路层。涉及帧的发送与接收、帧的封装与拆分、数据的编码与解码等功能。

image-20201125233540709

网卡MAC地址

每一网卡在出厂时都被分配了一个全球唯一的地址标识,该标识被称为网卡地址或媒体访问控制地址,由于该地址是固化在网卡上的,所以又被称为物理地址或硬件地址。网卡由48bit长度的二进制数组成。

网桥

网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条背板总线的。后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。

(1)网桥的基本特征

1.网桥在数据链路层上实现局域网互连;

2.网桥能够互连两个采用不同数据链路层协议、不同传输介质与不同传输速率的网络

3.网桥以接收、存储、地址过滤与转发的方式实现互连的网络之间的通信;

4.网桥需要互连的网络在数据链路层以上采用相同的协议

5.网桥可以分隔两个网络之间的通信量,有利于改善互连网络的性能与安全性。

(2)网桥原理

网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。它工作于数据链路层,不但能扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。网络1和网络2通过网桥连接后,网桥接收网络1发送的数据包,检查数据包中的地址,如果地址属于网络1,它就将其放弃,相反,如果是网络2的地址,它就继续发送给网络2.这样可利用网桥隔离信息,将同一个网络号划分成多个网段(属于同一个网络号),隔离出安全网段,防止其他网段内的用户非法访问。由于网络的分段,各网段相对独立(属于同一个网络号),一个网段的故障不会影响到另一个网段的运行。

image-20201125233822979

网桥可以是专门硬件设备,也可以由计算机加装的网桥软件来实现,这时计算机上会安装多个网络适配器(网卡)。

网桥的功能在延长网络跨度上类似于中继器,然而它能提供智能化连接服务,即根据帧的终点地址处于哪一网段来进行转发和滤除。网桥对站点所处网段的了解是靠“自学习”实现的,有透明网桥、转换网桥、封装网桥、源路由选择网桥。

交换机

交换机也是工作在数据链路层的网络互连设备,是局域网组网中最常用也是最主要的网络设备之一。交换机的种类很多,如以太网交换机、FDDI交换机、帧中继交换机、ATM交换机和令牌交换机等。

(1)交换机的功能

所有交换机的基本功能都是相同的,即接收帧、寻找通向目的地址的端口、发送帧。

(2)交换机的工作方式

一些交换机在发送帧前,可以帮助网络检查更多的帧信息,而不仅仅是检查源地址和目的地址。正是基于这些区别,交换机有4种方式。

image-20201125233935073

1)直通交换

2)无碎片帧交换

3)存储转发交换

  1. 自适应交换
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值