| # 数据链路层 |
| ### 使用点对点信道的数据链路层 #### 数据链路和数据帧 - 链路:一条无源的点到点物理线路,中级那没有任何其他的交换节点。(一条链路只是一条通路的组成部分) - 物理链路 - 数据链路(逻辑链路:物理链路加上必要的通信协议):实现协议的硬件(网络适配器)和软件(协议)以及链路的总和 一般适配器都包含了数据链路层和物理层的功能 |
| 数据链路层传送的数据单位为“帧”,两个对等的数据链路层之间像一个数字管道一般传输以帧为单位的数据。不必考虑物理层实现的细节,想方设法水平将帧发送给对方。 |
| ### 三个基本问题 |
-
封装成帧:在一段数据的前后分别加上首部和尾部构成一个帧,首位的作用为帧定界
当数据是由可以打印的ASCLL码组成的文本时可使用特殊的帧定界符,例如:
-
透明传输:解决数据中出现帧定界符被错误的判断帧的边界的问题。
可以使用字节(字符)填充的方法,在帧定界符的前面插入一个转义字符”ESC”
连续出现两个ESC就删掉一个。 -
差错检测:在传输过程中可能会产生比特差错:0
变为1 ,或者1变成0。
一段时间内传输错误占总传输量的比率被称为误码率BER(Bit Error Rate)
为保证数据传输的可靠性,在计算机传输信息的过程中需要采取各种差错检测的措施。 |
####
循环冗余检验CPC检错技术 1.
在发送端将数据分组,假定每组数据K个比特 2.
发送数据M = 101001,在M后面添加n位冗余码一起发送
3. 冗余码计算: 1. 确定一个位数为n + 1 的除数p
2.
在k位需要发送数据M的后面添上n位0
3.
拼接后的M除p,得到的余数即为冗余码(必定为n)位
4.
使用冗余码替换刚才用来和M拼接的0得到的便是我们要发送的数据。
4.
接收方获得FCS后使用FCS和p进行除法运算,得到的结果若不为0则传输的数据一定错误,丢弃该数据。但无法判断出错的数据在哪里。只要p的位数足够多,那么出现检测不到的差错的概率就会大大降低。 |
二进制减法为两个二进制数异或运算
![]() |
| #### 帧检验序列FCS - 在数据后面添加了冗余码后称为帧检验序列(FCS) - 循环冗余检验CRC只是常用的一种检错方式(不唯一),而FCS是添加在数据后面的冗余码。 |
| ### 点对点协议PPP |
#### PPP协议的特点 -
目前最广泛应用的数据链路层协议 -
与ISP之间的通讯使用的就是PPP协议 ![]() |
| #### ppp协议应满足的要求 - 简单——首要要求 - 封装成帧——规定特殊字符作为帧定界符 - 透明性——保证数据传输透明性 - 多种网络层协议——能够早同一条物理链路上运行多条网络层协议 - 支持多种链路——能够在多种类型链路上运行 - 差错检测——能够检测接收端收到的帧并且立即丢弃有差错的帧 - 检测链接状态 - 设置最大传输单元(数据部分的最大长度)以促进各种显示之间的互操作性 - 网络层地址协商——提供一种机制使得两个网络层实体可以通过协商指导或能够配置彼此的网络层地址。 - 数据压缩协商 |
| #### PPP协议的组成 - 一个将IP数据包封装到串行链路的方法 - 一个建立、配置和测试数据链路连接的链路控制协议LCP - 一套支持不同网络层控制协议的NCP |
#### PPP数据帧格式 -
PPP帧首部和尾部分别为4个字段和2个字段 -
标志字段F = 0x7E表示为2进制为0111110 -
地址字段A只设置0xFF (不起作用) -
控制字段C通常设置为0x03(不起作用) |
PPP是面向字节的,所有PPP帧的长度都是整数字节
![]() |
| #### 透明传输问题 当PPP用在同步传输的链路时,协议规定采用硬件来完成零比特填充当PPP使用异步传输链路时,使用一种特殊字节填充法 |
-
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特联系传送)。这时PPP协议建议使用零比特填充的方法来实现透明传输
-
在发送端只要发现5个连续的1立即在其后面填充一个0
-
在接收端对帧的比特流进行扫描,只要发现5各连续的1时,就将这5个1后面的一个0删掉 |
![]() |
| #### 字节填充 |
-
将信息字段中出现的每一个0x7E字节转变为两个字节序列0x7D,0x5E
-
若信息字段出现一个0x7D的字节,则将其转变为两个字节序列0x7D,0x5D
-
若信息字段中出现ASCLL码(数值小于0x20)的控制字符,则在该字符前面加入一个0x7D |
好多…… 看着有点累
PPP协议不提供使用序号和确认可靠传输
- 在数据链路层出现差错的概率不大时简单的PPP协议更为合理
- 在因特网环境下,PPP的信息字段放入数据是IP数据报。数据链路层并不能保证网络层的传输也是可靠的。
- 帧检验序列FCS字段可以保证无差错接收
PPP协议的工作状态
- 用户拨号接通ISP时路由器的调制解调器对拨号作出确认,并建立一条物理链路
- PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)
- 这些分组及其影响选择一些ppp参数,并且进行网络层配置,NCP给新介入的PC机分配一个临时IP地址,使PC机成为因特网上的一个主机
- 通信完毕后NCP释放网络层链接,收回原来分配出去的网络地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。

使用广播信道的数据链路层
局域网的数据链路层
- 局域网的组要特点:
- 网络为一个单位所有
- 地理范围和站点数目均有限
- 局域网具有如下的优点:
- 具有广播功能,可以从一个站点很方便的访问拳王,局域网上的主机可以共相连接在局域网上的各种硬件和软件资源
- 便于系统的扩展和逐渐演变,各设备的位置可以灵活调整改变、系统有较高的可靠性、可用性、残留性。
媒体共享技术
静态划分信道 - 频分复用 - 时分复用 - 波分复用 - 码分复用 动态媒体介入(多点介入) - 随机接入 - 受控接入
以太网的两个标准: - DIX Ethernet V2:第一个局域网产品(以太网)标准
- IEEE 802.3:第一个IEEE的以太网标准(WIFI、蓝牙)
IEEE802.3
- 逻辑链路控制LLC子层
- 媒体接入控制MAC子层 接入媒体的有关内容都放在MAC层。因为不管采用何种协议对LLC层来说都是透明的。
LLC子层的作用在不断弱化
网络适配器
网络接口板又称通信适配器、网卡 主要功能: - 串/并转换 - 对数据进行缓存 - 在计算机操作系统安装设备驱动程序 - 实现以太网协议
CSMA/CD协议
最初以太网是用一根总线将许多计算机连接在一起,一个计算机发送的数据信号其他计算机都能收到,但是只有目的地址和其发送数据的目的地址相同的计算机彩绘接收这一信息,其余计算机检测到地址不同则会丢掉这份数据。
CSMA/CD协议的功能就是解决这种数据碰撞。
以太网采取的两种措施: - 无链接的工作方式 - 不必先建立连接 - 不追求可靠交付,而是尽最大努力交付 - 出现差错CSMA/CD直接丢掉数据帧,不管这个数据帧是第一次传还是重传 - 以太网发送数据使用曼彻斯特编码 - 缺点:所占频带宽度增加一倍
CSMA/CD含义:载波监听多点介入/碰撞检测
- 多点接入:许多计算机接到一跟总线上
- 载波监听:在每一个站点发送数据前使用电子技术检测总线上有没有其他计算机发送数据信号,如果有则暂时不发送数据。(局部)
- 碰撞检测:计算机以便发送数据以便检测信道上的信号电压大小。若电压摆动值超过一定门限则表明总线上至少有两个站在同时发送数据,表明产生了碰撞。(远处)
- 需要碰撞检测的原因:电磁波在总线上传输的速率是有限的。
CSMA/CD协议的重要特性
- CSMA/CD协议质只能进行半双工通信
- 每个站发送后的一小短时间内都存在发生碰撞的可能性。
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率
争用期
最先发送数据的站在发送数据帧后至多经过时间2T(两倍端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。 2T就被称为以太网的争用期或碰撞窗口
10Mbit/s以太网取51.2us为争用期长度。- 对于
10Mbit/s以太网在争用期可以发送512bit即64字节
如果发生冲突,一定在前64字节之内一旦检测到冲突则发送出去的数据一定小于64字节。以太网规定最短有效帧长为64字节,凡小于64字节的帧都属于因冲突而终止的无效帧
二进制指数类型退避算法
发生碰撞后站立刻停止重传(退避)一个随机时间才能重新发送数据。
基本退避时间取争用期为2T从集合
中随机取一个数r重传时间就是r倍的退避时间。
参数k的计算公式如下
其中S为重传次数。
强化碰撞
当数据发生碰撞时: 1. 立刻停止发送数据 2. 在继续发送若干认为干扰信号以便让所有用户得知现在已经发生碰撞。
CSMA/CD协议的要点
- 准备发送:发送前先检测信道
- 若检测到信道忙则不停地检测,一直等到信道转为空闲、并且在96比特时间内信道保持空闲(帧间最小间隔)然后发送这个帧。
- 检查碰撞:发送过程中不断监听信道:
- 发送成功:回到 1
- 停止发送,执行指数退避算法,返回 2,若重传16次仍失败则停止崇川向上报错。
从总线到星形以太网。
传统以太网使用同轴电缆、而后发展为更灵活的双绞线。采用双绞线的以太网采用星形拓扑结构中心增加可靠性非常高的设备——集线器

集线器在逻辑上属于一个总线网,各工作站共享逻辑上的总线。集线器采用专门的芯片进行自适应串音回波抵消,减少近端串音。
星形以太网 10BASE-T

使用无屏蔽双绞线采用星形拓扑,每个站需要使用两对双绞线分别用于发送和接收。双绞线两端使用RJ-45插头。集线器使用大规模集成电路芯片大大提高集线器的可靠性。10BASE-T的通信距离较短,每个站点到集线器的距离不超过100m。
-
多个站在以太网上同时工作就有可能产生碰撞,且以太网的利用率不会达到百分之百。
- 假设τ是以太网但成端到端传播时延。则争用期长度达到2τ。 -
设帧长为L(bit)发送数据速率为C(bit/s)则发送时间为
一个站发送帧时出现的碰撞经过2τ后可能又出现碰撞,经历若干争用期后发送成功。假设发送帧所需时间T0,则成功发送一个帧占用信道的时间为T0+τ。
定义参数α,它是以太网但成端到端时延与帧的发送时间只比。
- 表示一发生碰撞就能检测到并且停止发送。信道利用率很高。
- α越大表明争用期占用比例越大,信道利用率越低。
1 | <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" float="right"><mi>α</mi><mo accent="false" stretchy="false">→</mo><mn>0</mn></math> |
为提高利用率,α应该尽可能小。 - 数据率一定时以太网连线的长度不应太常,否则τ会很大 - 以太网帧长不能太短,否则会很小。
信道利用率的最大值为
在理想化的情况下,以太网上的各站发送数据都不会产生碰撞,即总线一旦空闲就会有某一个站立即发送数据。发送一帧占用路线的时间是由此我们可以计算出理想情况下的极限信道利用率为:
只有当α远小于1时才能尽可能的提高极限信道利用率
以太网的MAC层
MAC硬件地址
在局域网中,硬件地址也称物理地址或者MAC的地址。
IEEE802标准规定MAC地址采用6字节(48位)或者2字节(16位)这两种中的一种。
IEEE注册机构负责向厂家分配高24位(3字节)厂家自行指派后24位(3个字节)确保生产的适配器没有重复地址。
MAC帧格式
常用以太网MAC帧格式有两种标准:DIX Ethernet V2标准和IEEE 802.3标准。
最常用的MAC帧是以太网的V2格式。
MAC帧的帧定界符在MAC帧之外的物理层数据单元中。

MAC帧类型: - 单播:一对一 - 多播:一对多 - 广播:一对全体目的地址48个1
无效MAC帧:
- 数据字段的长度与长度字段的值不一致;
- 帧的长度不是整个字节;
- 收到的序列FCS查出有错误;
- 数据长度不在46~1500字节之间;
- 有效MAC帧长度位64~1518字节之间。
扩展的以太网
在物理上扩展以太网
- 使用光纤进行扩展:主机使用光纤和光纤调制解调器连接到集线器。可以使得主机与几公里之外的集线器相连接。

使用集线器扩展 - 使用多个集线器可以连城更大的多级星形结构以太网。 - 优点:扩大了以太网覆盖的地理范围,能够进行跨域碰撞的通信。 - 缺点:碰撞域增大,但吞吐量并未提高,不同的碰撞域使用不同的数据率那么就不能使用集线器将他们连接起来。通信的质量变差了。
在数据链路层扩展以太网
早期使用网桥现在使用以太网交换机。 以太网交换机的实质其实就是一个多接口网桥。以全双工的方式,以太网交换机具有并行性,同时能连接多接口时的多主机同时通信。其每个接口都具有接口存储器。支持即插即用其内部帧交换表又称地址表通过自学习算法逐步建立。
使用专用的交换结构芯片使用硬件转发,其转发速率要比使用软件转发的网桥快的多。
优点: - 用户独享带宽,增加了总容量。 - 提供不同速率的接口,方便各种不同情况的用户。
交换方式: - 存储转发:先缓存,再处理 - 直通方式:接收的同时就按照数据帧目的MAC地址决定转发接口,因而提高了转发速率。但其没有差错检查可能会发送一些无效帧
以太网交换机自学习算法

交换机不需要手动配置交换表使得其使用非常方便更有利于推广。
生成树协议
自学习算法的缺点 
生成树协议在逻辑拓扑中切断某些链路使一台主机到其他所有主机的路径是无环路的树状结构,从而消除“都圈子”的现象。
虚拟局域网(VLAN)
利用以太网交换机实现,由一些与物理维位置无关的局域网网段构成的逻辑组。每个VLAN都明确标识符,指明发送这个帧的计算机属于哪一个VLAN
由于虚拟局域网内相互通信会产生非常多的信息,故需要先哲接收广播信息的工作站数目防止出现广播风暴
局域网以太网帧格式:比一般帧多四个字节。 
高速以太网
100BASE-T
速率达到100Mbit/s的以太网都称作高速以太网。其仍使用IEEE 802.3 CSMA/CD协议。 最短帧长仍为64字节(技术的向后兼容性),传输速度比原来快10倍,故争用期需要缩短到原本的
吉比特以太网半双工方式才使用CSMA/CD协议,全双工不使用CSMA/CD协议
当数据是由可以打印的
-
透明传输:解决数据中出现帧定界符被错误的判断帧的边界的问题。
可以使用字节(字符)填充的方法,在帧定界符的前面插入一个转义字符”ESC”
连续出现两个ESC就删掉一个。
-
差错检测:在传输过程中可能会产生比特差错:


