数据链路层的基本概念
- 概念:
- 数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:
- 点对点信道。这种信道使用一对一的点对点通信方式。
- 广播信道。这种信道使用一对多的广播通信方式。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
- 数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:
本章重要内容:
链路:
- 链路就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没用任何其他的交换结点。链路只是一条路径的组成部分。也可称为物理链路。
- 数据链路:
- 数据链路是实现了控制数据传输的必要通信协议的硬件与软件的集成。也可称为逻辑链路。
- 帧:
- 把网络层交下来的数据加上首部和尾部从而封装而成的帧。
- 点对点信道的数据链路层在进行通信时的主要步骤:

- 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
- 结点A把封装好的帧发送给结点B的数据链路层。
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层,否则丢弃这个帧。
三个基本问题
1. 封装成帧
- 概念:
- 封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
- 一个帧的长度等于帧的数据部分长度加上首部和尾部的长度。
- 首部和尾部的一个重要作用就是进行帧定界(确定帧的界限)。
- 首部和尾部包括许多必要的控制信息。
- 在发送帧时,从帧首部开始发送。
- 为了提高帧的传输效率,帧的数据部分应尽可能地大于首部和尾部的长度。每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)。
帧定界符:
透明:
- 表示某一个实际存在的事物看起来却好像不存在。
- “在数据链路层透明地传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层,而看不见有什么会妨碍数据传输的东西。
- 问题:
- 当传送的数据为非ASCII码的文本文件时,若数据中的某个字节的二进制代码恰好和SOH和EOT这种控制字符一样,就会导致帧的错误定界。
- 解决:
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”。而在接收端的数据链路层再把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充或字符填充。
- 如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符前面插入一个转义字符。
3. 差错检测
- 比特差错:
- 1可能变成0,0可能变成1。
- 误码率:
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。
- 信噪比越高,误码率就越低。
- 循环冗余检验CRC(Cyclic Redundancy Check):
- 原理:
- 双方事先商定好除数P。设除数P的位数为n,n=4。
- 除数P更多的会用多项式表示,如:
X3 + X2 + 1 = 1 × X3 + 1 × X2 + 0 × X1 + 1 × X0,然后取前面的系数构成除数P为“1101”。 - 在原数据后面先加上n-1位的0(这些补上的0在后面会被替换掉,这里只是暂时补上)。如:原数据为101001,则结果为101001000.
- 在接收端把接收到的数据以帧为单位进行CRC检验:把每个收到的帧都除以同样的除数P。这里的除法以模2运算为准。
- 原理:

- 得出的余数的位数一定等于之前补上0的位数。现在把这个余数**替换掉**先前暂时补上的0。即原数据=101001001。这个数通常被称为**帧检验序列FCS(Frame Check Sequence)**。- 至此,当接收端接收到101001001时,对其用除数P进行模2除法运算。只要求出的余数为0,则代表数据没有出错,若不等于0,则表示数据出错,那么数据链路层将直接丢弃掉这一数据。
点对点协议PPP
概念:
互联网用户与ISP连接以接入互联网时,PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。
1. PPP协议的特点
(1)PPP协议应满足的需求:
- 简单:
对于数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。
- 封装成帧:
-
- 透明性:
如果数据中碰巧出现和帧定界符一样的比特组合时,就要采取有效的措施来解决这个问题。
- 多种网络层协议:
PPP协议必须能够在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行。
- 多种类型链路:
除了要支持多种网络层的协议外,PPP还必须能够在多种类型的链路上运行。如:串行的或并行的,同步的或异步的,低速的或高速的,电的或光的,交换的或非交换的点对点链路。
- 差错检测:
PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
- 检测连接状态:
PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。
- 最大传送单元:
PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是,MTU是数据链路层的帧可以载荷的数据部分的最大长度,并非帧的总长度。
- 网络层地址协商:
PPP协议必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能够在所有的情况下得出协商结果。
- 数据压缩协商:
PPP协议必须提供一种方法来协商使用数据压缩算法,但PPP协议并不要求将数据压缩算法进行标准化。
在TCP/IP协议族中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错、设置序号以及流量控制。PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。此外,PPP协议只支持全双工链路。
(2)PPP协议的组成:
一个将IP数据报封装到串行链路的方法:
- PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。这个信息部分的长度收最大传送单元MTU的限制。
一个用来建立、配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol):
- 通信的双方可协商一些选项。
一套网络控制协议NCP(Network Control Protocol):
- 其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及AppleTalk等。
2. PPP协议的帧格式
(1)各字段的意义:

- 组成:
- PPP帧的首部和尾部分别为四个字段和两个字段。
- 标志字段F:
- 首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E。标志字段表示一个帧的开始或结束。即帧定界符。连续两帧之间可以只用一个标志字段。如果出现连续两个标志字段,则表示为一个空帧,应当丢弃。
- 地址字段A与控制字段C:
- 首部中的A为地址字段,规定为0xFF。C为控制字段,规定为0x03。最初曾考虑以后再对这两个字段的值进行其他定义,但至今也没有给出。可见这两个字段实际上并没有携带PPP帧的信息。
- 协议字段:
- PPP首部的第四个字段使2字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示网络层NCP的控制数据。
帧检验序列FCS:
引入:
- 当信息字段中出现和标志字段一样的比特(0x7E)组合时,须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
方法:
引入:
- PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,PPP协议采用零比特填充方法来实现透明传输。
- 方法:
- 在发送端先扫描整个信息字段,若发现由5个连续的1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现6个连续的1。
- 接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。若发现由5个连续1时,则把这5个连续1后面的一个0删除,以还原成原来的信息比特流。
3. PPP协议的工作状态
(1)大致流程
- 当用户拨号接入ISP后,就建立了一条用户个人电脑到ISP的物理连接。此时,用户个人电脑向ISP发送一系列链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。
- 接着,需要进行网络层配置。网络控制协议NCP会给新接入的用户个人电脑分配一个临时的IP地址。
- 当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址,然后LCP释放数据链路层连接,最后释放物理层连接。
PPP链路的起始和终止状态永远是“链路静止”状态。这时在用户个人电脑和ISP的路由器之间并不存在物理层的连接。
(2)详细流程

当用户个人电脑通过调制解调器呼叫路由器时,路由器检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP就进入“链路建立”状态,其目的时建立链路层的LCP连接。
- 此时LCP开始协商一些配置选项,即发送LCP的配置请求帧。这是一个PPP帧,其协议字段为LCP对应的代码,而信息字段包含特定的配置请求。链路的另一端可以发送以下几种响应的一种:
- 配置确认帧——所有选项都接受。
- 配置否认帧——所有选项都能理解但不能接受。
- 配置拒绝帧——选项有的无法识别或不能接受,需要协商。
- LCP配置选项包括
- 链路上的最大帧长;
- 所使用的鉴别协议规约;
- 是否使用PPP帧中的地址和控制字段(因为这两个字段的值时固定的,没有任何信息量,可以在PPP帧的首部中省略这两个字节);
- 协商结束后双方就建立了LCP链路,接着就进入“鉴别”状态。在这一状态,只允许传送LCP协议的分组、鉴别协议的分组以及检测链路质量的分组。若使用口令鉴别协议PAP,则需要让发起通信的一方发送身份标识符和口令。若鉴别身份失败,则转到“链路终止”状态,若鉴别成功,则进入“网络层协议”状态。
- 在“网络层协议”状态,PPP链路的两端的网络控制协议NCP会根据网络层的不同协议互相交换网络层特定的网络控制分组。(PPP协议两端的网络层可以运行不同的网络层协议)
- 若在PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块时,就要使用NCP中支持IP的协议——IP控制协议IPCP。IPCP分组也封装成PPP帧在PPP链路上传送。
- 当网络层配置完毕后,链路就进入可进行数据通信的“链路打开”状态。
数据传输结束后,可以由链路的一端发出终止请求LCP分组以请求终止链路连接。收到方收到对方发来的终止确认LCP分组后,转到“链路终止”状态。
使用广播信道的数据链路层
1. 局域网的数据链路层
局域网的主要特点:
- 网络为一个单位所拥有,且地理范围和站点数目有限。
- 主要优点:
- 具有广播功能,从一个站点可以很方便的访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和生存性。
- 布局分类:
- 星形网
- 环形网
- 总线网
共享信道的方法分类:
以太网的概念:
- 一种基带总线局域网。
- 标准:
- DIX Ethernet V2
- IEEE 802.3(对DIX标准中的帧格式做了很小的一点改动)
层级:
概念:一块网络接口板,又称网络接口卡NCI或“网卡”。
作用:
概念:
- 一种为解决多个站点在一条总线上传输数据时产生冲突问题的协调方法。它是载波监听多点接入/碰撞检测的缩写。
- 多点接入:
- 说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:
- 发送信息前先监听是否有其他站点在发送数据,如果有则暂时取消发送。
- 碰撞检测:
- “边发送边监听”,即适配器边发送数据边检测信道上的信号电压变化,以便判断自己在发送数据时其他站是否也在发送数据。
- 由于发送数据具有时延(这个时延最大为2t的争用期,是端到端(单程为t)往返的最大时间),在争用期期间,若检测到其它站点发来的信息,即检测到碰撞,则停止现有发送的数据。若通过了争用期的“考验”,则说明这次发送没有产生碰撞。
- 为避免因一个站发送了很短的帧,而在发送完毕之前都没有检测到碰撞,发送后到达对方站点之前发生了碰撞,对方站点将丢弃该帧,而己方站点并不知道产生了碰撞的情况,以太网规定了一个最短帧长64字节,即512bit。如果要发生的数据非常少,则需加入一些填充字节。凡帧长小于64字节的帧都会被丢弃。
- 截断二进制退避算法:
- 这种算法让发送碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即发送数据,而是推迟(退避)一个随机的时间,以使重传时再发生冲突的概率减小。具体算法如下:
- 确定基本退避时间,即争用期2t。对于10Mb/s的以太网,争用期定为51.2μ。在争用期内可发送512bit,即64字节。也可以说争用期是512比特时间。
- 从离散的整数集合[0, 1, ···, (2k-1)]中随机取出一个数,记为r。重传应推后的时间就是r倍的争用期。参数k可按下面的公式计算:
- 这种算法让发送碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即发送数据,而是推迟(退避)一个随机的时间,以使重传时再发生冲突的概率减小。具体算法如下:
k = Min[重传次数,10]
- 当重传次数不超过10时,k等于重传次数,若超过10,k则保持为10。- 当重传次数达16次仍不能成功时,则丢弃该帧,并向高层报告。- 例如:在第3次重传时,k=3,随机数r就从整数{0,1,2,3,4,5,6,7}中选一个数(23-1 = 7)。即重传推迟时间在0, 2t, 4t, 6t, 8t, 10t, 14t中选一个。
干扰信号:
- 以太网还采取一种称为强化碰撞的措施。当发送数据的站一旦发现碰撞,除了立即停止发送数据外,还要再继续发送32bit或48bit的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞。
帧间间隔:
- 对于10Mb/s的以太网,帧间最小间隔为9.6μs。即在一个帧发送完以后,还要等待9.6μs的比特时间才能继续发送。
总线占用时间:
- 一个站点发生数据时若检测到碰撞,则总线被占用的时间是TB+TJ+t:
- TB:发送数据开始到发现碰撞停止发送的时间
- TJ:发送人为干扰信号的持续时间
- t:干扰信号从一端到另一端的时延
- 一个站点发生数据时若检测到碰撞,则总线被占用的时间是TB+TJ+t:
使用广播信道的以太网
1. 以太网的MAC层
- 概念:
- IEEE的注册管理机构RA负责向厂家分配地址字段6个字节中的前3个字节(即高位24位),称为唯一标识符。
- 地址字段6个字节的后3个字节(即低位24位)由厂家自行分配。
- 工作机制:
- 适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址。
- 如果是发往本站的帧,则接收,否则丢弃。
- 发往本站的帧包括:
- 单播
- 广播
- 多播
- 适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址。
- IP与MAC:
- IP:
- 逻辑地址(相当于门牌号)。路由器根据这一地址的网络号进行路由选择,以便能够快速地在互联网中寻址。
- 这个地址可以改变。
- MAC:
- 物理地址(相当于身份证号)。当帧传递到终点路由器时,路由器将直接以MAC地址并用广播的形式寻找具体的主机。
- 这个地址不可改变,出厂即固定。
- 关系:
- IP地址用来在全国范围内快速寻址。MAC地址用来在局部范围具体寻找。二者配合{即通过门牌号找到某一栋楼管理者(交换机),然后楼管理者大喊谁是xxx或者记忆中已经知晓是谁,最后将物品交给对方(交换机广播或直接发送(假设已经学习过)给终端主机)}寻址。
- IP:
