「计算机网络」数据链路层的三个基本问题和MAC帧格式
信道分类:
-
广播信道
一对多通信,一个节点发送的数据能够被广播信道上所有的节点接收到。所有的节点都在同一个广播信道上发送数据,因此需要有专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞)。主要有两种控制方法进行协调,一个是使用信道复用技术,一是使用 CSMA/CD 协议。 -
点对点信道
一对一通信。因为不会发生碰撞,因此也比较简单,使用 PPP 协议进行控制。
1. 使用点对点信道的数据链路层
1.1 数据链路和帧
链路(link)就是从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换节点。
数据链路(data link)是在链路的基础上加上必要的通信协议。常用的方法是使用网络适配器(包括硬件和软件)实现协议,一般的适配器包括了数据链路层和物理层的功能。
数据链路层功能:将网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交到网络层。
点对点信道的数据链路层通信步骤:
- 结点A的数据链路层把网络层交下来数据IP报添加首部和尾部封装成帧;
- 结点A把封装好的帧发送给结点B的数据链路层;
- 若结点B的数据链路层接收的帧无差错,则从收到的帧中提取数据IP报上交给结点B的网络层,否则丢失这个帧。
1.2 三个基本问题
数据链路层协议的三个基本问题:封装成帧、透明传输和差错检测
- 封装成帧
封装成帧就是将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。接收端在收到从物理层上交的比特流中根据首部和尾部的标记,从收到的比特流中辨别帧的开始和结束。
每一种链路层协议都规定了所能传送帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)。(重点)
- 透明传输
透明表示一个实际存在的事物看起来好像不存在一样。
帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
- 差错检测
比特差错:比特在传输过程中可能产生差错,1变成0,0变成1。目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。
2. 点对点协议PPP
互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议(Point-to-Point Protocol)是用户计算机和 ISP 进行通信时所使用的数据链路层协议。
2.1 PPP协议的组成
PPP协议有三个部分组成:
- 将IP数据报封装到串行链路的方法;
- 用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol);
- 网络控制协议NCP(Net Control Protocol)。
2.2 PPP协议的帧格式
- 首部中的标志字段 F(Flag) 字段为帧的定界符,表示一个帧的开始和结束;
- 首部中的地址字段 A 和控制字段 C 字段暂时没有意义;
- 首部中的第四个字段是2字节的协议字段,协议字段为0x0021时PPP协议的信息字段就是IP数据报,0xC021则信息段是PPP链路控制协议LCP的数据,而0x8021表示网络层的控制数据;
- FCS 字段是使用 CRC 的检验序列
- 信息部分的长度不超过 1500
3. 使用广播信道的数据链路层
3.1 局域网的数据链路层
局域网是一种典型的广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。
主要有以太网、令牌环网、FDDI 和 ATM 等局域网技术,目前以太网占领着有线局域网市场。
可以按照网络拓扑结构对局域网进行分类:星形网、环形网和总线网
2. CSMA/CD协议
CSMA/CD 表示载波监听多点接入/碰撞检测(Carrier Sense Multipule Access whit Collision Detection)。
- 多点接入:说明这是总线型网络,许多主机以多点的方式连接到总线上。
- 载波监听:每个主机都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。
- 碰撞检测:在发送中,如果监听到信道已有其它主机正在发送数据,就表示发生了碰撞。虽然每个主机在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。
记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为争用期 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 截断二进制指数退避算法 来确定。从离散的整数集合 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。其中 ,当重传次数达到16次仍不能成功传送,则丢弃该帧,并向高层报告。
3. 以太网的MAC层
在局域网中,硬件地址又称为物理地址或MAC地址
MAC地址是链路层地址,长度为 6 字节(48 位),用于唯一标识网络适配器(网卡)。一台主机拥有多少个网络适配器就有多少个 MAC 地址。例如笔记本电脑普遍存在无线网络适配器和有线网络适配器,因此就有两个 MAC 地址。
以太网V2的MAC帧格式(重点):
以太网V2的 MAC 帧格式由五个字段组成,前两个字段分别为6字节长的目的地址和源地址字段;第三个字段是2字节长的类型字段,用来标志上一层使用什么协议,0x0800表示上层使用 IP 数据报;第四个字段是数据字段;最后一个字段是4字节的帧检测序列FCS(使用CRC检验)。
4. 扩展以太网
4.1 在物理层扩展以太网
使用光纤和一对光纤调制解调器(对电信号和光信号进行转换)来扩展主机和集线器之间的距离。使用多个集线器就可以连接成覆盖更大范围的多级星形结构的以太网。
4.2 在数据链路层扩展以太网
以太网交换机(switch)工作在数据链路层,实质上是一个多接口的网桥(bridge),每个接口都直接与一台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。交换机还具有并行性,即能同时连通多对接口,使多对主机能同时通信。
交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
下图中,交换机有 4 个接口,各连接一台主机。主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么交换机将这个帧的源地址 A 和接口 1 写入交换表中,并向除了接口 1 以外的所有接口发送广播帧。主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 3 的映射。
4.3 虚拟局域网
虚拟局域网VLAN(Virtual LAN)可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息。
例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。
使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。
参考文献
[1] 谢希仁. 计算机网络(第七版)
[2] https://github.com/JiangJiaWei520/CyC2018