概述

在计算机网络中,最基础的就是数据链路层了。如果没有数据链路层,那么也就不存在基于 TCP/IP 的通信了。接下来,我们将在本文中针对数据链路层进行展开介绍。
TCP/IP 协议中对于 OSI 参考模型中的数据链路层和物理层没有明确的定义,而是以这两层的功能为透明为前提。但是实际上了解数据链路的相关知识对于深入理解 TCP/IP 协议还是有着重要的作用的。
在本文中,我们会介绍数据链路层的相关技术,包括 MAC 寻址、介质共享、非公有网络、分组交换、环路检测、VLAN等。同时也会介绍一些常见的数据链路,例如以太网、WLAN、PPP等概念。

数据链路相关技术

MAC 地址

MAC 地址用于标识同一个数据链路中互联的各个节点。
image.png
MAC 地址长 48 比特。在使用网卡的情况下,MAC 地址一般会烧入 ROM 中,因此正常情况下 MAC 地址是全世界唯一的。
image.png

共享介质型网络

从通信介质的使用方法上来看,网络可以分为共享介质型和非共享介质型。
早期的以太网就是使用的共享介质型网络,在这个场景下,多个设备共享一个通信介质,设备之间使用同一个载波信道进行发送和接收数据,通常采用半双工通信方式。
共享介质型网络有一个明显的问题,即同一个时刻只能有一个设备进行数据发送,因此会导致网络性能下降等问题并需要通过令牌等一系列方式进行相应的改进。
image.png

非共享介质型网络

目前,以太网基本已经都采用了非共享介质型网络了。在这种方式下,网络中的每台设备都直接连接交换机,由交换机负责转发数据帧。此时,由于发送端和接收端不再共享通信介质,因此大部分情况都是采用全双工通信方式。
image.png

半双工是指同一时间只发送或者只接收数据的通信方式,类似于无线电收发器; 全双工是指允许在同一个时间即可以发送数据、也可以接收数据,类似于电话。

根据 MAC 地址转发数据

如上文所述,在使用同轴电缆连接的以太网等介质共享网络中,同一时间只能有一台主机发送/接收数据,而随着主机数的增加,通信性能会明显下降。而通过交换机的非介质共享网络则可以很多的解决这个问题。
那么交换机具体是怎么做到的呢?以太网交换机就是一个拥有多个网口的网桥,它可以根据数据链路层中每个帧的目标 MAC 地址来决定将数据从哪个网口中发送出去。在这一过程中,参考的就是转发表。需要注意的是,这个转发表不需要使用者手动配置,而是会在接收处理数据包的过程中自学记录得到的。如下图所示:
image.png
由于 MAC 地址没有层次性,如果设备过多,转发表中的记录也会变多,导致检索转发表的时间也会变长。因此,当终端数量达到一定的程度时,就有必要将数据链路分为多个并用路由器进行管理,从而可以通过 IP 地址等方式进行分层管理。

环路检测技术

当我们通过网桥连接网络时,有时候就会出现环路。在这种情况下,就可能会导致数据帧在环路中被一而再、再而三地持续转发,从而导致数据帧越来越多导致网络瘫痪。
为了解决环路问题,人们提出了生成树和源路由两种方式来进行环路检测。如果使用了具备这些功能的网桥,那么即使构建了一个带有环路的网络也不会出现验证的问题,范围可以提供容灾能力。

VLAN

在进行网络管理的时候,常常会需要分散网络负载、变换部署网络设备的位置等操作,那这个时候往往需要对应着硬件线路的改造,这个成本还是比较大的。为了解决这个问题,人们提供了 VLAN 技术。带有 VLAN 技术的网桥就不用实际修改网络布线,只需要通过网桥的配置就可以修改网络结构。
image.png

以太网

在各种数据链路中,目前最著名、也是应用最广泛的就是以太网了。它的规范简单、易于网卡(NIC)驱动实现。现在,以太网已经成为了最具兼容性和发展的数据链路。
在以太网使用之初,一般采用多个终端使用同一个同轴电缆的共享介质型存储的连接方式。
image.png
这种连接方式正如我们上文所述,通信效率比较低。随时互联设备的处理能力和传输速度的提升,目前一般都采用终端与交换机之间之间连接的独占电缆的方式实现以太网通信,如下图所示:
image.png

以太网帧格式

以太网帧前端有一个称为前导码的部分,他是由0、1数字交替组合而成,表示一个以太网帧的开始。其中,前导码末尾是一个叫做 SFD 的域,它的值是 11。在这个域之后就是以太网帧的本体了。前导码和 SFD 合起来占8个字节。
image.png
以太网帧本体的前端是以太网的首部,总共占14个字节。分别是6个字节的目标 MAC 地址、6个字节的源 MAC 地址以及2个字节的上层协议类型。
在帧首部之后的就是数据,一个数据帧能容纳的最大数据范围是46-1500个字节。帧尾是一个叫做FCS(帧校验序列)的4个字节,它可以用于检查帧是否有损坏。
image.png
在 IEEE802.3 Ethernet 中,以太网帧的格式稍有变化,它用帧的长度替换了类型的部分,同时在数据部分的前端增加了 LLC 和 SNAP 等字段,其中原来类型字段现在体现在 SNAP 中。

无线通信

无线通信通常使用电磁波、红外线、激光等方式进行数据传播,它不需要网线或者其他的可见电缆。目前,无线通信已经在生活中的各个场景中得到了广泛的应用。
根据无线通信距离的分类,可以大致如下表所示:

分类 通信距离 标准化组织 其他相关技术
短距离无线 数米 个别组织 RF-ID
无线PAN 10米左右 IEEE802.15 蓝牙
无线LAN 100米左右 IEEE802.11 WiFi
无线MAN 数千米-100千米 IEEE802.16
IEEE802.20
WiMAX
无线RAN 200千米-700千米 IEEE802.22 -
无线WAN - GSM、CDMA2000、W-CDMA 3G、LTE、4G、5G

PPP

PPP(Point-to-Point Protcol) 是指计算机点对点通信协议,它处于 OSI 参考模型的第2层数据链路层。PPP 可以基于电话线、专线、ATM 线路等实现通信。此外,PPPoE 就是在以太网的数据中加入 PPP 帧进行传输的一种方式。

其他数据链路

除了上面介绍的以太网、无线通信和 PPP 等数据链路之外,常见的其他类型的数据链路还有:

  • ATM:一种面向链路的数据链路,允许同时与多个对端建立连接。
  • FDDI:分布式光线数据接口。
  • Toke Ring。
  • 光纤通道:常用于搭建存储域网络,用于连接服务器与多台存储设备。
  • HDMI:主要用于显示器、电视机、投影仪等连接。

公共网络

前面的很多内容都是围绕局域网进行展开介绍的。下面,我们来了解一下像移动、联通这种电信运营商提供的公共网络是什么样的吧,它们提供的常见服务包括如下几类:

  • 模拟电话线路:利用电话线信息网络通信,通过”猫”将数字信号转化为模拟信号传播,目前已经基本不用了。
  • 移动通信服务:如手机业务,只要在服务区内就可以连接到运营商的网络。
  • 有线电视。
  • 专线。
  • VPN:虚拟专用网络,用于连接距离较远的地域或者某些私有网络,并对通信数据进行加密保护。
  • 公共无线 LAN:如机场、酒店场所提供的公开 Wifi。