计算机网络协议系列 - 从物理层到链路层

- 1 min

计算机网络协议系列(三)

在计算机网络中,物理层负责将光电信号转化为 0、1 比特流用来表示信息,数据链路层把这些信息集合为一个叫做「帧」的块,再进行传输。

TCP/IP 未对数据链路层及以下部分(物理层)做定义,因为 TCP/IP 以这两层的功能是透明的为前提,但是,数据链路层的知识对于深入理解 TCP/IP 与网络起着至关重要的作用,所以这一篇我们重点来介绍数据链路层,物理层主要是物理介质,比如光缆、电缆、双绞线等,更多的是硬件结构,不在我们重点论述范围。

MAC地址

介绍数据链路层,离不开 MAC 地址,MAC 地址用于识别数据链路中互连的节点,在使用网卡的情况下,MAC 地址一般在出厂的时候就被烧到 ROM 中,不可更改,而且全球唯一。

我们见到的 MAC 地址都是通过十六进制树来表示:

img

在计算机内部,则是通过 48 位二进制数来表示,对应结构及区间含义如下:

img

MAC 地址的全局唯一性通过厂商识别码和产品识别码(厂商内识别码)共同保证,就好比咱们 PHP 通过 Composer 安装的扩展包也是通过厂商名/产品名确定全局唯一一样。

在同一个数据链路里(比如同一个局域网),互连的主机之间通过 MAC 地址即可实现相互通信。

以太网

在数据链路中最著名,使用最广泛的莫过于以太网(Ethernet),现在我们的计算机联网基本都是借助以太网来实现的,如果你在命令行通过运行 ifconfig(Windows下是ipconfig)查看网卡信息,即可窥见端倪:

img

以 en 开头的都是基于以太网的网卡,是 Ethernet 的简写。如果是在 Windows 下则更加直白:

img

早期,以太网通过同一根同轴电缆将多台终端设备连接起来,这种共享介质的连接方式有一个显著的缺点,就是发送和接收信号不能同时进行,只能实现半双工通信,并且多台设备也不能同时通信,需要争夺对通信介质的控制,如果同时通信,容易出现信道冲突。

为了提高通信效率和速度,随着技术的不断发展,现在的以太网一般都采用终端与交换机直连独占电缆的方式,实现了全双工通信,并且不同终端也可以同时发送信息,因为通信介质都是独占的,不存在控制权和冲突问题:

img

以太网根据线缆介质的不同,分为多种类型,对应的带宽也不同,所有这些不同类型的以太网都是遵循 IEEE802.3 标准:

img

这些不同类型的以太网前面的数字代表带宽(传输速度),比如10代表10Mbps(比特每秒),1000代表1000Mbps等,后面的5、T、TX等代表传输介质。传输速度相同传输介质不同的以太网需要通过中继器或集线器连接,传输速度不同的以太网需要通过网桥、交换集线器或路由器进行连接。通过这种连接,最终构成了大大小小的计算机网络。

数据帧格式

以以太网为例,在数据链路层中,传输的数据帧主体格式如下:

img

其中,有6个字节的目标MAC地址,6个字节的源MAC地址,2个字节的上层协议类型,剩下的是传输数据,对以太网来说,数据大小是1500字节,还有最后4位是帧检验序列(FCS),用于检测帧是否损坏。

无线通信

无线通信不需要借助任何可见的线缆和网线,一般通过电磁波、红外线、激光进行数据传播,无线通信标准由 IEEE802.11 定义,常见的种类如下:

img

关于无线通信的细节在前面网络协议不定期分享之 WiFi 的由来中已经介绍过了,这里就不再赘述了。

小结

以上就是数据链路层常见实现所使用到的技术基础知识,单单靠物理层与数据链路层还是无法实现网络通信的,因为在互联网中,还需要 IP 地址才能实现主机节点之间的通信,而 IP 地址归属于 IP 协议,IP 协议则是网络层的协议,下一篇就来给大家介绍网络层的相关技术。

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora