数据链路层
Posted 云--澈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据链路层相关的知识,希望对你有一定的参考价值。
PS:我们已经说过了物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异。这样能使物理层上面的数据链路层感觉不到这些差异。物理层传输的是比特,那么数据链路层传输的又是什么呢?又该如何传输呢?
数据链路层也是属于计算机网络的底层,也是基于信道传输的。数据链路层的使用的信道主要有点对点信道和广播信道。
点对点信道
这种信道使用的是一对一的点对点的通信方式。我们先来看一下什么是链路、数据链路,二者的区别?
链路和数据链路
所谓链路(link)其实就是指从一个结点到相邻结点的一段物理线路(有线或无线),中间没有任何其他的交换结点。可知,一条链路只是一条通路的一个组成部分。
而数据链路(data link)则是另一个概念,我们应该知道在一条线路上传输数据,仅有物理线路还不够,还需要一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件加软件加到链路上,就构成了数据链路。
PS:现在最常用的是使用网络适配器即网卡(硬件+软件)来实现这些协议,所以一般的网络适配器都包括了数据链路层和物理层这两层的功能。
帧及传输的三个问题
在数据链路层的协议数据单元PDU是帧,现在再来说一下数据链路层的任务(作用):数据链路层把网络层交下来的数据(网络层的PDU是IP数据报或叫分组,包)构成帧发送到链路上,以及把接受到的帧中的数据取出来并上交给网络层。
我们已经说过了在数据链路层中应该有一些协议来控制帧的传输,数据链路层的协议有许多种,但都需要解决三个基本的 问题:封装成帧、透明传输、差错检测。下面分别讨论这三个问题。
1、封装成帧:封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。为什么要封装成帧?这一点我们从分组交换的概念中应该能够知道一些,因为在互联网上传送的数据都以分组(IP数据报)为传送单位,而网络层的下一层就是数据链路层,将分组加上首部和尾部就变成了帧。首部和尾部的一个重要作用就是帧定界(确定帧的界限),当然也包括一些重要的控制信息。
显然,为了提高帧的传输效率,应当使帧的数据部分(IP数据报)尽可能地大于首部和尾部的长度。当是每一种链路层的协议都规定了帧的数据部分的最大长度--MTU,下面的图给出了帧的首部和尾部的位置,以及帧的数据部分和MTU的关系。
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。 控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。假定发送端在发送时出现故障,某个帧没有发送完,接收端可以通过是否有EOT来确定这个帧是否完整。
2、透明传输:所谓的透明传输是指在数据链路层传送的数据,都能够按照原样没有差错的通过这个数据链路层。也就是相当于数据链路层对于这些数据是透明的。上面,已经说过可以通过控制字符来确定一个帧的开始与结尾,但是如果一个字节的二进制编码恰好和控制字符SOH或EOT一样,那么就会出现帧定界的错误。
所以怎么解决这个问题呢?解决方法:字节填充 (byte stuffing) 或字符填充 (character stuffing)。 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
3、差错检测:这里所说的“差错”是“比特差错”,1 可能会变成 0 而 0 也可能变成 1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。 误码率与信噪比有很大的关系。 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。
Tips:仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。“无比特差错”与“无传输差错”是不同的概念。在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输(还需加入确认和重传的机制以防止帧丢失、帧重复和帧失序)。
点对点协议PPP
前面已经说过了在点对点信道上协议应该要解决的三个基本的问题,下面就来说一下在数据链路层用得最广泛的协议--点对点协议PPP。
PPP协议的用处:用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。
PPP协议的特点:简单、封装成帧、透明性、多种网络层协议(能够在同一条物理链路上同时支持多种网络层协议。)、多种类型链路(能够在多种类型的链路上运行。)、差错检测(能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。)、检测连接状态(能够及时自动检测出链路是否处于正常工作状态。)、最大传送单元(必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。 )、网络层地址协商(必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。 )、数据压缩协商(必须提供一种方法来协商使用数据压缩算法。)。
Tips:PPP协议不需要有的功能:纠错 、 流量控制 、 序号 、 多点线路 、 半双工或单工链路
PPP协议的组成:(1) 一个将 IP 数据报封装到串行链路的方法(PPP帧格式)。 (2) 链路控制协议 LCP (Link Control Protocol)。 (3) 网络控制协议 NCP (Network Control Protocol)。
PPP协议的帧格式:
PPP协议面向字节的,所有PPP帧的长度都是整数字节。
如图所示,PPP帧的首部和尾部分别为4个字段和2个字段。标志字段F=0X7E(帧的定界符),地址字段A=0xFF,控制字段通常=0x003,协议字段为2个字节:若为 0x0021,则信息字段就是 IP 数据报。 若为 0x8021,则信息字段是网络控制数据。 若为 0xC021,则信息字段是 PPP 链路控制数据。 若为 0xC023,则信息字段是鉴别数据。尾部的第一个字段(2个字节)是使用CRC的帧检验序列。
问题:那么具体在PPP协议中,透明传输中信息字段和标志字段的比特组合一样,又该如何处理呢?
这要分情况讨论,当PPP使用异步传输时,就要使用一种特殊的字节填充法(规定转义符定义为0x7E):将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。 若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
当PPP使用同步传输时(用在SONET/SDH链路),就要采用零比特填充法来实现透明传输:在发送端,只要发现有 5 个连续 1,则立即填入一个 0。 接收端对帧中的比特流进行扫描。每当发现 5 个连续1时,就把这 5 个连续 1 后的一个 0 删除。
PPP协议的工作状态
OK,说完了PPP帧的格式,我们再返回到PPP协议的用处:用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。
来看看到底是怎么在用户计算机和ISP之间建立通信连接的:当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。 PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。
Tip:由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。
使用广播信道的数据链路层
前面已经讨论过点对点信道了,那么接下来就该讨论广播信道了。
广播信道可以进行一对多的通信,而局域网使用的就是广播信道,局域网技术在计算机网络中占有非常重要的地位,所以我们先来谈一谈局域网的数据链路层。
局域网的数据链路层
局域网的定义在这里就不在赘述了,我们来看看局域网的特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网的优点:具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。 提高了系统的可靠性、可用性和残存性。
局域网的分类:按照网络拓扑分为星形网、环形网和总线网。
注意:局域网的工作层次跨越了数据链路层和物理层,但是技术多包含在数据链路层,所以这里讨论的是数据链路层中的局域网技术。
为了使用户能够共享资源,就要考虑怎么划分信道:静态划分信道 :频分复用 时分复用 波分复用 码分复用 动态媒体接入控制(多点接入) :随机接入 受控接入 ,如多点线路探询 (polling),或轮询。重点讨论随机接入:所有的用户可以随机的发送信息,但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞,为此必须有解决碰撞的网络协议。
以太网的两个标准
传统意义上的以太网,就是采用总线型或者星型结构的局域网。DIX Ethernet V2(以太网) 是世界上第一个局域网产品(以太网)的规约。
为了使数据链路层能更好地适应多种局域网标准,IEEE 802 委员会就将局域网的数据链路层拆成两个子层: 逻辑链路控制 LLC (Logical Link Control)子层; 媒体接入控制 MAC (Medium Access Control)子层。
现在经常使用的局域网是DIX Ethernet V2而不是IEEE 802.3标准中的局域网。因此LLC作用就消失了,很多厂商生产的适配器就只装有MAC协议了。
适配器的作用
为了进行后面的内容,我们先来谈论下适配器(adapter)。
网络接口板又称为通信适配器 (adapter) 或网络接口卡 NIC (Network Interface Card),或“网卡”。
适配器的重要功能: 进行串行/并行转换、对数据进行缓存、数据的封装与解封、链路管理、在计算机的操作系统安装设备驱动程序、 实现以太网协议。
当适配器收到正确的帧时,它就使用中断来通知计算机,并交付给协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组成帧后发送到局域网中。
CSMA/CD协议
前面说过为了使用户共享资源,我们对共享信道采用的是随机接入,但有可能发生碰撞,因此需要一个网络协议来解决碰撞问题,这个协议就是CSMA/CD载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Detection)。“多点接入”表示许多计算机以多点接入的方式连接在一根总线上。 “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。 “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
因此CSMA/CD要做的概括起来就是“先听后发,边听边发,冲突停止,延迟重发”。
Tips:在使用CSMA/CD协议时,一个站不可能同时进行发送和接受(但必须边发送边监听信道),所以使用CSMA/CD的以太网进行的是双向交替通信(半双工通信)
使用集线器的星性拓扑结构
采用双绞线的以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)。
10BASE-T 双绞线以太网的出现,是局域网发展史上的一个非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础。
从此以太网的拓扑就 从总线形变成了星形。
集线器的特点:(1) 集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。 (2) 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。 (3) 集线器很像一个多接口的转发器,工作在物理层。 (4) 集线器采用了专门的芯片,进行自适应串音回波抵消,减少了近端串音。
Tips:采用共享通道的集线器已被采用独享通道的交换机所取代。
以太网的信道利用率(略)
以太网的MAC层
上面说以太网的标准中,网络适配器中装有MAC协议,我们就来谈谈MAC。
在MAC协议中,有个地址叫MAC地址,因为它是固化在局域网中计算机适配器的ROM中的,所以又叫硬件地址或物理地址。
IEEE 802 标准规定 MAC 地址字段可采用 6 字节 ( 48位) 或 2 字节 ( 16 位) 这两种中的一种。 IEEE 的注册管理机构 RA 负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符(地址块)。 地址字段 6 个字节中的后三个字节 (即低位 24 位) 由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。
一个地址块可以生成 224 个不同的地址。这种 48 位地址称为 MAC-48,它的通用名称是 EUI-48。
适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。 如果是发往本站的帧则收下,然后再进行其他的处理。 否则就将此帧丢弃,不再进行其他的处理。 “发往本站的帧”包括以下三种帧: 单播 (unicast) 帧(一对一) 广播 (broadcast) 帧(一对全体) 多播 (multicast) 帧(一对多)
Tips:以混杂方式 (promiscuous mode) (有利有弊)工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。
说完了MAC地址,再来说说MAC帧的格式:DIX Ethernet V2 标准(最常用) IEEE 的 802.3 标准。
其中目的地址字段6字节,源地址字段6字节,类型字段2字节用来标志上一层使用的是什么协议(以便把MAC帧的数据交个上一层的这个协议),数据字段46-1500字节,FCS字段4个字节。
Tips:当数据字段的长度小于 46 字节时, 应在数据字段的后面加入整数字节的填充字段, 以保证以太网的 MAC 帧长不小于 64 字节。为了达到比特同步, 在传输媒体上实际传送的 要比 MAC 帧还多 8 个字节
扩展以太网(在数据链路层)
为了提高以太网的覆盖范围,我们需要扩展以太网,而最常用的方法就是在数据链路层扩展。早期使用网桥,现在使用以太网交换机。1990 年问世的交换式集线器 (switching hub) 可明显地提高以太网的性能。 交换式集线器常称为以太网交换机 (switch) 或第二层交换机 (L2 switch),强调这种交换机工作在数据链路层。
以太网交换机的特点:本质上就是一个多接口的网桥。每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都使用全双工方式。以太网交换机具有并行性(能够同时连通多对接口,使多对主机能同时通信),所以相互通信的主机都是独占传输媒体,无碰撞地传输数据。以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。 以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。 以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
以太网交换机的优点:用户独享带宽,增加了总容量;从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动;有多种速率的接口,方便各种不同情况的用户。
以太网交换机的交换方式:大多对收到的帧采取存储转发的方式,少数采用直通的方式。
以太网交换机的自学习:查找交换表中与收到帧的源地址有无相匹配的项目。 如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间)。 如有,则把原有的项目进行更新(进入的接口或有效时间)。
以太网的转发帧:查找交换表中与收到帧的目的地址有无相匹配的项目。 如没有,则向所有其他接口(进入的接口除外)转发。 如有,则按交换表中给出的接口进行转发。 若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧(因为这时不需要经过交换机进行转发)。
Tips:早期,以太网采用无源的总线结构。 现在,采用以太网交换机的星形结构成为以太网的首选拓扑。 总线以太网使用 CSMA/CD 协议,以半双工方式工作。 以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作。但仍然采用以太网的帧结构。
虚拟局域网(略)
高速以太网
随着电子技术的发展,以太网的速率也不断提升。从传统的以太网一直发展到现在常用的速率为1Gbit/s的吉比特以太网,甚至更快的以太网。
100BASE-T以太网:速率达到或超过100Mbit/s的以太网称为高速以太网。100BASE-T 在双绞线上传送 100 Mbit/s 基带信号的星形拓扑以太网,仍使用 IEEE 802.3 的CSMA/CD 协议。 100BASE-T 以太网又称为快速以太网 (Fast Ethernet)。可在全双工方式下工作而不发生冲突(在全双工方式下工作不使用CSMA/CD)。100Mbit/s以太网的三种不同的物理层标准:100BASE-TX 使用 2 对 UTP 5 类线 或 屏蔽双绞线 STP。 网段最大程度:100米。 100BASE-T4 使用 4 对 UTP 3 类线 或 5 类线。 网段最大程度:100米。 100BASE-FX 使用 2 对光纤。 网段最大程度:2000米。
吉比特以太网:允许在1Gbit/s下以全双工和半双工两种方式工作。在半双工方式下使用CSMA/CD协议,全双工方式不使用CSMA/CD协议。
10吉比特以太网和更快的以太网:与10Mbit/s、100Mbit/s和1Gbit/s以太网的帧格式完全相同;保留了802.3标准规定的以太网的最小和最大帧长,便于升级;不再使用铜线而只使用光纤作为传输媒体;只存在全双工方式,不使用CSMA/CD协议。
Tips:以太网的工作范围已经从局域网(校园网、企业网)扩大到城域网和广域网,从而实现了端到端的以太网传输。这种工作方式互操作性很好,技术成熟、互操作性很好、在广域网中使用以太网价格便宜、采用统一的以太网帧格式。便于操作和管理。
使用以太网进行宽带接入
以太网宽带接入具有以下特点: 可以提供双向的宽带通信。 可以根据用户对带宽的需求灵活地进行带宽升级。 可以实现端到端的以太网传输,中间不需要再进行帧格式的转换。这就提高了数据的传输效率且降低了传输的成本。 但是不支持用户身份鉴别。
所以如果网络运营商要利用以太网接入到互联网,就必须解决这个问题,于是就出现了‘PPPoE(把PPP协议中的帧在封装到以太网中来传输)’,现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了。 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的,但是这已不能称为以太网上网而是利用电话线宽带接入到互联网。
参考文献
计算机网络 / 谢希仁编著.——7版
以上是关于数据链路层的主要内容,如果未能解决你的问题,请参考以下文章