计算机网络-数据链路层

计算机网络慕课地址:https://www.bilibili.com/video/BV1c4411d7jb?p=21

1 基本概述

网络中的主机、路由器等都必须实现数据链路层

步骤操作

主机H1给主机H2发送数据,中间要经过3个路由器和电话网、局域网以及广域网等多种网络。

步骤操作

从五层协议原理体系结构的角度来看,主机应该具有体系结构中的各个层次,而且路由器只需要具有体系结构中的下面三层。

各设备通过物理层下面的传输媒体进行互连。

从层次上来看数据的流动

步骤操作

当主机H1向H2发送数据时,主机H1将待发送的数据逐层封装后,通过物理层将构成的数据包的各比特转换为电信号。

发送到传输媒体数据包进入路由器后,由下往上逐层解封到网络层。路由器根据数据包的目的网络地址和自身转发表,确定数据包的转发端口。

从网络层向下逐层封装数据包,并通过物理层将数据包发送到传输媒体,数据包最终到达H2时。还要由下往上逐层解封,最终解封出主机H1所发送的数据。

仅从数据链路层观察帧的流动

步骤操作

数据包只在数据链层从左向右沿水平方向传送,主机H1到H2的通信,可以看成是在4段不同的链路上的通信组成的。

数据链路层基本概述

2 三个重要问题

数据链路层传送的协议数据单元是

2.1 封装成帧

步骤操作

如图所示,两台主机通过一段链路互连,两台主机都会对所发送或者接收的数据包,进行五个层次的封装或者解封。

发送方将待发送的数据,通过应用层封装成应用层协议数据单元,然后交付给运输层。

运输层为其添加运输层协议首部,使之成为运输层协议数据单元,然后交付给网络层。网络层为其添加网络层协议首部。使之成为网络层协议数据单元,然后交付给数据链路层。

数据链路层给网络层协议数据单元添加一个数据链路层协议首部,简称为帧头我们将数据链路层给网络层交付的协议数据单元,添加帧头和帧尾的操作,称为封装成帧

添加帧头和帧尾的目的,都是为了在链路上以帧为单元来传送数据。也就是为了实现数据链路层本身的功能

2.2 差错控制

发送方将封装好的帧通过物理层发送到传输媒体,帧在传输过程中遭遇干扰后可能会出现误码。

接收方主机如何判断帧在传输过程中出现误码?

通过检错码来发现,发送方在发送帧之前,基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾,接收方主机收到帧后。

通过检错码和检错算法,就可以判断出帧在传输过程中是否出现了误码。

2.3 可靠传输

接收方主机收到有误码的帧后,是不会接受该帧的,将其丢弃。

如果数据链路层向其上层提供的是不可靠服务,那么丢弃就丢弃了,不会再有更多措施。

如果数据链路层向其上层提供的是可靠服务,那就还需要其他措施,来确保接收方主机还可以重新收到被丢弃的这个帧的正确副本。

换句话来说,尽管误码是不可能完全避免,但是如果能实现发送方发送什么,接收方就能收到什么,就称为可靠传输。

注意:以上三个问题都是使用点对点信道的数据链路层来举例的。

如果使用广播信道的数据链路层除了包含上面三个问题外,还有一些问题要解决

如图所示,主机A,B,C,D,E通过一根总线进行互连,主机A要给主机C发送数据,代表帧的信号会通过总线传输到总线上的其他各主机,那么主机B,D,E如何知道所收到的帧不是发送给她们的,主机C如何知道发送的帧是发送给自己的。

可以用编址(地址)的来解决

将帧的目的地址添加在帧中一起传输

数据碰撞问题

随着技术的发展,交换技术的成熟。

在有线领域使用点对点链路链路层交换机交换式局域网取代了共享式局域网

在无线局域网中仍然使用的是共享信道技术。

3 封装成帧

3.1 基本介绍

封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧。

帧头和帧尾中包含有重要的控制信息

发送方的数据链路层将上层交付下来的协议数据单元封装成帧后,还要通过物理层,将构成帧的各比特,转换成电信号交给传输媒体,那么接收方的数据链路层如何从物理层交付的比特流中提取出一个个的帧?

结论:需要帧头和帧尾来做帧定界

但比不是每一种数据链路层协议的帧都包含有帧定界标志,例如下面例子

结论:

实际上,以太网的数据链路层封装好MAC帧后,将其交付给物理层,添加8字节的前导码,然后再将比特流转换成电信号发送。

前导码中的前7个字节为前同步码,作用是使接收方的时钟同步。之后的1字节为帧开始定界符,表明其后面紧跟的就是MAC帧

另外以太网还规定了帧间间隔为96比特时间,因此,MAC帧不需要帧结束定界符。

3.2 透明传输

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

案例说明

这是发送方数据链路层收到其上层交付的协议数据单元,给其添加了帧头和帧尾,使其为帧,帧界定标志也就是个特定数据值,如果在上层交付的协议数据单元中, 恰好也包含这个特定数值,接收方就不能正确接收

步骤说明

接收方在收到第一个帧定界标志时,认为是帧的开始。当接收方再次接收到帧定界标志时会误认为帧结束了。

如果数据链路层不采取其他措施,来避免接收方对帧是否结束的误判,就不能称为透明传输。

数据链路层对上层交付的协议数据单元有限制,其内容不能包含帧定界符

3.3 解决透明传输问题

面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输

步骤说明

在发送帧之前,对帧的数据部分进行扫描,每出现一个帧定界符,就在其前面插入一个转义字符。

接收方数据链路层在物理层交付的比特流中提取帧,遇到第一个帧定界符时,认为这是帧的开始。当遇到转义字符就知道,其后面的1字节内容虽然与帧定界符相同。但是他是数据而不是定界符,剔除转义字符后将其后面的内容作为数据继续提取。

对于这个转义字符也是相同的处理,当再次提取到帧定界符时,表明这是帧的结束。

转义字符:是一种特殊的控制字符,其长度为1字节,十进制值为27,而不是ESC这3个字符

面向比特的物理链路: 使用比特填充的方法实现透明传输

发送方

在帧首部和尾部中,仅仅给出了帧定界标志,而未给出其他控制字段,而帧的数据部分,出现了两个帧定界标志。出现了两个帧定界标志。

他们实际上是数据,而不是帧定界。在发送前,可以采用零比特填充法,对数据部分进行扫描,每5个连续的比特1后面就插入1个比特0。这样就确保了帧定界在整个帧中的唯一性,也就可以实现透明传输。

接收方

接收方的数据链路层,从物理层交付的比特流中提取帧时,将帧的数据部分中的每5个连续的比特1后面的那个比特0剔除即可。

帧的数据部分长度

结论

帧的数据部分的长度,应该大于帧头和帧尾的长度。因为仅从数据链路层来看,帧的数据部分才是真正要传输的数据。

帧头和帧尾是为了实现数据链路层功能而额外添加的。

3.4 总结

4 差错检测

4.1 基本介绍

FCS作用

让接收方的数据链路层检查帧在传输过程中是否产生了误码。

4.2 奇偶校验

4.3 循环冗余校验CRC

基本概念


案例一

案列二

结论

5 可靠传输

5.1 基本概念

比特差错

其他传输差错

5.2 分组丢失

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

步骤说明

此处我们将帧的称呼改为了分组,这意味着传输差错不仅仅局限于数据链路层的比特错差。

主机H6给主机H2发送的分组到达了路由器R5,由于此时R5的输入队列快满了。R5根据自己的分组丢弃策略将该分组丢弃,这是一种分组丢失的情况。

5.3 分组失序

数据并未按照发送顺序依次到达接收端。

步骤说明

主机H6依次给主机H2发送了三个分组,最先发送的分组未必最先到达。

5.4 分组重复

步骤说明

主机H6给主机H2发送的分组,由于某些原因在网络中滞留了没有及时到达H2,这可能造成H6对该分组的超时重发。

重发的分组到达H2,一段时间后滞留在网络中的那个分组有到达了H2,这就会造成分组重复的传输差错。

5.5 总结

6 三种可靠协议

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

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

6.1 停止-等待协议

6.1.1 确认与否认
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值