网络-数据链路层回顾

数据链路层是干嘛的?

网络层是研究分组怎样从一个网络通过路由器转发到另一个网络

数据链路层主要研究在同一个局域网中,分组怎样从一个主机传送到另一个主机(不经过路由器)

数据链路层主要使用两种信道:

点对点信道:使用一对一的点对点通信方式,使用PPP协议。

广播信道:使用一对多的广播通信方式,使用CSMA/CD协议。

数据链路层的三个需要解决的基本问题:封装成帧、透明传输、差错检测

了解以太网MAC层的硬件地址

适配器、转发器、集线器、网桥、以太网交换机的作用以及适用场合

两个主机进行通信时数据链路层的地位

主机H1通过电话线上网,中间经过三个路由器(R1,R2和R3)连接到远程主机H2。中间经过的网络可以是多种的。

如下图中所示的:电话网、局域网、广域网。

当主机H1向H2发送数据时,从协议的层次上观察,数据的流动如下图所示。

主机H1和H2都有完整的五层协议栈,但是由路由器转发分组时使用的协议栈只有下面三层。

数据进入路由器后先从物理层开始最后上升的网络层,在转发表中查找到下一跳的地址后,再下到物理层转发出去。

当我们专门研究数据链路层的问题时,我们可以只关心在协议栈中水平方向的各个数据链路层,如下图所示。

H1的链路层---->R1的链路层---->R2的链路层---->R3的链路层---->H2的链路层

H1和H2的通信可以看成是由四段不同的数据链路层通信组成,即:H1--->R1,R1---->R2,R2---->R3,R3---->H2

这四段不同的链路层可能采用不同的链路层协议。

使用点对点信道的数据链路层

数据链路和帧

首先我们需要区分什么是链路什么是数据链路

  • 链路(物理链路):就是从一个结点到相邻结点的一段物理线路(有线或无线),中间没有任何其他的交换结点。

两个计算机之间的通信路径,往往需要经过许多这样的链路。链路只是通信路径的组成部分

  • 数据链路(逻辑链路):数据链路层上传输数据,在有物理线路之外,还需要有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

数据链路层一般通过网络适配器(硬件和软件)来实现这些协议

  • 帧:点对点信道的数据链路层的协议数据单元。

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层

网络层协议数据单元---IP数据报(数据报、分组、包)

点对点数据链路层进行通信的主要步骤:

       假设两个结点AB之间进行,则只需关注这两个节点的网络层、数据链路层、物理层

  1. 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
  2. 结点A把封装好的帧发送给结点B的数据链路层
  3. 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层,否则丢弃这个帧

 

需要解决的三个基本问题

  • 封装成帧

什么是封装成帧?

在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。

如何封装成帧?

网络层的IP数据报传送到数据链层就成为帧的数据部分。

在帧的数据部分的前面和后面分别添加上首部和尾部,就构成一个完整的帧。

这个完整的帧就是数据链路层的数据传送单元

帧的首部和尾部的作用

1.进行帧界定:接收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束

2.添加一些必要的控制信息

帧界定

帧的开始结束的标记使用专门指明的控制字符:

在一个帧的最前面添加SOH(Start Of Header)控制字符,表示帧的首部开始

在一个帧的末尾添加EOT(End Of Transmission)表示帧的结束。

SOH和EOT只是控制字符的名称。并不是真正的字符S、O、H(或者E、O、T)。

它们十六进制编码分别为01(二进制为00000001)04(二进制为00000100)

最大传送单元MTU(Maximum Transfer Unit)——每一种链路层协议都规定的所能传送的帧的数据部分长度上限

  • 透明传输

什么是透明传输?

无论什么比特组合的数据都能通过这个数据链路层。也就是说数据链路层对这些数据来说是透明的

怎么实现透明传输?

因为帧的开始和结束的标记使用专门指明的控制字符。

因此,所传输的数据中的任何8比特的组合一定不允许和用作帧界定的控制字符的比特编码一样。

为了解决透明传输问题,我们就需要解决在数据中可能出现的控制字符SOH或者EOT不被解释为控制字符

解决了以上问题就能实现透明传输。

解决办法:字节填充或者字符填充

在发送端的数据链路层的数据中出现控制字符 SOH 或者 EOT 的前面插入一个转义字符 ESC (其十六进制编码是1B,二进制是00011011)

如果转义字符也出现在数据当中,解决方法仍然是在转义字符前面插入一个转义字符

在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符,因此当接收端收到连续两个转义字符时,就删除其中前面的一个。

以上操作被称为字节填充(byte stuffing)或字符填充(character stuffing)

  • 差错检测

在传输过程中可能会产生差错,如0变成1,或者1变成0。这称为比特差错。

在传输过程中没有出现比特差错,但出现帧丢失、帧重复、帧失序这三种情况,则属于传输差错,比特差错是传输差错的一种

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(B

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值