预备概念:链路与数据链路;规程与协议;帧与数据报。
数据链路层在OSI参考模型和五层参考模型中位于自下而上的第二层。
数据链路层的主要功能:
点对点信道的数据链路层通信步骤:
链路层协议有多种,但是有三个问题是共同的,就是如何做到封装成帧、透明传输和差错控制。
封装成帧是指在数据报上添加帧头和帧尾,构成一个帧的过程。帧从帧头开始发送,接收端能从接收的比特流中识别帧头和帧尾,从而识别帧的开始和结束。帧头和帧尾的一个重要作用就是帧定界,常用的方法是首尾定界符法;此外,帧头和帧尾还包含许多控制信息。显然,想要提高传输效率,数据部分应当尽可能大于帧头和帧尾的长度。但是出于差错控制等方面考虑,所有数据链路层协议都规定了数据部分的长度上限,称为最大传送单元MTU。
在以字节/字符为单位的数据成帧中,常常采用首尾定界符法,即在帧头和帧尾使用专门指明的控制字符。倘若数据发送过程中发生了故障,导致发送中断,但又很快恢复。此时由于使用了帧定界符,当接收端读取到结束符而没有读取到开始符时,就知道这个帧是不完整的出错帧,必须丢弃,由此避免信道资源的浪费。
如果数据部分的8比特组合与帧的开始符和结束符编码恰好相同时,就会出现帧定界错误。显然这与透明传输的目标相悖。
为了达成透明传输的目标,常用的方法有:字符填充法和零比特填充法。
字符填充法:封装成帧时,在数据部分中出现的开始符SOH和结束符EOT前插入一个转义字符ESC;若出现转义字符,也前插一个转义字符。在接收端读取时,每当读取一个转义字符,就将其删除;若同时读取两个转义字符时,删除其中的一个。由此可以避免数据部分对帧定界产生影响,达到透明传输的目标。
通常字符填充法只是简单的前插一个转义字符,但也有特殊的做法。下面PPP协议的字符填充就是一种特殊做法。
零比特填充法:字符填充法中添加的转义字符有8个字节,且仅适用于字符数据流的传输。对于非字符数据,可以采用零比特法。
零比特填充法采用01111110作为开始和结束的标志F字段。每当在数据部分读取到5个1时,立刻在下一位添加一个0,因此数据部分中不可能连续出现6个1,避免帧定界错误。接收端每读取5个1时,删除其后的一个0,还原成原比特流。
零比特填充法在PPP协议的SONET/SDH链路中使用。
数据链路层的数据流受外界干扰,可能在传输过程中产生比特差错。
一段时间内,传输错误的比特占总比特的比率称为误码率BER。误码率与信噪比有很大的关系。
通信信道的噪声有两类:热噪声引起的差错称为随机错,冲击噪声引起的差错称为突发错。
差错控制的基本思想就是在信息位上附加一些冗余位,以某种规则与信息位相关联。接收端按规则检验冗余位和信息位。
信息发送时,信息位和冗余位共同组成码字发送。并在接收端检验。冗余码分为纠错码和检错码。
通信信道使用最广泛的检错码是循环冗余码CRC。能以 1-0.5k-1 的概率检查出k+1位错。
CRC码的生成多项式中,广泛使用的有CRC-16、CRC-32、CRC-CCITT。
CRC码只能做到对帧的无差错接收,而非可靠传输。
除了比特差错外,差错还可能出现帧丢失、帧重复和帧失序。
CRC码的具体操作见计算机组成原理部分。
点对点协议PPP是目前使用最广泛的数据链路层协议。PPP协议就是用户计算机与互联网ISP通信时使用的数据链路层协议。
PPP协议在1994年成为互联网正式标准[RFC 1661]。
PPP协议必须考虑以下需求:
PPP协议有三个组成部分:
PPP的帧格式除信息部分外,帧头可以分为4个字段,帧尾可以分为2个字段。如图:
帧头(首部)第一个字段和帧尾(尾部)第二个字段都是标志字段F,规定为0x7E,为PPP帧的定界符。
帧头的地址字段A规定为0xFF,控制字段C规定为0x03,目前没有携带有效信息。
枕头的第4个字段是2字节的协议字段。为0x0021时,信息部分为IP数据报;为0xC021时,信息部分是LCP协议的数据;为0x8021时,信息部分是网络层的控制数据。
信息部分的长度是有限的,最大不超过1500字节。
PPP帧采用一种特殊的字符填充法。它规定转义字符为0x7D。填充方法如下:
PPP协议在SONET/SDH链路中采用同步传输的零比特填充法。
上面讨论的数据链路层内容都是建立在点对点信道的基础上,也即采用一对一通信方式的信道。数据链路层除了点对点信道外,还有一种类型,称为广播信道,即采用一对多广播通信方式的信道。局域网是一种典型的应用广播信道的网络。如今以太网是局域网中应用最普遍的技术。
局域网最主要的特点是:网络为一个单位所有,且地理范围和站点数目均有限。
局域网的主要优点:
决定局域网性能的三要素:网络拓扑、传输介质、介质接入控制技术。
由于以太网在局域网市场中占据了绝对优势,以太网几乎成为了局域网的同义词。
通过中心设备将多个设备连接起来的局域网是星形网。
由于集线器的出现和双绞线的大量应用,星形以太网和多级星形以太网获得非常广泛的应用。
星形以太网在物理结构上是星形网,在逻辑拓扑结构上是以太网。
用一个连续的环将多个设备连接起来,构成闭合的物理环形结构的局域网是环形网。
环形网中数据沿着一个方向逐站传输,多个结点共享一条环通路。
环形网的建立、维护、结点插入和删除比较复杂。
环形网主要应用于令牌网中,称为令牌环网。
各设备直接连接在一条作为公共传输介质的总线上的局域网是总线网。
总线两端的匹配电阻吸收电磁波能量,避免产生电磁波反射。
所有结点都通过总线,以广播方式发送和接收数据。因此总线网不可避免的会发生冲突。
总线网主要有两种形态:
1、传统以太网:使用CSMA/CD协议,现演变为星形以太网。
2、令牌总线网:在物理结构上是总线网,在逻辑拓扑结构上是令牌环网,现已退出市场。
广播信道可能有多个用户站点同时请求访问信道,为使多用户合理而方便地共享通信介质资源,需要介质接入控制。
介质接入控制的两种方式:静态划分信道、动态媒体接入控制。
静态划分信道使用信道复用技术对信道划分,其资源浪费、利用率低、不适合于局域网和部分广播信道。
动态媒体接入控制分为随机接入和受控接入控制。
随机接入的特点是用户可随机发送信息,在共享信道上可能发生碰撞(冲突),必须要有解决碰撞的网络协议。
典型的随机接入访问协议:ALOHA协议、CSMA协议、CSMA/CD协议(现行以太网协议)
受控接入控制的特点是用户必须服从一定的控制来使用信道。典型代表为令牌环网和多点路线探询。
以太网的两个标准:DIX Ethernet V2标准和IEEE 802.3标准。数据率均为10Mbps。802委员会还有802.4等其它局域网标准。
为了使数据链路层适用多个局域网标准,802委员会局域网的数据链路层拆为逻辑链路控制LLC和媒体接入控制MAC两个子层。
与接入媒体相关的内容都存放在MAC子层中,因此LLC子层与传输媒体无关,换言之局域网对LLC子层是透明的。
由于常用TCP/IP协议中使用的局域网是DIX Ethernet V2标准,因此802委员会制定的LLC子层的作用已经不大了。很多厂商生产的网课只有MAC协议而没有LLC协议。以后一般不考虑LLC子层。
以太网严格指符合DIX Ethernet V2标准的局域网;但由于802.3标准与它只有很小的差别,也将802.3标准的局域网称为以太网。
传统以太网表示最早的,速率为10Mbps的以太网。
计算机与外界局域网的连接是通过通信适配器(又称网络接口卡、网卡)进行的。网络适配器中有处理器和储存器(RAM和ROM)。
以前的通信适配器常是一块独立的电路板,因此称网络接口卡。现在的网络适配器已经嵌入主板中,因此不再网络接口卡的名字。
适配器的重要功能:
适配器在接收和发送帧时,不使用计算机的CPU;当接收到有差错的帧时,直接丢弃而不用通知计算机。当收到正确的帧时,才中断通知计算机并交付网络层。发送数据时网络层将IP数据报下交给适配器,组装成帧后发送。
计算机的硬件地址就在适配器的ROM中;计算机的软件地址-IP地址则在计算机的储存系统中。
以太网将许多计算机连接到一根总线上(或是集线器等设备)。总线上的任一计算机都能检测任一主机发送的数据信号。
每一台计算机的适配器地址不同,因此在帧的帧头写明接收站的地址。每个计算机只接收首地址一致的数据帧;否则丢弃不接受。由此在广播信道上实现一对一的通信。
为了通信的简便,以太网采取了两个重要措施:
以太网采用CSMA/CD协议协调总线上各计算机的工作。CSMA/CD协议主要有三个概念:多点接入、载波监听、碰撞检测。
CSMA/CD的特性:
设信号从站A到站B的时延为t,则在发送数据后至多2t的时间内可以知道是否发生碰撞。往返时延2t也被称为争用期。
经过争用期后未发生碰撞,可以确定这次发送不会发生碰撞。
CSMA/CD的发送流程可以概括为:先听后发、边听边发、冲突停止、延迟重发。
当发生碰撞后,主机要推迟(退避)一个随机时间才能再次发送数据。以太网采用截断二进制指数退避算法确定具体退避时间。
以太网的争用期与最短有效帧长:
IEEE 802.3标准制定的传统以太网使用的传输媒体有:铜缆(10Base5或10Base2)、双绞线(10Base-T)、光缆(10Base-F)
由于集线器的出现和双绞线价格便宜、使用方便,粗缆和细缆现在已经退出了市场。1990年IEEE制定了星形以太网802.3i标准。它规定使用3类及以上UTP作为传输介质,采用星形拓扑结构,中央结点通常为集线器和交换机,用RJ-45模块作为端接器。
10Base-T双绞线以太网的出现,是局域网发展史上的非常重要的里程碑。从此以太网在局域网中占据了统治地位。
集线器的特点如下:
使用集线器扩展局域网:使用多个集线器可以连接成覆盖更大范围的多级星形以太网。
一个以太网是一个独立的碰撞域。集线器扩展以太网后,碰撞域也会扩大,但吞吐量并没有提高。
IEEE 802委员会将数据链路层分为LLC子层和MAC子层。
与传输媒体接入相关的内容都放在MAC子层。因此局域网中的硬件地址又称为MAC地址。
IEEE 802标准为局域网规定了48bit/6字节的全球地址,是局域网上每台计算机中固化在适配器的ROM中的地址。
IEEE注册管理机构RA负责向厂商分配地址的前3个字节为机构唯一标识OUI。后3个字节由厂商自行指派,为扩展标识符。
这种地址称为扩展的唯一标识符-48,又称MAC-48。 MAC-48 = 厂商ID + NIC ID
IEEE规定地址的第一字节的最低位为I/G位,为0时表示单个站地址;为1时表示一个组地址,用来进行组播(多播)。
第一个字节的最低第二位为G/L位。为0时表示全球管理,是厂商购买的OUI,地址表示单个站地址;为1时表示本地管理,用户可任意分配网络上的地址。对于每一个单个站,可供分配的本地管理地址有246个。
适配器具有过滤功能,只接收发往本站的帧。其中发往本站的帧有:
常用MAC帧的格式有两种:DIX Ethernet V2标准和IEEE 802.3标准,使用的最多的是前一种V2帧。
以太网的V2 MAC帧由五个字段组成:
MAC帧采用曼彻斯特编码,因此不需要帧结束界定符,只需要判断信道的电压何时停止变化。
MAC帧最小间隙为9.6us,相当于96bit发送时间。在检测到总线空闲后,还需要9.6us才能再次发送数据。目的是让站清理缓存。
无效MAC帧有:帧的长度不是整数倍字节;FCS检测有差错;长度不在46~1500字节。