预备概念:链路与数据链路;规程与协议;帧与数据报。
数据链路层
1、基本概念
数据链路层在OSI参考模型和五层参考模型中位于自下而上的第二层。
数据链路层的主要功能:
- 链路管理:数据链路的建立、维持和释放;
- 物理寻址:保证每一帧都能正确达到目的站;
- 帧定界:将数据报封装成帧,确定帧的开始和结束;
- 透明传输:不论数据是怎么样的比特组合,都能传输;即传输数据对数据链路是透明的;
- 差错检测:对物理信道传输的比特流检测差错;
- 流量控制:控制发送速率与接收速率匹配。
点对点信道的数据链路层通信步骤:
- 结点A将网络层交下来的数据报封装成帧;
- 结点A将帧发送给结点B;
- 结点B首先进行差错检测,如果没有差错,将帧拆分提取出数据报上交给网络层;否则丢弃这个帧。
2、三个基本问题
链路层协议有多种,但是有三个问题是共同的,就是如何做到封装成帧、透明传输和差错控制。
● 封装成帧
封装成帧是指在数据报上添加帧头和帧尾,构成一个帧的过程。帧从帧头开始发送,接收端能从接收的比特流中识别帧头和帧尾,从而识别帧的开始和结束。帧头和帧尾的一个重要作用就是帧定界,常用的方法是首尾定界符法;此外,帧头和帧尾还包含许多控制信息。显然,想要提高传输效率,数据部分应当尽可能大于帧头和帧尾的长度。但是出于差错控制等方面考虑,所有数据链路层协议都规定了数据部分的长度上限,称为最大传送单元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码的具体操作见计算机组成原理部分。
3、PPP协议
点对点协议PPP是目前使用最广泛的数据链路层协议。PPP协议就是用户计算机与互联网ISP通信时使用的数据链路层协议。
PPP协议在1994年成为互联网正式标准[RFC 1661]。
● 需求与组成
PPP协议必须考虑以下需求:
- 简单:不需要纠错、不需要序号、不需要流量控制,提高互操作性。
- 封装成帧:规定特殊的帧界定符。
- 透明性:保证数据传输的透明性。
- 多种网络层协议:在同一条物理链路上支持多种网络层协议。
- 多种类型链路:能够在多种链路上运行。
- 差错检测:检测差错并立即丢弃有差错的帧。
- 链接状态检测:及时自动检测链路是否处于正常工作状态。
- 最大传送单元:设置最大传送单元MTU。
- 网络层地址协商:提供机制使两个实体协商知道彼此的网络层地址。
- 数据压缩协商:提供方法协商数据压缩算法。
PPP协议有三个组成部分:
- 一个将IP数据报封装到串行链路的方法。既支持异步链路,也支持面向比特的同步链路。
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP。
- 一套网络控制协议NCP。
● 帧格式
PPP的帧格式除信息部分外,帧头可以分为4个字段,帧尾可以分为2个字段。如图:
帧头(首部)第一个字段和帧尾(尾部)第二个字段都是标志字段F,规定为0x7E,为PPP帧的定界符。
帧头的地址字段A规定为0xFF,控制字段C规定为0x03,目前没有携带有效信息。
枕头的第4个字段是2字节的协议字段。为0x0021时,信息部分为IP数据报;为0xC021时,信息部分是LCP协议的数据;为0x8021时,信息部分是网络层的控制数据。
信息部分的长度是有限的,最大不超过1500字节。
PPP帧采用一种特殊的字符填充法。它规定转义字符为0x7D。填充方法如下:
- 把信息部分每一个0x7E字节变为两字节序列(0x7D,0x5E)。
- 每一个0x7D字节变为两字节序列(0x7D,0x5D)。
- 若出现ASCII码的控制字符(小于0x20),前插一个转义字符0x7D。
PPP协议在SONET/SDH链路中采用同步传输的零比特填充法。
● 工作状态
PPP协议的工作状态如图:
可以总结为如下步骤:
- 起始和终止状态为链路静止状态。
- 用户电脑通过调制解调器呼叫路由器,路由器检测载波信号,建立物理链路,进入链路建立状态。
- LCP开始协商配置选项,发送LCP配置请求帧,链路的另一端发送下述响应中的一种:
● 配置确认帧:所有配置都接受
● 配置否认帧:所有配置都识别但不接受
● 配置拒绝帧:选项有的不识别或不接受,需要继续协商
若LCP配置协商成功,则进入鉴别状态;否则回到链路静止状态。
配置选项包括鉴别协议的规约。 - 鉴别状态下只允许发送LCP分组,鉴别协议分组和链路质量的检测分组。此处可以使用口令鉴别协议和口令握手鉴别协议。若鉴别成功,进入网络层协议状态;否则进入链路终止状态,待物理链路释放后转入链路静止状态。
- 在网络层协议状态,链路两端的NCP根据网络层的不同协议网络层特定的网络控制分组,也即NCP配置协商。如果运行的是IP协议,则对每一端配置IP协议模块时就要使用IP控制协议IPCP,这一步骤中NCP将为主机分配一个IP地址,使主机成为互联网上的一台主机。
- 网络层配置完毕后,就进入链路打开状态。链路中两个PPP端点可以向彼此发送分组,还可以发送回送请求LCP分组和回送回答LCP分组。
- 数据传输结束后,链路的一端可以发送终止请求LCP分组,在收到终止确认LCP分组后,进入链路终止状态,待物理链路释放后转入链路静止状态。
4、广播信道的数据链路层
上面讨论的数据链路层内容都是建立在点对点信道的基础上,也即采用一对一通信方式的信道。数据链路层除了点对点信道外,还有一种类型,称为广播信道,即采用一对多广播通信方式的信道。局域网是一种典型的应用广播信道的网络。如今以太网是局域网中应用最普遍的技术。
● 局域网(以太网)
局域网最主要的特点是:网络为一个单位所有,且地理范围和站点数目均有限。
局域网的主要优点:
- 具有广播功能。从一个站点可很方便地访问全网,共享局域网连接内的硬件软件资源。
- 便于系统的扩展和逐渐演变。各设备的位置可随意调整改变。
- 提高系统的可靠性、可用性和生存性。
决定局域网性能的三要素:网络拓扑、传输介质、介质接入控制技术。
由于以太网在局域网市场中占据了绝对优势,以太网几乎成为了局域网的同义词。
● 局域网的网络拓扑
a) 星形网
通过中心设备将多个设备连接起来的局域网是星形网。
由于集线器的出现和双绞线的大量应用,星形以太网和多级星形以太网获得非常广泛的应用。
星形以太网在物理结构上是星形网,在逻辑拓扑结构上是以太网。
b) 环形网
用一个连续的环将多个设备连接起来,构成闭合的物理环形结构的局域网是环形网。
环形网中数据沿着一个方向逐站传输,多个结点共享一条环通路。
环形网的建立、维护、结点插入和删除比较复杂。
环形网主要应用于令牌网中,称为令牌环网。
c) 总线网
各设备直接连接在一条作为公共传输介质的总线上的局域网是总线网。
总线两端的匹配电阻吸收电磁波能量,避免产生电磁波反射。
所有结点都通过总线,以广播方式发送和接收数据。因此总线网不可避免的会发生冲突。
总线网主要有两种形态:
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协议主要有三个概念:多点接入、载波监听、碰撞检测。
- 多点接入:许多计算机以多点接入的方式连接在一根总线上,即总线网。
- 载波监听:先听后发。在每一个站发送数据前先检测总线上是否有其它主机在发送数据。
- 碰撞检测:边听边发。
● 由于信号传播存在延迟,因此先听后发并不能保证信道一定处于空闲状态。
● 当几个站同时在总线上发送数据时,总线的信号电压摆动值将增大。当信号电压超过一定门限值时,就认为发生了碰撞。
● 一旦发现发生了碰撞,主机立刻停止发送,等待一段随机时间后重新发送。
CSMA/CD的特性:
- CSMA/CD协议就是带有碰撞检测的载波监听多点接入协议。
- CSMA/CD协议下的站不能同时接收和发送,只能进行半双工通信。
- 每个站在开始发送数据后的一小段时间内,存在发生碰撞的可能性。
- 发送的不确定性使以太网平均通信量远小于最高数据率。
设信号从站A到站B的时延为t,则在发送数据后至多2t的时间内可以知道是否发生碰撞。往返时延2t也被称为争用期。
经过争用期后未发生碰撞,可以确定这次发送不会发生碰撞。
CSMA/CD的发送流程可以概括为:先听后发、边听边发、冲突停止、延迟重发。
● 截断二进制指数退避算法
当发生碰撞后,主机要推迟(退避)一个随机时间才能再次发送数据。以太网采用截断二进制指数退避算法确定具体退避时间。
- 基本退避时间取为2t(争用期)。
- 从整数集合(0,1,…,2k-1)中随机取一个数,记为r。重传所需的时间就是r * 2t(r倍基本退避时间)。
- 参数k的计算:k=min(重传次数,10)
- 当重传次数达16次仍不能成功时丢弃该帧,并向高层报告。
以太网的争用期与最短有效帧长:
- 以太网取51.2us为争用期的长度
- 10Mbps的以太网,在争用期内可以发送64字节数据
- 若前64字节没有发生冲突,就后面的数据也不会发生冲突;如果发生冲突,一定在前64字节
- 由于一检测到冲突就停止发送,发送的数据一定小于64字节
- 以太网规定最短有效帧长为64字节,凡小于64字节的帧均为因冲突停止的无效帧
- 检测到碰撞后,除了停止发送外,还要继续发送人为干扰信号,让信道内所有主机都接收到,这称为强化碰撞
● 星形以太网
IEEE 802.3标准制定的传统以太网使用的传输媒体有:铜缆(10Base5或10Base2)、双绞线(10Base-T)、光缆(10Base-F)
由于集线器的出现和双绞线价格便宜、使用方便,粗缆和细缆现在已经退出了市场。1990年IEEE制定了星形以太网802.3i标准。它规定使用3类及以上UTP作为传输介质,采用星形拓扑结构,中央结点通常为集线器和交换机,用RJ-45模块作为端接器。
10Base-T双绞线以太网的出现,是局域网发展史上的非常重要的里程碑。从此以太网在局域网中占据了统治地位。
集线器的特点如下:
- 集线器使用电子器件模拟电缆线工作,使用集线器的以太网在逻辑上仍是一个总线网,使用的时CSMA/CD协议。
- 一个集线器有许多接口,每个接口使用RJ-45插头与计算机的适配器相连,很像一个多接口的转发器。
- 集线器工作在物理层,仅仅简单地转发比特,不进行碰撞检测。
- 集线器采用了专门的芯片,进行自适应串音回拨抵消。
使用集线器扩展局域网:使用多个集线器可以连接成覆盖更大范围的多级星形以太网。
一个以太网是一个独立的碰撞域。集线器扩展以太网后,碰撞域也会扩大,但吞吐量并没有提高。
● MAC层
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地址与本机完全相同。
- 广播帧。发送给本局域网全体站点的帧。
- 多播帧。发送给本局域网一部分站点的帧。
常用MAC帧的格式有两种:DIX Ethernet V2标准和IEEE 802.3标准,使用的最多的是前一种V2帧。
以太网的V2 MAC帧由五个字段组成:
- 前两个字段分别为6字节长的目的地址和源地址字段。
- 第三个字段是2字节的类型字段,表示上一层的协议。
- 第四个字段是数据字段,其长为46~1500字节(46=64-18)。
- 最后一个字段是4字节的帧检验序列FCS。
- 在实际的传输媒介中,在帧的前面要插入8个字节,其中前7个字节是前同步码,最后一个字节是帧开始界定符。
帧开始界定符定义为10101011,前六位与前同步码的作用相同,后两位连续的1是通知主机MAC帧信息即将到达。
MAC帧采用曼彻斯特编码,因此不需要帧结束界定符,只需要判断信道的电压何时停止变化。
MAC帧最小间隙为9.6us,相当于96bit发送时间。在检测到总线空闲后,还需要9.6us才能再次发送数据。目的是让站清理缓存。
无效MAC帧有:帧的长度不是整数倍字节;FCS检测有差错;长度不在46~1500字节。