3.1 数据链路的作用
数据链路层的协议定义了通过通信媒介互联的设备之间传输的规范。通信媒介包含双绞线电缆、同轴电缆、光纤、电波以及红外线等介质。此外,各个设备之间有时也会通过交换机、网桥、中继器等中转数据。
数据链路层将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
![](https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/9c60793f-5e7f-453b-8413-35890c24abc4.png)
3.1.1 MAC地址
MAC 地址是链路层地址,长度为 6 字节(48 比特位),用于唯一标识网络适配器(网卡)。
一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。
3.1.2 共享介质型网络
从通信介质的使用方法来看,网络可分为共享介质型和非共享介质型。
共享介质型网络指由多个设备共享一个通信介质的一种网络。在这种方式下,设备之间使用同一个在载波信道进行发送和接收。为此基本采用半双工通信。
共享介质网络中有两种介质访问控制方式:争用方式和令牌传递方式。
争用方式:
争用方式是指争夺获取数据传输的权利,也叫CSMA(载波监听多路访问)。这种方式通常令网络中的各个站采用先到先得的方式占用信道发送数据,如果多个站同时发送帧,则会产生冲突现象。
在一部分以太网中,采用了改良CSMA的另一种方式----CSMA/CD方式。
CSMA/CD 表示载波监听多点接入 / 碰撞检测。
- 多点接入 :说明这是总线型网络,许多主机以多点的方式连接到总线上。
- 载波监听 :每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
- 碰撞检测 :在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。
![](https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/9bd12b89-f99c-49f4-ae45-410f76a713d6.png)
令牌传递方式:
令牌传递方式是沿着令牌环发送一种叫做“令牌”的特殊报文,是控制传输的一种方式。只有获得令牌的站才能发送数据。这种方式有两个优点:一是不会有冲突,二十每个站都有雨通过平等循环获得令牌的机会。缺点是,一个站没有收到令牌前不能发送数据帧,因此在网络不太拥挤的情况下数据链路的利用率也达不到100%。
3.1.3 非共享介质网络
非共享介质网络是指不共享介质,是对介质采用专用的一种传输控制方式。在这种方式下,网络中的每个站直连交换机,有交换机负责转发数据帧。此方式向下,发送端与接收端并不共享通信介质,因此很多情况下采用全双工通信。
在这种一对一连接全双工通信的方式下不会发生冲突,因此不需要CSMA/CD机制就可以实现更高效的通信。
3.1.4 根据MAC地址转发
以太网交换机就是持有多个端口的网桥。它们根据数据链路层中每个帧的目标MAC地址,决定从哪个网络接口发送数据。这时所参考的、用以记录发送接口的表就叫做转发表。
交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。
正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧。主机 B 向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 3 的映射。
![](https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/80646c77-1f32-484c-810e-af80ce00f902.png)
3.1.5 局域网
局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。
主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。
可以按照网络拓扑结构对局域网进行分类:
![](https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/df01dbcd-4a3c-4877-86e8-5590d7589788.jpg)
虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。
![](https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/99208bd0-1454-4618-9969-0c2deb8bba0f.png)
3.2 以太网
以太网是一种星型拓扑结构局域网。
早期使用集线器进行连接,集线器是一种物理层设备, 作用于比特而不是帧,当一个比特到达接口时,集线器重新生成这个比特,并将其能量强度放大,从而扩大网络的传输距离,之后再将这个比特发送到其它所有接口。如果集线器同时收到两个不同接口的帧,那么就发生了碰撞。
目前以太网使用交换机替代了集线器,交换机是一种链路层设备,它不会发生碰撞,能根据 MAC 地址进行存储转发。
以太网帧格式:
- 类型 :标记上层使用的协议;
- 数据 :长度在 46-1500 之间,如果太小则需要填充;
- FCS :帧检验序列,使用的是 CRC 检验方法;
![](https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/420f4dc0-6c4b-486c-afea-274299014462.png)
3.3 PPP协议
PPP(Point-to-Point Protocol)是指点对点,即1对1连接计算机的额协议。PPP相当于OSI参考模型第二层的数据链路层。PPP不像以太网和FDDI。后两者不仅与OSI参考模型的数据链路层有关,还与第1层的物理层有关。具体来讲