关于数据链路层我只是大概翻看了一下, 可能总结的不是很系统, 就将看到的点暂且记录下来.
一. 数据链路的作用
这里的数据链路层是将TCP/IP模型中的数据链路层的数据链路部分单独拿出来进行分析.
计算机中以二进制0/1序列来表示信息, 然而实际的通信媒介之间处理的却是电压的高低/光的闪灭以及电波的强弱等信号. 物理层的作用就是将0/1序列和这些信号进行转换. 而数据链路层处理的数据就不仅仅是单纯的0/1序列了, 而是将数据集合为一个叫做”帧”的块进行传输.
数据链路层的相关技术有: MAC寻址(物理寻址), 介质共享, 分组交换, 环路检测, VLAN, 非公有网络等.
数据链路层有多种传输方式的数据链路, 比如以太网, WLAN(虚拟局域网), PPP(点对点协议)等.
下面就上面提到的这些内容来进行逐一介绍.
二. 数据链路相关技术
1. MAC寻址
(1) MAC地址
在数据链路层传输数据时, 通过MAC地址来识别发送端和接收端. 所以MAC地址就是用来识别数据链路中互联的节点. 每台主机的MAC地址都是唯一的.
因为IEEE802.3(IEEE802是制定局域网标准化相关规范的组织, 其中IEEE802.3是关于以太网的国际规范)在制定规范的时候并没有限定数据链路的类型, 即不论哪种数据链路的网络(以太网/WLAN/ATM/蓝牙等), 全世界范围内都不会有相同的MAC地址出现.
MAC地址长48bit, 也就是6个字节. 它的结构如下:
- 第1位: 单播地址(0) / 多播地址(1)
- 第2位: 全局地址(0) / 本地地址(1)
- 第3~24位: 由IEEE负责管理并分配, 保证各厂家之间不重复
- 第25~48位: 由厂家管理, 保证产品之间不重复
关于MAC地址转换为bit流在网络中流动的顺序:
比如现在有一台主机的MAC地址为: 01:02:xx…, 那么:
- 在发送数据时, 首先可以确定的是它是按字节顺序发送的, 也就是先发送第一个字节01, 在发送第二个字节02;
- 其次需要确定的写在最左边的是一个自己的最高位还是最低位. IEEE802.3标准采用将最低位写在最左侧, 也就是对一个字节的bit流而言, 写在最左边的是它的最低位.
- 对于01:02…来说, 它在网络中的流动的bit流应该为: 1000000000100000…
(2) MAC寻址
在总线型和环路型的网络中, 先暂时获取所有目标站的帧, 然后再通过MAC地址进行寻址, 如果是发给自己的就接受, 如果不是就丢弃. 在令牌环的这种情况下, 则依次转发给下一个站.
2. 共享介质型网络
从通信介质(通信, 介质)的使用方法上看, 网络可分为共享介质型和非共享介质型.
共享介质型网络是指有多个设备共享一个通信介质的一种网络. 比如最早的以太网和FDDI(光纤分布式数据接口)就是介质共享型网络. 在这种方式下, 设备之间使用同一个载波信道进行发送和接收数据. 所以, 这种类型的网络基本上采用半双工通信, 并有必要对介质进行访问控制.
半双工通信: 接收和发送数据的线路是同一条, 也就是接收和发送共享同一条通信线路. 共享介质网络通常使用半双工通信.
控制介质的访问和控制传输的方式有两种:
- 争用方式
- 令牌传递方式
(1) 争用方式
争用方式也叫CSMA(载波监听多路访问), 是指争夺获取数据传输的权力. 这种方式通常令网络中的各个站(即数据链路中的各个节点)采用先倒显得的方式占用信道发送数据. 如果多个站同时发送数据, 就会产生冲突, 导致网络拥堵和性能下降.
所以在部分的以太网中(为什么说部分呢? 因为现在大多数以太网都采用非介质共享型网络, 稍后会谈到), 采用了改良CSMA的另一种方式: CSMA/CD方式.
CSMA/CD要求每个站都提前检查冲突, 一旦发生冲突, 则尽早释放信道. 其工作原理如下:
- 1. 如果载波信道上没有数据流动, 则任何站都可以发送数据.
- 2. 检查是否会发生冲突. 一旦发生冲突, 则放弃发送数据, 同时立即释放载波信道.
- 3. 放弃发送以后, 随机延时一段时间, 再重新争用介质, 再重新发送帧.
如果将CSMA/CD工作分为CSMA和CD两部分来看, 那么CSMA就是完成”确认没有任何设备发送数据”和”发送数据”的功能, 而CD就是完成”一边发送数据”和”一边监控电压”的功能(通过电压是否异常判断是否有发生冲突).
(2) 令牌传递方式
在介质共享性网络中另一种对传输的控制方式为:令牌传递方式. 这种方式是沿着令牌环发送一种叫做”令牌”的特殊报文, 只有获得令牌的站才能发送数据. 这种传输控制方式有两个特点:
- 不会有冲突
- 每个站都有通过平等循环获得令牌的方式
因此, 即使网络拥堵也不会导致性能下降. 但是它也有弊端, 比如一个站在收到令牌之前不能发送数据帧, 因此在网络不太拥堵的情况下对数据链路的利用率达不到100%. 为此衍生了多种令牌传递的技术, 如令牌释放/令牌追加/多令牌同时循环等方式, 都是为了尽可能地提高网络的性能.
3. 非介质共享型网络
非介质共享型网络是指不共享介质, 是对介质采取专用的的一种传输控制方式. 所以非介质共享型网络通常使用全双工通信.
全双工通信: 发送和接收线路都有各自的专用线路, 不共享. 也就是说, 从外部看, 通信线路可以同时接收和发送数据, 而从外部看, 实质上是由两条线路, 一条发送线路, 一条接收线路.
在非共享介质型网络中, 每个站都直连交换机, 由交换机负责转发数据帧. *ATM(异步传输方式, 一种面向连接的数据链路)采用的就是非介质共享型网络这种传输控制方式. 最近, 它也成为了以太网的主流传输控制方式. 通过以太网交换机构建网络, 从而使计算机与交换机端口之间形成以对一的连接, 即可实现全双工通信. *
该方式还可以根据交换机的高级特性构建虚拟局域网(VLAN), 进行流量控制等. 但是这种方式有一个致命的弱点, 就是一旦交换机发生故障, 与之相连的所有计算机之间都将无法通信.
我们在这里将半双工通信和全双工通信再进行一个简单对比:
- 半双工通信就是只接收或者只发送数据的通信方式. 它类似与无线电收发器, 若两端同时说话, 是听不见对方说的话的.
- 全双关允许在同一时间即可以发送数据也可以接收数据. 它类似于电话, 接打双方可以同时说话.
4. 根据MAC地址转发数据
(1) 以太网交换机
在使用同轴电缆的以太网等共享介质型网络中, 同一时间只能有一台主机发送数据, 当连网的主机变多时, 通信性能就会下降. 这时将集线器(即多端口的中继器)或集中器等设备以星型连接, 就出现了一种新的网络设备: 交换集线器. 这是一种将非介质共享型网路中所使用的交换机用在以太网中的技术, 交换集线器也叫以太网交换机.
以太网交换机就是持有多个端口的网桥. 它们根据数据链路层中每个帧的目标MAC地址, 决定从哪个端口发送数据. 这是所参考的/用以记录发送接口的标就叫做转发表.
(2) 转发表的自学原理
转发表的内容并不是我们手动设置的, 而是自动生成的. 这就是交换机的自学原理.
- 数据链路层的每个节点在接到包时, 会从中将源MAC地址以及曾经接收该地址发送的数据包的接口(即以太网交换机的端口)作为对应关系记录在转发表中.
- 以某个MAC地址为源地址的包由某个接口接收过, 实质上就可以例举诶为该MAC地址就是该接口的目标.
- 反过来也可以认为, 以该MAC地址为目的地址的包也可以从该接口送出.
下面的图直观的说明了交换机的自学过程:
由于MAC地址没有层次性, 转发表中的入口个数与整个数据链路中所有网络设备的数量有关, 当设备数量增多时, 转发表也会变大, 检索转发表的时间也会变长. 所以当连接多个终端时, 有必要将网络分成多个数据链路, 采用类似于网络层IP地址一样对MAC地址进行分层管理.
(3) 交换机转发数据的方式
交换机转发数据的方式有两种, 一种是存储转发, 一种是直通转发.
- 存储转发方式是在检查以太网数据帧末尾的FCS位(帧校验序列)之后再进行转发. 因此可以避免由于发送冲突而被破坏的帧或由于噪声导致的错误帧.
- 直通转发方式不需要将整个帧全部接收下来以后再进行转发, 只要知道了目标地址就可以开始转发了. 因此它具有延迟较短的由是, 但同时增加了发送错误帧的可能性.
三. 以太网
在中多数据链路中, 最为著名使用最广泛的莫过于以太网.
在以太网普及之初, 一般采用多台终端使用同一根同轴电缆的共享介质型网罗链接方式, 采用半双工通信.
而现在随着互联设备的处理能力以及传输速度的提高, 一般都采用终端于交换机之间独占电缆(双绞线)的方式实现以太网通信, 采用全双工通信.
1. 以太网的帧格式
以太网帧前端有一个叫做前导码的部分. 它有0/1数字交替组合而成, 表示一个以太网帧的开始, 也是对端网卡能够确保与其同步的标志. 前导码的末尾是一个叫SFD的域, 它的值为”11”, 在SFD域之后就是以太网帧的本体. 前导码和SFD合起来占8个字节.
以太网帧的前导码及SFD域如下图:
以太网帧的本体的前端是以太网首部, 它共占14个字节. 分别为6个字节的目标MAC地址, 6个字节的源MAC地址, 以及2个字节的上层协议类型.
紧随在帧首部后面的是数据, 一个数据帧所能容纳的最大数据范围是46~1500个字节. 帧尾是一个4字节的帧检验序列FCS.
需要注意的是, 一般的以太网帧格式如上所述, 但是IEEE802.3的以太网帧首部与上面所说的不太一样. 在一般的以太网帧首部中表示类型的字段, 在IEEE802.3中表示的是帧的长度, 此外数据部分的前端还有LLC和SNAP等字段, 而标示上层协议类型的字段就在SNAP中.
下图是两种以太网帧体的格式:
在一般的以太网帧首部中, 标示上层协议的类型的字段里存储的是协议类型的编号, 关于主要协议类型及其编号如下表:
类型编号(16进制) | 协议 |
---|---|
0800 | Internet IP(IPv4) |
86DD | IP version 6(IPv6) |
0806 | ARP |
8035 | RARP |
emmm… 关于数据链路层的知识点就先记录到这里啦~