计算机网络(第8版)谢希仁
第 3 章 数据链路层
3.1数据链路层的几个共同问题
3.1.2 三个基本问题
-
封装成帧
成帧是将网络层传下来的数据包封装成帧的过程,这个过程包括添加头部和尾部。首部和尾部还包含许多必要的控制信息。
-
透明传输
指在数据传输过程中,对用户和应用程序来说,数据的传输是无感知的,即数据能够自动穿越各种网络和系统,完成预定的传输任务,而不需要用户介入和干预。这种传输方式确保了数据的完整性和安全性,使得数据在不同系统或网络之间传输时,对用户来说是透明的。
-
差错校验
循环冗余校验(Cyclic Redundancy Check,CRC)是一种常用的错误检测技术,它通过在数据后附加一个校验码来检测数据在传输或存储过程中是否发生错误。CRC的基本原理是将数据视为一个长多项式,然后除以一个预定的生成多项式,余数就是CRC校验码。
CRC的计算步骤:
- 选定生成多项式:这是一个二进制数,通常表示为一个多项式,如 x4+x+1,其二进制表示为
10011
。 - 准备数据:在原始数据后面附加
k−1
个零(其中 k 是生成多项式的次数),以确保数据的长度足够进行模二除法。 - 模二除法:使用模二除法(不进位的除法)将数据除以生成多项式,得到的余数即为CRC校验码。
- 附加校验码:将CRC校验码附加到原始数据后面,形成新的数据帧进行传输。
模二除法示例:
假设我们有以下数据和生成多项式:
- 数据:
10110011
- 生成多项式:G(x)=x4+x3+1,二进制表示为
11001
计算过程:
- 在数据后面附加4个零(因为生成多项式的次数是4),得到
101100110000
。 - 执行模二除法,即将
101100110000
除以11001
,使用异或操作代替减法。 - 执行除法后,得到的余数是
0100
,这就是CRC校验码。 - 将CRC校验码
0100
附加到原始数据后面,形成新的数据帧101100110100
进行传输。
例题:
假设我们要发送的数据是 1011010101
,生成多项式为 G(x)=x4+x+1(二进制表示为 10011
)。
计算步骤:
- 在数据后面附加4个零,得到
10110101010000
。 - 执行模二除法,即将
10110101010000
除以10011
。 - 得到的余数是CRC校验码,假设为
0100
。 - 将CRC校验码
0100
附加到原始数据后面,得到最终的发送数据1011010101000100
。
在接收端,使用相同的生成多项式对接收的数据进行模二除法,如果余数为0,则表明数据在传输过程中没有出错;如果余数不为0,则表示数据传输过程中出现了错误。
3.2 点对点协议 PPP
点对点协议(PPP)是一种在两个网络实体之间建立、配置和测试数据链路连接的链路层通信协议。
- 动态IP地址分配:PPP能够在链路建立时动态分配IP地址,允许在连接时刻协商IP地址。
- 错误检测:PPP具有错误检测能力,但不具备纠错能力,因此它是一个不可靠的传输协议。
- 无重传机制:PPP没有重传机制,因此网络开销小,速度快。
- 支持多种网络层协议:PPP可以支持多种网络层协议,如IP、IPX等。
- 身份认证:PPP支持多种认证方式,包括PAP(Password Authentication Protocol)和CHAP(Challenge Handshake Authentication Protocol)。
- 数据压缩:PPP支持数据压缩,以减少需要传输的数据量,提升链路的传输效率。
- 链路控制:PPP包含链路控制协议(LCP),用于建立、配置和测试数据链路连接。
- 网络控制:PPP使用网络控制协议(NCP)来配置和测试不同的网络层协议
PPP协议格式
首部四个字段,尾部两个字段
协议字段
- 0x0021:IP数据报,
- 0xC021:LCP数据,
- 0x8021:IPCP数据(网络控制层的数据)。
LCP(Link Control Protocol)是点对点协议(PPP)中的一个重要组成部分,主要负责建立、配置、维护和终止PPP链路。在PPPoE(Point-to-Point Protocol over Ethernet)拨号过程中,LCP用于协商和管理数据链路的参数和特性,以确保PPP连接的可靠性和稳定性。
NCP(Network Control Protocol)是PPP(Point-to-Point Protocol)的一个组件,用于在PPP链路建立后协商网络层参数。
PPP协议的工作状态:
3.3 使用广播信道的数据链路层
适配器的作用:
实现计算机与外界局域网连接
3.3.2 CSMA/CD 协议
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)协议是一种在局域网(LAN)中用于控制网络设备访问共享通信媒介的协议。
1.协议层次:
- CSMA/CD工作在OSI模型的第二层,即数据链路层。
2.访问方式:
- 载波监听(Carrier Sense):在发送数据之前,还是发送当中,每个站必须不停地检测信道
- 多路访问(Multiple Access):多个节点共享同一通信媒介,如以太网。
3.碰撞检测(Collision Detection):
-
当两个或多个节点同时发送数据时,可能会发生碰撞。CSMA/CD协议允许节点在发送数据时检测到碰撞。
-
如果检测到碰撞,节点会停止发送数据,并等待一个随机的时间后再次尝试发送。
单程端到端的传播时延记为τ
4.碰撞处理:
-
一旦发生碰撞,遵循二进制指数退避算法:
直接用比特作为争用期的单位
从一组数中随机选择一个数来确定的,这组数的范围是[0, 2^k - 1],记为r。k是重传次数。
k = Min[ 重传次数,10 ]
5.适用场景:
- CSMA/CD主要用于半双工通信,即在同一时间内只能进行单向通信。
- 它适用于共享介质的网络,如使用同轴电缆的以太网。
==以太网规定了一个最短字长64字节,即512比特。==因此凡长度小于64 字节的帧都是由冲突而异常终止的无效帧。
强化碰撞:一旦发生碰撞,除了立即停止发送外,还会继续发送32比特或48比特的干扰信号,警示发生了碰撞。
3.3.3 使用集线器的星型拓扑结构
- 物理层设备:集线器工作在OSI模型的物理层,这意味着它只负责处理原始的电子信号,不涉及数据包的识别、解析或路由。
- 信号再生:集线器接收到一个端口传来的信号后,会再生(放大)这个信号,以确保信号在传输过程中不会因为衰减而丢失。
- 广播转发:集线器会将从任一端口接收到的信号转发到所有其他端口。这意味着在没有碰撞的情况下,一个端口上的数据可以被所有其他端口接收。
- 碰撞域:由于集线器不识别数据包的目的地址,它会导致所有连接到它的设备共享同一个碰撞域。如果两个设备同时发送数据,就会发生碰撞,这会降低网络性能。
- 星型拓扑:尽管集线器在逻辑上创建了一个总线型网络(因为所有设备共享同一个碰撞域),但它在物理上通常以星型拓扑连接设备,即每个设备都直接连接到集线器的一个端口。
- 带宽共享:在集线器连接的网络中,所有设备共享相同的带宽。如果网络的带宽是10Mbps,那么无论有多少设备连接到集线器,总带宽都是10Mbps。
- 不支持交换功能:与交换机(Switch)不同,集线器不检查数据包的目的地,因此它不能像交换机那样为不同的设备间通信提供独立的带宽。
- 成本较低:集线器通常比交换机便宜,但它们在现代网络中的应用越来越少,因为交换机提供了更好的性能和更多的功能。
- 适用于小型网络:在小型或简单的网络中,集线器可能仍然被使用,但在需要高性能和高带宽的环境中,集线器可能会成为瓶颈。
3.3.4 以太网的信道利用率
假设发送帧需要的时间是T0(帧长bit除以发送速率 10Mbit/s)
成功发送一个帧需要占用信道的时间是 T0 + τ
单程端到端的时延τ与帧发送的时间之比T0 : α = τ / T0
极限信道利用率:Smax = T0 / T0 + τ = 1 / 1 + α
3.3.5 以太网的MAC层
1. MAC层的硬件地址:
硬件地址 = 物理地址 = MAC地址(6个字节)
MAC层可能会处理三种主要类型的帧,这些帧与单个网络设备(本站)有关,根据目的地址来判断是什么播。
(1)单播帧(Unicast Frame):收到帧的MAC地址与本站MAC地址形同,第一个字节的最低位为0
(2)广播帧(Broadcast Frame):发送给本局域网中所有设备的帧(全1地址)
(3)多播帧(Multicast Frame):发送给特定一组设备的帧, 第一个字节的最低位为1
2. MAC帧的格式:
(两种,这里介绍了一种)
😎*为什么数据段最低为46字节:*为了保证整个帧的长度至少为64字节(CSMA/CD协议的限制),数据字段的最小长度必须是64 - 18 = 46字节。
😎为什么数据段最多为1500字节:1500字节是标准以太网的最大传输单元(MTU),也称为以太网帧的最大数据长度。超过这个长度的数据需要进行分片处理,这会增加网络的复杂性和处理时间。
3.4 扩展的以太网
集线器与交换机的不同点:
集线器(Hub) | 交换机(Switch) | |
---|---|---|
工作层次 | 物理层 | 数据链路层 |
作用 | 简单地转发所有接收到的信号到所有其他端口,不进行任何识别或过滤。 | 识别数据包中的MAC地址信息,进行帧的转发和过滤。 |
数据传输(帧转发) | 采用广播方式,将所有接收到的数据包广播到所有端口,无论是否为目标设备 | 数据包的直接交换,即数据包仅发送到目标MAC地址所在的端口 |
碰撞域 | 所有端口共享同一个碰撞域,一个端口上的碰撞可以影响到所有其他端口 | 每个端口代表一个独立的碰撞域 |
带宽使用 | 所有端口共享同一带宽 | 提供多个端口,每个端口可以独立工作在全双工模式,不共享带宽 |
3.4.1 在物理层扩展以太网
- 使用光纤扩展

🌍 通常是一对光纤和一对光纤调制解调器组成。
🌍 光纤调制解调器:进行光信号和电信号的转换。这种方式可以跨越较大的地理距离,但需要注意的是,如果不同的碰撞域使用不同的数据率,那么不能用集线器将它们互连起来。
- 使用集线器扩展:
🌍 两个独立的以太网,两个碰撞域。
🌍如果以上每个集线器的吞吐量为 10Mbit/s(10BASE-T 以太网),那么第一个碰撞域中每个PC的吞吐量为 2.5 Mbit/s ,第二个碰撞域的每个PC吞吐量为5 Mbit/s ,共享带宽。
🌍 把三个系的碰撞域通过 集线器 连接起来成为一个 更大的碰撞域。
🌍 如果以上每个系的吞吐量为 10Mbit/s,那么这个更大的碰撞域的总吞吐量为 30 Mbit/s 。
3.4.2 在数据链路层扩展以太网
1. 网桥(bridge):能够识别帧的结构,并根据帧首部中的目的MAC地址和网桥自身的帧转发表来转发或丢弃所收到的帧。网桥可以连接多个以太网段,使得它们成为一个更大的网络,同时每个网段保持独立的碰撞域。网桥的转发和过滤功能基于其内部的转发表,该表记录了网桥所知道的各主机的MAC地址与各接口的对应关系。
2. 以太网交换机
🌍 实质是多端口的网桥,双全工工作方式,具有并行性,相互通信的主机都独占传输媒介,无碰撞域的传输数据,即每个端口和连接到端口的主机构成了一个独立的碰撞域。
🌍 即插即用设备。内部采用帧交换表(地址表),
以太网交换机的自学习功能
过程(假设A向B发送一帧):
交换机自动学习功能
交换机自动学习功能
🌍 帧从1端口进入交换机,无B的地址,所以把A的源地址和端口写入交换表,后进行广播(除了1端口以外的所有端口)
🌍B收到后接收,C和D因为目的地址不匹配丢掉帧。
3.4.3 虚拟局域网(VLAN)
是一种在物理局域网内部划分逻辑上独立的虚拟网络的方法。它通过在网络交换机上配置,将不同的设备分组到不同的虚拟网络中,实现了逻辑上分隔的网络通信。
VLAN的基本原理
虚拟局域网的实现基于交换机的功能,通过在交换机上进行配置来创建和管理VLAN。以下是虚拟局域网的基本原理:
- 端口划分:交换机上的每个端口都可以配置为属于一个或多个VLAN。通过配置端口所属的VLAN,可以将该端口上的设备划分到相应的虚拟局域网中。
- 逻辑分段:在交换机上配置VLAN,将物理局域网划分为多个逻辑上的虚拟局域网。这些VLAN之间是相互隔离的,每个VLAN形成一个独立的广播域,只有属于同一VLAN的设备才能相互通信。
- 标签封装(Tagging):VLAN标签是在以太网帧中插入的一个额外字段,用于标识该帧属于哪个VLAN。IEEE 802.1Q是VLAN标签的标准协议,定义了如何在以太网帧中插入一个包含VLAN ID等信息的4字节标签字段。
- 交换机处理:当带有VLAN标签的数据帧进入交换机时,交换机会读取标签信息,并根据VLAN ID将数据帧转发到相应的VLAN内的端口。对于未带标签的帧,如果通过Access端口进入,会被默认分配到配置的VLAN。
— 适配器,转发器,集线器,网桥,以太网交换机的作用以及使用场合。