数据链路层

数据链路层属于计算机网络的低层,其处于计算机网络五层架构协议的网络层与物理层中间。在主机与主机进行网络通信时,中间的网络传输是经过一段一段的链路进行传输的,于是需要特定的链路层协议保证数据能可靠的在这些链路之间传输。

三个基本问题

数据链路层的协议有很多种,其中有三个基本问题是相同的

封装成帧

在计算机信息传输过程中,链路层接在收到发送端的网络层的 IP 数据报(分组传输)时,会在数据的首部和尾部添加一段数据,这样就构成了一个帧。接收端在收到物理层上交的比特流后,可以通过首部和尾部的标记识别数据的开始和结束,即进行 帧定界 。此外,首部和尾部的数据还包含一些控制信息。为了保证数据的传输效率,应当使被传输的数据尽可能的大于首部和尾部的长度,但数据部分是有长度上线的,即 最大传输单元 MTU(Max Transfer Unit)

封装成帧保证了传输的数据能够准确的被接收端所识别,如果接收端发现帧的首部或尾部缺失,会丢弃该帧,防止错误的数据在信道中传输。

透明传输

透明的定义为:某一个实际存在的事物看起来好像不存在一样。

在封装成帧的过程中,会进行帧定界,也就是会在头部和尾部添加特定的字符。如果被传输的数据中包含这些特定的字符,会使得接收端出现帧定界的错误。例如尾部字符如果为 EOT,数据中也包含 EOT,就会导致定界提前结束,从而导致接收到的数据不完整,后面的数据被丢弃。

所以往往会通过字节(符)填充的方式在数据中与定界字符相同的字符前添加转译字符(类似代码中的反斜杠 / )。

差错控制

现实中的通信都不是理想的,总会是出现一些传输差错

比特差错

在比特的传输中可能会出现一些差错,比如 0 变成了 1. 这种错误称为 比特差错(差错中的一种)。传输中错误的比特数在所有比特中的占比称为 误码率BER(Bit Error Rate)。误码率与信噪比(信息传输的平均功率与噪声的评论功率的关系)有很大的关系无法将误码率降为 0,只能尽可能的保证数据的可靠性,所以必须采用各种差错检测措施。

循环冗余检验

目前为降低误码率广泛采用的检验方式为 循环冗余检验 CRC(Cyclic Redundancy Check)

循环冗余的检测方式为以下几个计算步骤:

  1. 假设被传输的二进制的数据为 M
  2. 接收方与发送方定义一个数 P,在 M 后添加 N (N = P.length - 1)位 0 后得到 Q
  3. 使用 模 2 运算(加减不进位的算法) Q 除以 P 得到余数 R(R 的位数与 N 一样)。R 被称为 帧检验序列 FCS(Frame Check Sequence)
  4. 在数据 M 后添加上 R 得到将要传输的数据
  5. 接收方在接收到数据后使用数据除以 P,最终的余数若为 0,则判定该帧无差错;若不为 0 ,则判定该帧有差错,丢弃。

P 的定义可以使用多项式,例如:

  • CRC-16 = X^16 + X^15 + X^2 + 1

传输差错

比特差错仅仅为差错中的一种,即使使用了 CRC,我们只能保证传输中的正确率无限接近于 1。除了比特差错之外还有 帧丢失, 帧重复, 帧失序等错误都属于出现传输错误。

在网络质量较好的情况下,一般不会考虑这些错误,可以提高传输效率。在网络质量较差的情况下,需要考虑增加帧编号,确认,重传机制来保证数据的“可靠传输”。

数据链路层信道

数据链路层使用最广泛的两种信道为 点对点信道 和 广播信道。

点对点信道

这是一种一对一的点对点通信方式。点对点信道的传输比较简单,结点 A 将网络层交付的 IP 数据报封装成帧,然后发送给 B 结点,B 结点对帧进行差错检验,判断是否需要丢弃该帧。

点对点协议 PPP

因特网中的用户通常都需要连接到某个 ISP 才能接入到因特网。PPP 协议就是计算机与 ISP 进行通信时的数据链路层协议。它仅支持 全双工链路

PPP 协议的特点:

  1. 简单 (不必纠正数据、不需要数据序号等)
  2. 封装成帧
  3. 透明传输
  4. 多种网络层协议
  5. 多种类型链路(串行或并行、同步或异步、电或光、动态或非动态)
  6. 差错检测
  7. 检测链接状态(PPP 需要先建立链路,建立链路过程中包含链路静止、链路(物理层)建立、鉴别、网络层协议、链路打开等状态)
  8. 最大传输单元
  9. 网络层地址协商(多种网络层协议)
  10. 数据压缩协商

广播信道

在广播信道中,可以进行一对多的通信。局域网就是广播信道使用的一种。

局域网的数据链路层

特点

网络为一个单位所拥有,且地理范围和站点数目均有限

优点

  1. 具有广播功能,在同一个局域网中,一个站点很容易访问全局站点,并且主机可以共享局域网中的各种硬件和软件资源
  2. 便于系统的扩展和逐渐地演变,各设备的位置可以灵活的调整和改变
  3. 提高了系统的可靠性、可用性和生存性

共享信道

在局域网中,每台极其都会连接到一条总线上,这条总线承担着共享信道的责任。它的目的是为了能使众多用户能够合理而方便的共享通信媒体资源。目前局域网主要分为 星形网(采用集线器)环形网总线网

静态划分信道:有频分复用、时分复用、波分复用和码分复用。用户会在不同的信道之间进行数据传输。但代价较高,不适合在局域网中使用。

动态媒体接入控制(多点接入):分为随机接入和受控接入。

随机接入的特点在于用户可以随时地进行消息发送。但如果多个用户在同一时刻发送信息,那么就会产生碰撞,使得用户信息都发送失败。所以需要特定的协议解决碰撞

受控接入的特点是用户不能随机的发送消息而必须服从一定的控制。例如环形网需要多点线路探询,或称为 轮询

以太网

以太网属于总线局域网中的一种,被广泛应用于生活中。以太网的数据链路层在过去被分为 逻辑链路控制 LLC和媒体接入控制 MAC两个子层。现在因为标准的变更仅剩下 MAC 子层。

适配器

适配器(涉及到物理层和链路层)又称为网络接口卡 NIC(Network Interface Card),简称网卡。它是计算机与外界局域网通信的设备。在适配器中装有处理器和存储器(包括 ROM 和 RAM)。适配器和局域网之间的通信是通过电缆或双绞线以串行的方式进行的,而适配器和计算机之间的通信是通过计算机主板上的 I/O 总线以并行方式传输的。所以适配器的重要功能就是要进行数据串行传输和并行传输的交换。

适配器经过差错控制后将接收到的数据交付给协议栈中的网络层,并通知计算机。当计算机发送数据时,协议栈中的网络层将 IP 数据报交给适配器,组装成帧后发送给局域网。计算机的硬件地址存储在适配器的 ROM 中,而计算机的软件地址存储在计算机的存储器中。

CSMA/CD 协议

上面说到局域网的一对多的传输,那么怎么进行一对一的进行传输?通过在传递的数据中将接收方的 MAC 地址存放到帧的首部信息中,这样接收方只有在匹配到了该 MAC 地址才会进行接收。

以太网中为了通信的简便采用了两种措施:

  1. 采用无连接(链路层)的模式,这样在进行通行的时候不必先建立连接就可以直接发送数据,并且不对数据进行编号,不需要接收方发回确认。所以以太网提供的是 尽最大努力的交付,同时也是 不可靠的交付。对有问题的帧是否需要重传有高层(如 TCP)来控制。在交付过程中,一旦有用户发送信息,总线就会被占用,那么其他用户的信息就不会被发送出去。如果发生了上面讲到的 碰撞,那么此时的信息都会发送失败,所以需要协议来控制。以太网中使用的是 CSMA/CD(载波监听多点接入/碰撞检测)协议。
  2. 以太网发送的数据使用 曼彻斯特编码 的信号,它的特点是会将占用的频带宽度比原始的频带宽度增加一倍。

多点接入

说明有多台主机连接在同一根总线上

载波监听

检测信道,不论在发送前,还是发送中,每个站必须不停的检测信道是否被占用。当信道变成空闲状态时才能发送数据。

碰撞检测

便发送变监听。当有几个站同时发送数据时,总线上的电压变化幅度将会增大。各个主机上的适配器检测到电压超过一定值时,就会认为发生了碰撞,这是就会停止发送数据。

以太网的特性决定了每次只能一个站点发送数据,所以只能进行半双工通信(双向交替通信)

如下图:

  1. A 发送数据至 B,用时为 †(大约为 5us).
  2. A在发送中时,B 同时检测到信道为空闲状态,在 † - ∂ 时发送数据至 A,这时就发生了碰撞。碰撞时间为 t = † - ∂ / 2

在数据发送一小段时间内,存在着遭遇碰撞的可能性,不能保证数据成功发送出去了,这一特性称为发送的不确定性。当 ∂ 趋近于 0 时,A 和 B 的往返时间为 2†,至多这个时间就能检测到是否发生了碰撞,这段时间称为 争用期,又称为碰撞窗口,当经过争用期后,就可以确定数据成功被发送出去了。

出了各个站点监听碰撞之外,发生碰撞的站点会发送人为干扰信号,以便让所有的用户都知道发生了碰撞。这个称为强化碰撞。

CSMA/CD协议的要点

  1. 准备发送:适配器从网络层获的分组,封装成帧后进入缓存,检测信道是否空闲
  2. 一直检测到信道为空闲状态时,等待一定的空闲时间(96比特时间)。就发送这个帧
  3. 在发送过程中不停的检测信道,即便发送便监听。当在争用期内发生碰撞后,立即停止发送数据,并发送人为干扰信号。

以太网的 MAC 帧

MAC 层的硬件地址

在局域网中,硬件地址又称为物理地址或 MAC 地址(因为这种地址用在 MAC 帧中)。

MAC 地址由 6 位字节即 48 位来表示,每台机器的 MAC 地址都不相同。MAC 地址中并不是所有的位数都用来表示地址,有的字节用来表示是全球管理还是本地管理。然后再分配一定位数来表示是哪些机构、公司的 MAC 地址。

MAC 帧分为三种帧:

  1. 单播帧
  2. 广播帧
  3. 多播帧

扩展以太网

物理层扩展:

物理层扩展以太网的方式是通过使用以太网集线器来进行的。通过集线器将多个局域网可以形成一个局域网。好处是能够多局域网进行通行,并且扩大了以太网的覆盖范围。缺点也非常明显,上面讲到以太网会有碰撞检测,那么多个局域网集中处理,会形成一个更大的碰撞域,这个大的碰撞域的吞吐量是由最低的那个局域网决定的。

数据链路层扩展:

数据链路层扩展是通过网桥来进行转发和过滤的,它根据 MAC 帧来进行转发和过滤。

如图所示:

网桥会依靠转发表来进行转发和过滤,当需要通过网桥进行跨局域网来通信时就会转发,否则会被过滤掉。

网桥很好的解决了物理层扩展的以太网导致的碰撞域的问题,不同的碰撞域之间不会相互影响,同时每个碰撞域都可以有着不同的速率连着不同的物理层以及MAC子层,提高了可靠性。

网桥的缺点:

  1. 需要将接收到的帧进行存储在转发,而转发之前还需要进行 CSMA/CD 算法,增加了时延。
  2. 在 MAC 子层没有流量控制功能,当负荷很重时,可能发生溢出。
  3. 网桥只适合用户量不大的以太网,如果负载太大,可能会出现网络拥塞 —— 广播风暴。

网桥是通过维护转发表来进行转发和过滤的,如果使用人工来维护,会很大程度的浪费人力成本,于是出现了 透明网桥 由机器自己学习填充转发表。在透明网桥的基础上,为了提高网络资源的利用率,于是出现了源路由网桥。源路由网桥关键是通过提前发送 发现帧 来确定选择什么样的路由,未来通信都会通过该路由。

以太网交换机

本质上是多个接口的网桥。交换机能同时联通许多对接口,使每一对相互通信的主机都能够像独占传输媒体那样进行无碰撞的传输数据。所以碰撞协议在交换机的全双工通信中是不发挥作用的,在半双工通信中是需要进行碰撞检测的。

交换机的另一个好处是能够通过 虚拟局域网(VLAN)来对多个局域网中的某些机器进行分组,使得这些分组中的机器能够相互通信。VLAN 会在 MAC 帧中插入 4 字节的 VLAN 标记。

高速以太网

高速以太网有 100Mb/s 的快速以太网、吉比特以太网和 10Gb/s 的 10 吉比特以太网,现在还有 100 吉比特以太网。

以上是 数据链路层 的全部内容, 来源链接: utcz.com/a/19305.html

回到顶部