乐趣区

关于计算机网络:计算机网络31数据链路层基本概念

数据链路层应用的信道次要有一下两种类型

点对点信道

这种信道应用一对一的点对点通信形式。

播送信道

这种信道次要是用一对多的播送通信形式。

局域网尽管是个网咯,但咱们并不把局域网放到互联网上思考。在本章中咱们钻研的是在同一个局域网中,分组怎么从一个主机传送到另一台主机,但并不通过路由器转发,从整个互联网上来看,局域网中依然属于数据链路层的范畴。

本章最次要的知识点

  • 熟路链路层的点对点信道和播送信道的特点,以及这两种信道应用的协定 PPP 协定和 CSMA/CD 协定的特点
  • 数据链路层的三个根本问题:封装成帧,通明传输,过错检测。
  • 以太网 MAC 层的硬件地址
  • 适配器,转发器,集线器,网桥,以太网交换机的作用以及应用场合。

咱们察看一下两台主机通过互联网进行通信时 数据链路层 所处的位置

图 3 -1(a)示意主机 H1 通过电话线上网,两头通过三个路由器(R1,R2,R3)连贯到近程主机 H2,所通过的网络是多种的,如电话网,局域网,广域网等。当主机 H1 向主机 H2 发送数据时,从协定的档次上来看,数据流动如图 3 -2(b)所示,主机 H1 和主机 H2 都有残缺的五层协定栈,单路由器在转发分组时应用的协定栈只有上面三层。数据进入路由器后要先从物理层上到网络层,在转发表中找到下一跳地址后,再下到物理层转发进来。当咱们专一于钻研数据链路层的问题时,咱们能够这样钻研:H1 的链路层 ->R1 的链路层 ->R2 的链路层 ->R3 的链路层 ->H2 的链路层。

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

数据链路和帧

链路 指的是从一个结点到 相邻结点 的一段物理线路(有线或无线), 而两头并没有任何其余的替换结点。在进行数据通信时,两台计算机之间的通信门路往往要通过很多段这样的链路。可见链路只是门路的一部分。

数据链路 :当在一条线路上传输数据时,除了必须要有一条物理线路外,还必须要有一些必要的通信协议来控制数据的传输,若把实现这些协定的硬件和软件加到链路上,就形成了数据链路。当初最罕用的就是 网络适配器 (既有软件,也有硬件) 来实现这些协定。个别的适配器都包含了数据链路层和物理层这两层的性能。

点对点信道的数据链路层的协定数据单元:帧:

数据链路层把网络层交下来的数据形成 发送到链路上,以及把接管到的帧中的数据取出并上交给网络层。在网络层中,网络层协定数据单元就是IP 数据报,也叫分组或者包

数据链路层通信图

点对点信道的数据链路层在进行通信时的次要步骤如下:

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

三个根本问题:封装成帧,通明传输,过错检测

封装成帧

封装成帧是在一段数据的前后别离加上 首部 尾部 ,这样就形成了一个帧。接收端在接管到物理层上交的 比特流 后,就能依据手部和尾部的标记,会从比特流中辨认到 帧的开始 帧的完结。如图就是一个增加帧首和帧尾封装成帧

咱们晓得,分组替换的的一个重要概念就是:所有在互联网上传送的数据都是以 IP 数据报文为传送单位,网络层的 IP 数据报传送到数据链路层就成为了帧的数据局部。在帧的数据局部的前部和后部别离加上首部和尾部,就形成了一个残缺的帧。这样的帧就是数据链路层的数据传送单元。

一个帧的长度等于 数据局部的长度 + 帧首 + 帧尾的长度 ,首部和尾部的重要作用就是 帧定界(确定帧的界线)。

在发送帧的时候,是从帧的首部开始送的。各种数据链路层协定都要对帧首部和帧尾部的格局都有明确的规定。为了 进步帧的传输效率,应该使帧的数据局部尽可能的大于帧的首部和尾部的长度。然而呢,每一种数据链路层协定都规定了所能传送的帧的数据局部长度下限 —– 最大传送单元 MTU(Maximum Transfer Unit)。如图给出了 MTU 与帧的数据局部和帧的首部和尾部的关系。

帧首部应用 SOH(start of head)十六进制编码 01 作为帧的开始控制字符,帧尾部应用 EOT(end of transmission)十六进制编码 04 作为帧的完结控制字符。

通明传输

因为帧的开始和完结标记会用专门的控制字符,因而,所传输的数据中的任何 8 比特组合肯定不容许应用作为帧定界的控制字符比特编码一样,否则会呈现帧定界谬误。

当传送的帧应用文本文件组成的时候 (文本文件中的字符是从键盘上输出的),其数据局部显然不会呈现 SOH 和 EOT 这样的帧定界控制字符。不论在键盘上输出什么字符都能够放单帧上传输,因而这样的传输就是 通明传输。

然而当数据局部并不是键盘上一般的 ASCII 码时候,而是例如像二进制代码或者图像,音乐等数据流时,状况就有可能变得不一样,如果数据中的某个字节的二进制比特刚好和帧定界符的控制字符 SOH(01) 或者 EOT(04)重合,如图, 数据链路层可能会谬误的找到帧界定符。数据链路层会 谬误的 找到帧定界符号,把局部帧接管下 (误认为是个残缺的帧) 这样的谬误传输状况显然并 不是通明传输。

为了解决通明传输问题,就必须设法 使数据中可能呈现的控制字符 SOH,EOT在接收端不被解释为控制字符,具体的办法是:发送端的数据链路层如果在数据传输中呈现 SOH 或者 EOT,就在后面插入一个转义字符 ESC(十六进制编码为 1B),而且在接收端删除这个转义字符,这样的办法称之为字节填充或者是字符填充。,如果转义字符也呈现在数据当中,那么解决办法依然是在转义字符的后面再加上一个转义字符,因而,当接收端间断的接管到两个转义字符的时候,就删除后面其中一个。如图为用字节串书法解决通明传输问题:

过错检测

事实中的通信链路都是不现实的。也就是说,比特在传输的过程当中,可能 1 会变成 0,0 或者变成 1,这就叫做 比特过错 ,在一段时间内,传输谬误的比特总数占传输所有比特总数的比值,称之为 误码率 (BER),
误码率与信噪比有着很大的关系,如果设法进步信噪比,就能够使误码率缩小。理论的通信链路并非是现实的,它不能使误码率升高到 0,因而呢,在计算机网络传输数据的时候,必须采纳各种校验,目前在数据链路层宽泛的采纳了 CRC 循环冗余测验 的检错技术。上面咱们通过一个简略的例子来阐明 CRC 循环冗余测验的原理:

  • 在发送端,先把数据划分为组,假如每组 k 个比特。先假如待传送的数据 M =101001(k=6),CRC 运算就是在数据 M 的前面增加供过错检测应用的 n 为冗余码,而后形成一个帧发送进来,一共发送 (k+n) 位。在所要发送的数据前面减少 n 为的冗余码,尽管增大了数据传输的开销,然而却能够进行过错检测,当传输可能呈现过错时,付出这种代价往往是很值得的。
  • 这 n 位冗余码能够用以下办法得出:用二进制的 模 2 运算 (二进制加法不进位) 进行 2^n 乘 M 运算,这相当于在 M 前面增加 n 个 0,失去的 (k+n) 位的数除以收发单方当时约定的长度 (n+1) 位的除数 p,得出商是 Q 余数是 R(n 位,比 P 少一位),例如:假设除数为 P =1101,通过模 2 除法运算后的后果是:商 Q 为 110101,余数 R 为 001。这个余数 R 就能够当作循环冗余码拼接到数据 M 的前面发送进来,这种为了将检错而减少的冗余码成为 帧测验序列 FCS,因而加上 FCS 后发送的帧为 101001001(即 $x^{2}$M+FCS), 共有 (k+n) 位。

顺便说一下,循环冗余码 CRC 是一种检错形式,而 FCS 是增加在数据前面的冗余码。

在接收端把接管到的数据以帧为单位进行 CRC 测验,把收到的每一个帧都除以雷同的除数 P(模 2 运算)。
如果在传输过程中没有过错,那么通过 CRC 测验后失去的余数 R 为 0,
在接收端对收到的每一帧通过 CRC 测验,会有以下两种状况

  • 若得出余数为 0,就断定这个帧没有呈现过错,就 承受
  • 若失去余数不为 0,则判断这个帧有过错(然而并不知道哪里错了),抛弃

在数据链路层,发送端帧检测序列 FCS 的生成和接收端的 CRC 测验都是硬件实现的,因而处理速度很快并不会影响数据的传输。

数据链路层不应用确认和重传机制,也就是不要求数据链路层向上册提供牢靠服务,如果在数据链路层传输数据呈现了谬误,那么交给下层去解决,数据链路层都是不牢靠的传输协定

退出移动版