文章目录
- 1.数据链路层概述
-
- [1.1 为什么需要数据链路](#1.1 为什么需要数据链路)
- [1.2 协议栈上看数据链路层](#1.2 协议栈上看数据链路层)
- [1.3 数据链路层信道类型](#1.3 数据链路层信道类型)
- [1.4 数据链路层基本术语](#1.4 数据链路层基本术语)
- [1.5 数据链路层像个数字管道](#1.5 数据链路层像个数字管道)
- 2.数据链路层的三个基本功能
-
- [2.1 封装成帧](#2.1 封装成帧)
- [2.2 透明传输](#2.2 透明传输)
- [2.3 差错检测](#2.3 差错检测)
- [2.4 CRC 检验方法](#2.4 CRC 检验方法)
-
- [🍀 CRC 循环冗余检验](#🍀 CRC 循环冗余检验)
- [🍀 CRC 冗余码的计算](#🍀 CRC 冗余码的计算)
- [🍀 接收端对收到的每一帧进行 CRC 检验](#🍀 接收端对收到的每一帧进行 CRC 检验)
- [🍀 注意事项](#🍀 注意事项)
- [3.点对点协议 PPP](#3.点对点协议 PPP)
-
- [3.1 PPP 协议的特点](#3.1 PPP 协议的特点)
- [3.2 PPP 协议的基本要求](#3.2 PPP 协议的基本要求)
-
- [🍀 简单](#🍀 简单)
- [🍀 PPP 协议应满足的要求](#🍀 PPP 协议应满足的要求)
- [3.3 PPP 协议的组成](#3.3 PPP 协议的组成)
- [3.4 PPP 帧格式](#3.4 PPP 帧格式)
-
- [🍀 语法、语义](#🍀 语法、语义)
- [🍀 PPP 同步传输和异步传输](#🍀 PPP 同步传输和异步传输)
- [🍀 PPP 协议经典应用](#🍀 PPP 协议经典应用)
- [3.5 PPP 透明传输](#3.5 PPP 透明传输)
-
- [🍀 PPP 异步传输时透明传输(字符填充)](#🍀 PPP 异步传输时透明传输(字符填充))
- [🍀 PPP 同步传输时透明传输(0 比特填充)](#🍀 PPP 同步传输时透明传输(0 比特填充))
- [3.6 可靠传输问题](#3.6 可靠传输问题)
- [3.7 PPP 协议的工作状态(同步)](#3.7 PPP 协议的工作状态(同步))
- 4.使用广播信道的数据链路层
-
- [4.1 局域网的特点](#4.1 局域网的特点)
-
- [🍀 局域网的数据链路层](#🍀 局域网的数据链路层)
- [🍀 局域网拓扑结构](#🍀 局域网拓扑结构)
- [4.2 媒体共享技术](#4.2 媒体共享技术)
- [4.3 以太网的两个标准](#4.3 以太网的两个标准)
- [4.4 以太网](#4.4 以太网)
-
- [🍀 以太网采取了两种重要的措施](#🍀 以太网采取了两种重要的措施)
- [🍀 以太网提供的服务](#🍀 以太网提供的服务)
- [4.5 CSMA/CD 协议](#4.5 CSMA/CD 协议)
-
- [🍀 计算机连接到一根总线的连接方式](#🍀 计算机连接到一根总线的连接方式)
- [🍀 以太网采用广播方式发送](#🍀 以太网采用广播方式发送)
- [🍀 总线的缺陷](#🍀 总线的缺陷)
- [🍀 CSMA/CD 协议含义](#🍀 CSMA/CD 协议含义)
- [🍀 碰撞检测](#🍀 碰撞检测)
- [🍀 为什么要进行碰撞检测](#🍀 为什么要进行碰撞检测)
- [🍀 CSMA/CD 重要特性](#🍀 CSMA/CD 重要特性)
- [🍀 CSMA/CD 协议的要点](#🍀 CSMA/CD 协议的要点)
- [🍀 以太网 MAC 帧发送过程](#🍀 以太网 MAC 帧发送过程)
1.数据链路层概述
1.1 为什么需要数据链路
结点:主机、路由器。
物理层解决了相邻结点透明传输比特的问题。
物理层没有解决的问题:
- 传输错误问题:发送端发送比特 1,而接收端收到比特 0,接收端无法知道接收的是否正确?
- 谁接收的问题,多个设备连接问题:谁能发送数据?数据发送给谁?谁负责接收和处理?
- 传输结束问题:如何知道一组数据即将到来?这组数据何时结束?
比特错误一般为连续比特错误(外界干扰影响连续比特传输),离散比特错误不易检测。
1.2 协议栈上看数据链路层
1.3 数据链路层信道类型
- 点对点信道:这种信道使用一对一的点对点通信方式,控制协议相对简单。
- 广播信道 :使用一对多的广播通信方式,通信过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享协议来协调这些主机的数据发送,控制协议相对复杂。
1.4 数据链路层基本术语
- 链路:结点间的物理通道。是一条无源的点到点的物理线路段(双绞线、光纤等),中间没有任何其他交换结点。一条链路只是一条通路的一个组成部分。
- 数据链路 :是结点间的逻辑通道。除了物理线路以外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路 ------ 数据链路 = 链路 + 协议。链路中通信双方的信道使用形式不同,会相应有不同的控制协议。
- 帧:链路层协议数据单元,封装网络层的数据报。
- 数据链路层 :负责通过一条链路从一个结点向物理链路直接相连的相邻结点传送帧。
网卡实现的物理层和数据链路层协议。
📑 数据链路的例子:
- 城市交通=街道+汽车交通规则
- 铁路交通=铁轨+火车运行规则
1.5 数据链路层像个数字管道
数据链路层不必考虑物理层如何实现比特传输的细节。
甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方。
2.数据链路层的三个基本功能
2.1 封装成帧
封装成帧(framing)就是在一段数据的前后分别添加首部 和尾部,然后就构成了一个帧。
首部和尾部的一个重要作用就是进行帧定界 ,确定帧的界限。
可以这样理解:
- 物理层发送的和接收的是一个一个的字母;
- 数据链路层发送和接收的是一个一个的单词;
- 接收端无法判别字母传输错误,但可以判别单词错误。
如何成帧:
- 当数据是由可打印的 ASCII 码组成的文本文件时,定界可以使用特殊的帧定界符;
- **控制字符 SOH(Start Of Header)**放在一顿的最前面,表示帧的首部开始,**控制字符 EOT(End Of Transmission)**表示的结束。
2.2 透明传输
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地"找到帧的边界"。
解决办法 ------ **字节填充(byte stuffing)**或字符填充(character stuffing):
- 发送端的数据链路层在数据中出现控制字符"SOH"或"EOT"的前面插入一个转义字符"ESC";
- 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符;
- 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
2.3 差错检测
在传输过程中可能会产生比特差错:
- 1 可能会变成 0,而 0 也可能变成 1;
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER(Bit Error Rate)。误码率与信噪比有很大的关系;
- 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
2.4 CRC 检验方法
🍀 CRC 循环冗余检验
在数据链路层,广泛使用了循环冗余检验 CRC 的检错技术:
- 在发送端,先把数据划分为组。假定每组 k 个比特;
- 假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
n 位冗余码的计算:
- 用二进制的模 2 运算进行 2 n 2^n 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0;
- 得到的(k + n)位的数除以事先选定好的长度为(n + 1)位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位;
- 将余数 R 作为元余码拼接在数据 M 后面发送出去。
🍀 CRC 冗余码的计算
🍀 接收端对收到的每一帧进行 CRC 检验
- 若得出的余数 R = 0,则判定这个没有差错,就接受(accept);
- 若余数 R != 0,则判定这个有差错,就丢弃;
- 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。
🍀 注意事项
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept):
- "无差错接受"是指:"凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些在传输过程中没有产生差错";
- 也就是说:"凡是接收端数据链路层接受的帧都没有传输差错"(有差错的帧就丢弃而不接受)。
要做到"可靠传输"(即发送什么就收到什么)就必须再加上确认和重传机制。
3.点对点协议 PPP
3.1 PPP 协议的特点
1994 年成为互联网的正式标准。
能够在多种链路上运行:
- 串行的、并行的;
- 同步链路、异步链路;
- 低速链路、高速链路;
- 交换的(动态的)、非交换的(静态的);
- 电的、光的;
- PPPOE(PPP over Ethernet);
- 实现了传统以太网没有身份验证、加密以及压缩等功能。
3.2 PPP 协议的基本要求
- 简单:这是首要的要求;
- 封装成帧:必须规定特殊的字符作为帧定界符;
- 透明性:必须保证数据传输的透明性;
- 多种网络层协议;
- 支持多种网络层协议(IP/IPX);
- 多种类型链路;
- 能够在多种类型的链路上运行;
- 差错检测:对收到的进行检测,并丢弃有差错的帧。
🍀 简单
Internet 最复杂的部分在 TCP 协议中,I P也相对比较简单,仅提供不可靠的数据报服务。因此,数据链路层没有必要提供比 IP 协议更多的功能:
- 数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制;
- 误码率比较高的无线链路上需要更为复杂的链路层协议;
- 简单使协议在实现时不容易出错,提高了不同厂商对协议的不同实现的互操作性;
- 不支持多点接入,不支持半双式或单工通信(全双工);
PPP 非常简单:每收到一个帧,进行 CRC 检验,如果 CRC 检验正确就收下这个帧,反之,就丢弃这个帧,其他什么也不做。
🍀 PPP 协议应满足的要求
- 检测连接状态:能够及时自动检测出链路是否处于正常工作状态;
- 最大传送单元:必须对每一种类型的点对点链路设置最大传送单元。MTU 的标准默认值,促进各种实现之间的互操作性;
- 网络层地址协商:必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址;
- 数据压缩协商:必须提供一种方法来协商使用数据压缩算法。
3.3 PPP 协议的组成
PPP 协议由三个组成部分:
- 一种将 IP 数据报封装到串行链路(同步串行/异步串行)的方法;
- 链路控制协议 LCP(Link Control Protocol),用来建立、配置和测试链路,其最重的功能之一是身份验证(PAP,CHAP);
- 配置确认帧:所有选项都能接受;
- 配置否认帧:所有选项都理解但不接受;
- 配置拒绝帧:选项有无法识别或不能接受内容,需要协商。
- 网络控制协议 NCP(Network Control Protocol),支持不同的网络层协议(IP 、OSI 的网络层、 AppleTalk 等)。
3.4 PPP 帧格式
🍀 语法、语义
🍀 PPP 同步传输和异步传输
- 同步传输:面向比特的传输,同步传输的单位是帧。同步传输收发双时钟统一,字符间传输同步无间隔。
- 异步传输:面向字节的传输,异步传输的单位是字符。异步传输效率低,高速链路开销大。
同步问题:
- 异步传输通过字符起止的开始和停止码进行同步,线路空闲时携带着代表着比特 1 的信号,传输开始位使信号变为 0,数据传输结束,停止位使信号重新变为 1;
- 同步传输在数据中提取同步信息 (恢定界比特组合)。
🍀 PPP 协议经典应用
3.5 PPP 透明传输
🍀 PPP 异步传输时透明传输(字符填充)
控制字符填充举例:
- 字符 0x01,经字符填充后为 0x21;
- 字符 0x03,经字符填充后为 0x23;
接收端一个字符一个字符地接收,最终根据恢定界符还原成帧。
🍀 PPP 同步传输时透明传输(0 比特填充)
- 在发送端,只要发现有 5 个连续 1,则立即填入一个 0;
- 接收端对帧中的比特流进行扫描。每当发现 5 个连续 1 时,就把这 5 个连续 1 后的一个 0 删除。
3.6 可靠传输问题
PPP 协议不使用序号和确认机制:
- 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理;
- 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的;
- 帧检验序列 FCS 字段可保证无差错接收。
3.7 PPP 协议的工作状态(同步)
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接;
- PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧);
- 这些分组及其响应选择一些 PPP 参数,并进行网络层配置, NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含物理层和网络层的内容。
4.使用广播信道的数据链路层
4.1 局域网的特点
🍀 局域网的数据链路层
局域网具有如下主要优点:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源;
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变;
- 提高了系统的可靠性、可用性和残存性。
局域网最主要的特点是:
- 网络为一个单位所拥有;
- 地理范围和站点数目均有限。
🍀 局域网拓扑结构
4.2 媒体共享技术
静态划分信道:
- 频分复用;
- 时分复用;
- 波分复用;
- 码分复用。
动态媒体接入控制(多点接入):
- 随机接入;
- 受控接入,如多点线路探询(polling),或轮询。
使用一对多的广播通信方式的问题:若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。
4.3 以太网的两个标准
DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约。
IEEE 802.3 是第一个 IEEE 的以太网标准:
- DIX Ethernet V2 标准与 IEEE 的 8023 标准只有很小的差别,因此可以将 802.3 局域网简称为"以太网";
- 严格说来,"以太网"应当是指符合 DIX Ethernet V2 标准的局域网。
IEEE 802 又称为 LMSC(LAN /MAN Standards Committee,局域网/城域网标准委员会),致力于研究局域网和城域网的物理层和 MAC 层
中定义的服务和协议,对应 OSI 网络参考模型的最低两层(即物理层和数据链路层)。
数据链路层的两个子层(局域网对 LLC 子层是透明的)。
为了使数据链路层能更好地适应多种局域网标准,IEEE 802 委员会就将局域网的数据链路层拆成两个子层:
- 逻辑链路控制 LLC(Logical Link Control)子层;
- 媒体接入控制 MAC(Medium Access Control)子层;
与接入到传输媒体有关的内容都放在 MAC 子层,而 LLC 子层则与传输媒体无关。不管采用何种协议的局域网,对 LLC 子层来说都是透明的。
由于 TCP/IP 体系经常使用的局域网是 DIX Ethernet V2,而不是 802.3 标准中的几种局域网,因此现在 802 委员会制定的逻辑链路控制子层LLC(即 802.2 标准)的作用已经不大了。
很多厂商生产的适配器上就仅装有 MAC 协议而没有 LLC 协议。
计算机通过适配器和局域网进行通信:
网络接口板又称为通信适配器(adapter)或网络接口卡 NIC(Network Interface Card) ,或"网卡"。
适配器的重要功能:
- 进行串行/并行转换;
- 对数据进行缓存;
- 在计算机的操作系统中,安装设备驱动程序;
- 实现以太网协议。
4.4 以太网
🍀 以太网采取了两种重要的措施
- 不必先建立连接就可以直接发送数据:
- 对发送的数据帧不进行编号,也不要求对方发回确认;
- 这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。
- 以太网发送的数据都使用曼彻斯特编码,其缺点:它所占的频带宽度比原始的基带信号增加了一倍。
🍀 以太网提供的服务
以太网提供的服务是不可靠的交付,即尽最大努力的交付:
- 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定;
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
4.5 CSMA/CD 协议
🍀 计算机连接到一根总线的连接方式
最初的以太网是将许多计算机都连接到一根总线上。易于实现广播通信。当初认为这样的连接方法既简单口可靠,因为总线上没有有源器件。
🍀 以太网采用广播方式发送
总线上的每一个工作的计算机都能检测到 B 发送的数据信号:
- 由于只有计算机 D 的地址与数据帧首部写入的地址一致,因此只有 D 才接收这个数据帧;
- 其他所有的计算机(A,C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来;
- 在具有广播特性的总线上实现了一对一的通信。
为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中:仅当数据帧中的目的地址与适配器的硬件地址一致时,才能接收这
个数据帧。
🍀 总线的缺陷
若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。
🍀 CSMA/CD 协议含义
CSMA/CD 含义:载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)。
- 载波监听(CS):是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据以免发生碰撞;
- 多点接入(MA):表示许多计算机以多点接入的方式连接在一根总线上;
- 碰撞检测(CD):边发送边监听,判断发送的数据是否与其他站发送的数据产生了冲突。
总线上并没有什么"载波":"载波监听"是用电子技术检测总线上有没有其他计算机发送的数据信号。
🍀 碰撞检测
"碰撞检测"就是计算机边发送数据边检测信道上的信号电压大小:
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加);
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞;
- 所谓"碰撞"就是发生了冲突。因此"碰撞检测"也称为"冲突检测"。
在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。
🍀 为什么要进行碰撞检测
电磁波在总线上的传播速率是有限的(200 m/ps),当某个站监听到总线是空闲时,也可能总线并非真正是空闲的:
- A 向 B 发出的信息,要经过一定的时间后才能传送到 B;
- B 若在 A 发送的信息到达 B 之前发送自己的(因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。碰撞的结果是两个帧都变得无用;
- 所以需要在发送期间进行碰撞检测,以检测冲突。
🍀 CSMA/CD 重要特性
使用CSMA/CD协议的以太网不能进行全双工通信,而只能进行双向替通信(半双工通信):
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性;
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
🍀 CSMA/CD 协议的要点
- **准备发送。**但在发送之前,必须先检测信道;
- 检测信道。 若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在 96 比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧;
- **监测碰撞。**网络适配器要边发送边监听。这里只有两种可能性:
- 发送成功:在争用期内一直未检测到碰撞,发送成功。发送完毕后,其他什么也不做。然后回到 1;
- 发送失败:在争用期内检测到碰撞。立即停止发送数据,并发送人为干扰信号,执行指数退避算法,等待 r 倍 512 比特时间后,返回到步骤 2。
重传达 16 次仍不能成功,则停止重传而向上报错。
📍 先听后说,边说边听,冲突停止,延迟重发。