目录
本章最重要的内容
3.1 使用点对点信道的数据链路层
3.1.1 数据链路和帧
3.1.2 三个基本问题
3.2 点对点协议PPP
3.2.1 PPP协议的特点
3.2.2 PPP协议的帧格式
3.2.3 PPP协议的工作状态
3.3 使用广播信道的数据链路层
3.3.1 局域网的数据链路层
3.3.2 CSMA/CD协议
3.3.3 使用集线器的星形拓扑
3.3.4 以太网的信道利用率
3.3.5 以太网的MAC层
3.4 扩展的以太网
3.4.1 在物理层扩展以太网
3.4.2 在数据链路层扩展以太网
3.4.3 虚拟局域网
3.5 高速以太网
3.5.1 100BASE-T 以太网
3.5.2 吉比特以太网
3.5.3 10吉比特以太网(10GE)和更快的以太网
3.5.4 使用以太网进行宽带接入
本章的重要概念
数据链路层使用的信道主要有以下两种类型:
- 点对点信道。这种信道使用一对一的点对点通信方式。
- 广播信道。这种信道使用一对多的广播通信方式,过程比较复杂。
- 数据链路层的点对点信道和广播信道的特点,以及这两种信道所使用的协议(PPP协议以及CSMA/CD协议)的特点。
- 数据链路层的三个基本问题:封装成帧、透明传输和差错检测。
- 以太网MAC层的硬件地址。
- 适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场所。
首先明确链路和数据链路的区别。所谓链路就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。把实现必要的通信协议的硬件和软件加到链路上,就构成了数据链路。
下面介绍点对点信道的数据链路层的协议数据单元——帧。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。
点对点信道的数据链路层在进行通信时的主要步骤如下:
- 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
- 结点A把封装好的帧发送给结点B的数据链路层。
- 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧。
数据链路层协议有许多种,但有三个基本问题是共同的,就是封装成帧、透明传输和差错检测。
(1)封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。一个帧的帧长等于帧的数据部分长度加上帧首部和帧尾部的长度。首部和尾部除了进行帧定界外,还包括许多必要的控制信息。每一种链路层协议都规定了所能传送的帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)。
当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。控制字符SOH(Start Of Header)放在最前面表示帧的首部开始,EOT(End Of Transmission)表示帧的结束。
(2)透明传输
“透明”表示:某一个实际存在的事物看起来却像不存在一样。“在数据链路层透明传输数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错的通过这个数据链路层。
为了解决透明传输问题,就必须设法对数据中可能出现的控制字符“SOH”和“EOT”在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”,而在接收端的数据链路层删除这个插入的转义字符。
(3)差错检测
比特在传输过程中可能会产生差错:1可能变成0,0可能变成1。这就叫做比特差错。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate)。误码率与信噪比有很大的关系,如果设法提高信噪比,就可以使误码率减小。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前广泛使用了循环冗余检验CRC的检错技术。下面我们通过一个例子来说明循环冗余检验的原理:
在发送端先把数据划分为组,假定每组k个比特,现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。这n位冗余码可用以下方法得出:
用二进制的模2运算进行乘M的运算,这相当于在M后面添加n个0,得到的(k+n)位的数除以收发双方事先商定的长度为(n+1)位的除数P,得出商是Q而余数是R(n位,比P少一位)。在下图的例子中,M=101001,假定P=1101(n=3)。经模2除法运算后的结果是:商Q=110101,而余数R=001。这个余数R就作为冗余码拼接在数据M的后面发送出去。这种为了进行检错而添加的冗余码常称为帧检验序列FCS。因此加上FCS后发送的帧是101001001,共有(k+n)位。
在接收端把接收到的数据以帧为单位进行CRC检验:把收到的每一个帧都除以同样的除数P(模2运算),然后检查得到的余数R。如果传输无差错,那么经过CRC检验后得出的余数R肯定是0。
在数据链路层若仅仅使用循环冗余检验CRC差错检测技术,则只能做到对帧的无差错接受,接收端丢弃的帧虽然曾收到了,但最终还是因为有差错被丢弃,即没有被接受。可以近似地表述为“凡是接收端数据链路层接受的帧均无差错”。这里的无差错指的是无比特差错,而不是无传输差错。
为了让数据链路层向上提供可靠传输,在CRC检错的基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认,发送端在一定的期限内若没有收到对方的确认,就认为出现了差错因而进行重传,直到收到对方的确认为止。但是由于现在的通信线路质量大大提高,因此互联网采用了区别对待的方法:对于通信质量良好的有线传输链路,不使用确认和重传机制,如果出现差错那么改正差错的任务由上层协议完成;对于通信质量较差的无线传输链路,使用确认和重传机制。
PPP协议是用户计算机和ISP进行通信时所使用的数据链路层协议。
PPP协议是IETF在1992年制定的,经过1993和1994年的修订,现在的PPP协议在1994年就已成为互联网的正式标准。
1.PPP协议应满足的需求
简单,封装成帧,透明性,多种网络层协议,多种类型链路,差错检测,检测连接状态,最大传送单元,网络层地址协商,数据压缩协商。
2.PPP协议的组成
- 一个将IP数据报封装到串行链路的方法。
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
- 一套网络控制协议NCP。
1.各字段的意义
如下图所示,PPP帧的首部和尾部分别为四个字段和两个字段。首部的第一个字段和尾部的第二个字段都是标志字段F,规定为0x7E(16进制的7E的二进制表示是01111110)。标志字段表示一个帧的开始或结束。
PPP首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报;若为0xC021,则信息字段是PPP链路控制协议LCP的数据;而0x8021表示这是网络层的控制数据。
信息字段的长度是可变的,不超过1500字节。尾部中的第一个字段是使用CRC的帧检验序列FCS。
2.字节填充
当PPP使用异步传输时,它把转义符定义为0x7D,并使用字节填充,RFC1662规定了如下所述的填充方法:
- 把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。
- 若信息字段中出现一个0x7D的字节,则把0x7D转变成为2字节序列(0x7D,0x5D)。
- 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变成2字节序列(0x7D,0x23)。
3.零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符的传送),在这种情况下采用零比特填充方法来实现透明传输。
具体做法是:在发送端先扫描整个信息字段,只要发现有5个连续1,立即填入一个0。在接收端首先找到标志字段F以确定帧的边界,接着再扫描比特流,并发现5个连续1就删除后面的0还原成原来的信息比特流。
PPP链路一开始是怎样被初始化的?当用户拨号进入ISP后,就建立了一条从用户个人电脑到ISP的物理连接。这时用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配一个临时的IP地址。这样用户个人电脑就成为互联网上的一个有IP地址的主机了。
当用户通信完毕,NCP释放网络层连接,收回原来分配出去的IP地址。接着LCP释放数据链路层连接。最后释放物理层连接。
局域网主要的特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
共享信道要着重考虑的一个问题就是如何使众多用户能够合理而方便地共享通信媒体资源。这在技术上有两种方法:
- 静态划分信道。如在2.4节中已经介绍过的频分复用、时分复用、波分复用和码分复用等。
- 动态媒体接入控制。又称为多点接入,特点是信道并非在用户通信时固定分配给用户。又分为随机接入和受控接入两大类。
属于随机接入的以太网将被重点讨论。受控接入则由于目前在局域网中使用较少,不再讨论。
传统以太网(最早流行的10Mbit/s速率的以太网):
1.以太网的两个标准
局域网的数据链路层被拆成两个子层,即逻辑链路控制LLC子层和媒体接入控制MAC子层。
2.适配器的作用
计算机与外界局域网的连接是通过通信适配器进行的。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。适配器在接受和发送各种帧时,不使用计算机的CPU。这里注意,计算机的硬件地址在适配器的ROM中,而计算机的软件地址——IP地址,则在计算机的存储器中。
最早的以太网是将许多计算机都连接到一根总线上。总线的特点是:当一台计算机发送数据时,总线上的所有计算机都能检测到这个数据。这种就是广播通信方式。
为了在总线上实现一对一的通信,可以使每一台计算机的适配器都拥有自己的地址。在发送数据帧时,在帧的首部写明接收站的地址,适配器在接受到不是发送给自己的数据帧时就丢弃。
为了通信的简便,以太网采取了以下两种措施:
- 第一,采用较为灵活的无连接的工作方式。
- 第二,以太网发送的数据都使用曼彻斯特编码的信号。
下面介绍CSMA/CD协议的要点:
- “多点接入”就是说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测”。
- “载波监听”就是用电子技术检测总线上有没有其他计算机也在发送。不管在发送前,还是在发送中,每个站都必须不停的检测信道。在发送前是为了获得发送权;在发送中是为了及时发现有无碰撞,也称为碰撞检测。
- “碰撞检测”也就是“边发送边监听”,即适配器边发送数据边监测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。
显然,在使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道),因此使用CSMA/CD协议的以太网只能进行双向交替通信(半双工通信)。
每一个站在自己发送数据后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,取决于另一个发送数据的站到本站的距离。
一个最先发送数据帧的站,在发送后最多经过一个往返时间就可知道所发送的数据帧是否遭到了碰撞,因此以太网的端到端往返时间称为争用期。争用期又称为碰撞窗口,即经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和更灵活的双绞线。这种以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器。
集线器的一些特点如下:
- 使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议。网络中的各站必须竞争对传输媒体的控制,并且在同一时刻最多只允许一个站发送数据。
- 一个集线器有许多接口,很像一个多接口的转发器。
- 集线器工作在物理层,它的每个接口仅仅简单的转发比特,不进行碰撞检测。若两个接口同时有信号输入发生碰撞,那么所以的接口都将收不到正确的帧。
- 集线器采用了专门的芯片,进行自适应串音回波抵消。
一个站在发送帧时出现了碰撞,经过一个争用期后可能又出现了碰撞。这样经过若干个争用期后,一个站发送成功了。假定发送帧需要的时间是T0,它等于帧长除以发送速率。
可以看出,要提高以太网的信道利用率,就必须减小单程端到端时延与帧的发送时间T0之比。也就是说当数据率一定时,以太网的连线的长度受到限制(否则的数值会太大),同时以太网的帧长不能太短(否则T0的值会太小)。
1.MAC层的硬件地址
在局域网中,硬件地址又称为物理地址或MAC地址(因为这种地址用在MAC帧中)。
在讨论地址问题时常常引用如下定义:
“名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处”。
严格地讲,名字应当与系统的所在地无关。 一台计算机的局域网的“地址”指的是这台计算机中固化在适配器的ROM中的地址。严格地讲,局域网的“地址”应当是每一个站的“名字”或标识符。
适配器有过滤功能:适配器从网络上每收到一个MAC帧就先从硬件检查MAC帧中的目的地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他的处理,这样就不浪费主机的处理机和内存资源。这里“发往本站的帧”包括以下三种帧:
- 单播帧,即收到的帧的MAC地址与本站的硬件地址相同。
- 广播帧,即发送给本局域网上所有站点的帧。
- 多播帧,即发送给本局域网上一部分站点的帧。
所有的适配器都至少应当能够识别前两种帧,即单播和广播地址。
2.MAC帧的格式
常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准(即以太网V2标准),另一种是IEEE的802.3标准。这里只介绍使用的最多的以太网V2的MAC帧格式。如下图,假定网络层使用的是IP协议:
以太网V2的MAC帧比较简单,由五个字段组成。前两个字段分别为6个字节长的目的地址和源地址字段。第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的数据上交给上一层的这个协议。第四个字段是数据字段,其长度在46到1500字节之间。最后一个字段是4字节的帧检验序列FCS(使用CRC检验)。
IEEE 802.3标准规定凡出现下列情况之一的即为无效的MAC帧:
- 帧的长度不是整数个字节;
- 用收到的帧检验序列FCS查出有差错;
- 收到的帧的MAC客户数据字段不在46~1500字节之间。考虑到MAC帧首部和尾部的长度共有18字节,可以得出有效的MAC帧长度为64~1518字节之间。
对于检查出的无效MAC帧就简单的丢弃,以太网不负责重传丢弃的帧。
IEEE 802.3标准规定的MAC帧格式与上面的以太网V2 MAC帧格式的区别就是两个地方:
第一,IEEE 802.3规定的MAC帧的第三个字段是“长度/类型”。当这个字段值大于0x0600时就表示“类型”;当这个字段值小于0x0600时表示“长度”,即MAC帧的数据部分长度。
第二,当“长度/类型”字段值小于0x0600时,数据字段必须装入上面的逻辑链路控制LLC子层的LLC帧。
在许多情况下,我们希望对以太网的覆盖范围进行扩展。
以太网的主机之间的距离不能太远,否则主机发送的信号经过铜线的传输就会衰减到使CSMA/CD协议无法正常工作。在过去广泛使用粗缆或细缆以太网时,常使用工作在物理层的转发器来扩展以太网的地理覆盖范围。但随着双绞线以太网成为以太网的主流类型,扩展以太网的覆盖范围已很少使用转发器了。现在,扩展主机和集线器之间的距离的一种简单方法就是使用光纤和一对光纤调制解调器。
光纤调制解调器的作用就是进行电信号和光信号的转换。由于光纤带来的时延很小,并且带宽很宽,因此可以很容易地使主机和几公里外的集线器相连接。如果使用多个集线器,就可以连接成覆盖更大范围的多级星形结构的以太网。
优点:拓展了能够通信飞范围,扩大了以太网覆盖的地理范围。
缺点:通信更容易发生碰撞,使用不同的以太网技术就不可能用集线器将它们互连起来。
扩展以太网更常用的方法是在数据链路层进行。最初人们使用的是网桥,网桥对收到的帧根据MAC帧的目的地址进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是根据此帧的目的MAC地址,查找网桥中的地址表,然后确定将该帧转发到哪一个接口,或者是把它丢弃(即过滤)。
1990年问世的交换式集线器,很快淘汰了网桥。交换式集线器常称为以太网交换机或第二层交换机,强调这种交换机工作在数据链路层。
1.以太网交换机的特点
以太网交换机实质上就是一个多接口的网桥,以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。以太网交换机还具有并行性,即能同时连通多对接口,使多对主机能同时通信(而网桥只能一次分析和转发一个帧)。相互通信的主机都是独占传输媒体,无碰撞地传输数据。以太网交换机的接口还有存储器,能在输出端口繁忙时把到来的帧进行缓存。以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动的逐渐建立起来的。以太网交换机由于使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥要快很多。
虽然许多以太网交换机对收到的帧采用存储转发方式进行转发,但也有一些交换机采用直通的交换方式。直通交换不必把整个数据帧先缓存后再进行处理,而是在接受数据帧的同时就立刻按数据帧的目的MAC地址决定该帧的转发接口,因而提高了帧的转发速度。缺点是不检查差错就直接转发,因此有可能将无效帧转发给其他站。
2.以太网交换机的自学习功能
举个例子说明如何自学习:
3. 从总线以太网到星形以太网
随着以太网上站点数目的增多,使得总线结构以太网的可靠性下降。与此同时,大规模集成电路以及专用芯片的发展,使得星形结构的以太网交换机可以做得既便宜又可靠。总线以太网使用CSMA/CD协议,以半双工方式工作。但以太网交换机不使用共享总线,没有碰撞问题,因此不使用CSMA/CD协议,而是以全双工方式工作。但是由于帧结构仍然采用以太网的帧结构,因此还叫做以太网。
利用以太网交换机可以很方便的实现虚拟局域网VLAN。
定义:虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个VLAN 。
虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。
随着电子技术的发展,以太网的速率不断提高,从传统的10Mbit/s以太网一直发展到现在常用的速率为1Gbit/s的吉比特以太网甚至更快。下面简单介绍几种高速以太网技术。