数据链路层
一、数据链路层概述
数据链路层使用的信道主要有以下两种类型:
点对点信道:这种信道使用一对一的点对点通信方式
广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
数据链路层模型:
链路:是一条无源的点到点的物理线路段,中间没有任何其他的交换结点,又称为“物理链路”。一条链路只是一条通路的一个组成部分。
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上就构成了数据链路。又称为“逻辑链路”。现在最常用
的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理这两层的功能。
数据链路层传送的是帧:
常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。数据链路层不必考虑物理层如何实现比特传输细节。甚至
还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方。
二、三个基本问题
数据链路层协议有许多种,但有三个基本问题是共同的,这三个基本问题是:封装成帧,透明传输,差错控制。
1.封装成帧:在一段数据的前后分别添加首部和尾部,然后构成了一个帧,确定帧的界线。首部和尾部的一个重要作用就是进行帧定界。
当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部
开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。
2.透明传输:如果数据中的某个字节的二进制代码恰好和SOH或EOT一样,数据链路层就会错误地"找到帧的边界"
解决办法:字节填充或字符填充。发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是1B)。接收
端的数据链路层在将数据送往网络层之前删除插入的转义字符。如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符ESC。当
接收端收到两个连续的转义字符时,就删除其中前面的一个。
3.差错检测:在传输过程中可能会产生比特差错,就是1可能变成0,0可能变成1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate),
误码率与信噪比有很大关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。在数据链路层传送的帧中,广泛使用了循环
冗余检验CRC的检错技术。
在发送端,先把数据划分为组。假定每组k个比特。假设待传送的一组数据M=101001(现在k=6)。我们在M的后面再添加供差错检测用的n位冗余码一起发送。
计算冗余码:用二进制的模2运算进行2n乘M的运算,这相当于在M后面添加n个0。得到的(k+n)位的数除以事先选定好的长度为(n+1)位的除数P,得出商是Q
而余数是R,余数R比除数少1位,即R是n位。
举例:
帧检验序列FCS:在数据后面添加的冗余码称为帧检验序列FCS。循环冗余校验CRC和帧检验序列FCS并不等同,CRC是一种常用的检错方法,而FCS是
添加在数据后面的冗余码。FCS可以用CRC这种方法得出,但CRC并非是用来获得FCS的唯一方法。
在接收端,若接受的数据(如例中的101001001)除以除数P(如例中的1101)得出的余数R=0,则判定这个帧没有差错,就接受,否则,这个帧有差错,就丢弃。
CRC检测方法缺点:并不能确定究竟是哪一个或哪几个比特出现了差错。只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概
率就很小很小。仅用循环冗余检验CRC差错检测技术只能做到无差错接受(凡是接受的帧都是没有差错的,有差错的帧都丢弃了)。
注意:“无比特差错”与“无传输差错”是不同的概念。在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。接下来介绍的数据链
路层的协议都不是可靠传输协议。
三、点对点PPP协议
对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)。用户使用拨号电话线接入互联网时,用户计算机和ISP进行通信时所
使用的数据链路层协议就是PPP协议。PPP协议是不可靠传输协议。
PPP协议应满足的要求:
1.简单:首要的要求。
2.封装成帧:必须规定特殊的字符作为帧界定符。
3.透明性:必须保证数据传输的透明性。
4.差错检测:能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
5.支持多种网络层协议:对上层,能够在同一条物理链路上同时支持多种网络协议。
6.支持多种类型链路:对下层,能够在多种类型的链路上运行。
7.检测连接状态:能够及时自动检测出链路是否处于正常的工作状态。
8.设置最大传送单元:必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值,促进各种实现之间的互操作性。
9.网络层地址协商:必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的两个网络层的地址。
10.数据压缩协商:必须提供一种方法来协商使用数据压缩算法。
PPP协议的组成:
1.一个将IP数据报封装到串行链路的方法,能够支持同步和异步链路。
2.链路控制协议LCP(Link Control Protocol),对下层,用来建立、配置和测试链路连接。
3.网络控制协议NCP(Network Control Protocol),对上层,满足对网络层协议的支持。
PPP协议的帧格式:
1.PPP帧的首部和尾部分别为4个字段和2个字段,PPP是面向字节的,所有的PPP帧长度都是整数字节。
2.标志字段F = 0x7E(二进制表示是01111110)。
3.地址字段A只置为0xFF。
4.控制字段C通常置为0x03。
5.PPP帧有2个字节的协议字段。其值若为0x0021,则信息字段就是IP数据报。
若为0x8021,则信息字段是网络控制数据。
若为0xC021,则信息字段是PPP链路控制数据。
若为0xC023,则信息字段是鉴别数据。
6.信息部分长度可变,受到最大传送单元的限制,不超过1500字节。
7.使用CRC循环冗余检测法的FCS帧校验序列2个字节。
PPP解决透明传输问题:
当PPP用在同步传输链路时,协议规定硬件来完成0比特填充。
同步传输时,采用0比特填充法,使一帧中两个F字段之间不会出现6个连续的1。
在发送端,只要发现有5个连续的1,则立即填入一个0。
在接收端,对帧中的比特流进行扫描,每当发现5个连续的1时,就把5个连续1后的一个0删除,以还原成原来的比特流。
当PPP用在异步传输链路时,就使用一种特殊的字符填充法。
将信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。若信息字段中出现一个0x7D的字节,则将其转变为两个字节序列(0x7D,0x5D)。
若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),同时将该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变(RFC1662中有规定)。
举例:
一个PPP数据帧是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E,请问真正的数据是什么?
答案:7E FE 27 7D 7D 65 7E
PPP协议的工作状态:当用户拨号接入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)。这
些分组及其响应选择一些PPP参数,并进行网络层配置,NCP给新接入的PC机分配一个临时的IP地址,使PC机成为因特网上的一个主机。通信完毕之后,
NCP释放网络层连接,收回原来分配出去的IP地址。接着LCP释放数据链路层连接。最后释放的是物理层的连接。可见,PPP协议已不是纯粹的数据链路
层协议,它还包含了物理层和网络层的内容。
四、局域网的数据链路层
局域网的最主要的特点是:网络为一个单位所拥有;地理范围和站点数目均有限。
局域网具有如下主要优点:具有广播功能,从一个站点可方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。便于系统的扩展和逐渐地演变,
各设备的位置可灵活调整和改变。提高了系统的可靠性、可用性和残存性。
局域网的常见拓扑结构:
局域网的媒体共享技术:静态划分信道:频分复用、时分复用、波分复用、码分复用
动态媒体划分接入控制(多点接入):随机接入、受控接入(如多点线路探询或轮询)
以太网的两个标准:DIX Ethernet V2是世界上第一个局域网产品(以太网)的规约。
IEEE802.3是第一个IEEE的以太网标准。常将802.3局域网简称为“以太网”。严格来说,“以太网”应当是指符合DIX Ethernet V2标准的局域网。
数据链路层的两个子层:
为了使数据链路层能更好地适应多种局域网标准,IEEE802委员会就将局域网的数据链路层拆成两个子层:逻辑链路控制LLC子层(Logical Link Control)
媒体接入控制MAC子层(Medium Access Control)
与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关。不管采用何种协议的局域网,对LLC子层来说都是透明的。一般不考虑LLC子层。所以
很多厂商生产的适配器上就仅装有MAC协议,而没有LLC协议。
适配器的作用:网络接口板又称为通信适配器或网络接口卡NIC或网卡。进行串行到并行的转换。对数据进行缓存。在计算机的操作系统安装设备驱动程序。实现以太网协议。
五、CSMA/CD协议(先发再听,边发边听,碰撞停止,随机延发)
CSMA/CD协议(Carrier Sense Multiple Access with Collision Detection),是为了解决局域网的共享媒体技术随机接入突发性产生的冲突问题而提出的不可靠传输协议。
"多点接入"(Multiple Access)表示许多计算机以多点接入的方式连接在一根总线上。
"载波监听"(Carrier Sense)是指每一个站在发送数据之前先检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
"碰撞检测"(Collision Detection)是指计算机边发送数据边检测信道上的信号电压大小。当几个站同时在总线上发送数据时,总线上的信号电压摆动值将增大。当
一个站检测到信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。在发生了碰撞后
总线上传输的信号产生严重的失真,无法从从恢复出有用的信息来。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就立即
停止发送,免得继续浪费网络资源,然后的等待一段随机时间后再次发送。
问题1:每一站在发送数据之前已经监听到信道为"空闲",为什么还会出现碰撞?
答:
CSMA/CD重要特性:使用CSMA/CD协议的以太网不能进行全双工通信,而只能进行双向交替通信(半双工通信)。每个站在发送数据之后的一小段时间内,
存在着遭遇碰撞的可能性。这种发送的不确定性,使整个以太网的平均通信远远小于以太网的最高数据率。
问题2:某站点发出数据后最多经过多长时间能够检测到碰撞冲突?
答:t = 2τ - δ的最大值即δ -> 0时,所以距离碰撞点最远的站点最多经过2τ的时间检测到碰撞冲突。2τ有个专用术语叫做争用期。
争用期:最先发送数据帧的站,在发送数据帧后至多经过时间2τ(往返时延,两倍端到端的传播时延),就可知道发送端额数据帧是否遭受了碰撞。这个争用期
在实际的10Mbit/s以太网中取51.2us为争用期长度。
最短有效帧长:对于10Mbit/s以太网在争用期内可发送512bit,即64字节。这意味着,以太网在发送数据时,若前64个字节没有发送冲突,则后续数据就不会
发生冲突。所以以太网规定了最短有效帧长度为64字节,凡是长度小于64字节的帧都是由于冲突而中止的无效帧。
问题3:产生碰撞之后如何进行避让?
答:检测到碰撞-->数据失真-->停止发送
退避一段时间-->再次发送
问题4:退避时间,这个时间如何确定?
答:CSMA/CD协议用到了一个截断二进制指数类型退避算法:发生碰撞的站在停止发送数据后,要退避一个随机时间才能再发送数据。
具体流程如下:1.确定基本退避时间,一般是取争用期2τ
2.定义重传次数k,k<=10,即k = Min[重传次数,10]
3.从整数集合[0,1,2,3,...,(2k - 1)]中随机地取出一个数,记为 r。重传所需所需的时延就是 r 倍的基本退避时间。
4.当重传16次仍不能成功时即丢弃该帧,并向高层报告。
六、使用集线器的星型拓扑
传统以太网最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆,最后发展为使用更便宜和灵活的双绞线。采用双绞线的以太网采用星型拓扑,在星形的
中心则增加了一种可靠性非常高的设备,叫做集线器(hub)。
使用无屏蔽双绞线,采用星型拓扑。每个站需要用两对双绞线,分别用于发送和接收。双绞线的两端使用RJ-45插头。集线器使用了大规模集成电路芯片,因此集线
器的可靠性提高。10BASE-T的通信距离稍短,每个站到集线器的距离不超过100m。
集线器的特点:1.集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像传统以太网那样运行。
2.使用集线器的以太网在逻辑上仍然是一个总线网,各工作站使用的还是CSMA/CD协议,并共享逻辑上的总线。
3.集线器很像一个多接口的转发器,工作在物理层。
4.集线器采用了专门的芯片,进行自适应串音回波抵消,减少了近端串音。
以太网的信道利用率:多个站在以太网同时工作就可能会发生碰撞。当发生碰撞时,信道资源实际上是浪费了。因此当扣除碰撞所造成的信道损失后,以太网总的信
道利用率并不能达到100%。假设 τ 是以太网端到端的传播时延,则争用期长度为2τ,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。设
帧长为L(bit),数据发送速率为C(bit/s),则帧的发送时间为T0= L/C (s)。一个站在发送帧时发生了碰撞。经过一个争用期2τ后,可能又出现了一个碰
撞。这样经过若干个争用期后,一个站发送成功了。假定发送帧需要的时间是T0。
由图可知,成功发送一个帧需要占用信道的时间是T0 + τ,比这个帧的发送时间要多一个端到端的传播时延τ 。这是因为当一个站发送完最后一个比
特时,这个比特还要在以太网上传播。在最极端的情况下,发送站在传输媒体的一端,而比特在媒体上传输到另一端所需的时间是τ。
参数α与信道利用率:要提高以太网的信道利用率,就必须减少 τ 与T0 之比。在以太网中定了参数α,它是以太网端到端传播时延 τ 与帧的发送时间T0 之比。即α=τ/T0 。
当α趋近于0时,表示发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。
当α越大时,表明争用期所占比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
所以为提高信道利用率,以太网的参数α的应当尽可能小一些。对以太网参数α的要求是:当数据率一定时,以太网的连线的长度受到限制,否则
τ 的数值会太大。以太网的帧长不能,否则T0 的值会太小,使α值太大。
七、以太网的MAC层
在局域网中,硬件地址又称为物理地址,或MAC地址。802标准所说的"地址"严格地讲应当是每一个站的"名字"或标识符。请注意,如果连接在局域网上的主机或
路由器安装多个适配器,那么这样的的主机或路由器就有多个地址,更准确的说,这种48位的地址应当是某个接口的标识符。
IEEE802标准规定,MAC地址字段可采用6字节(48位)或2字节(16位)这两种中的一种。IEEE的注册管理机构RA负责向厂家分配地址字段6个字节中的前三个字节,
称为组织唯一标识符。地址字段的6个字节中的后三个字节由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址。一个地址块可以生产224个
不同的地址,这种48位的地址称为MAC-48,它的通用名称是EUI-48。生产适配器时,6字节的MAC地址已被固化在适配器的ROM,因此MAC地址叫做硬件地址。
单站地址、组地址、广播地址:
IEEE规定地址字段的第一字节的最低位为I/G(Individual/Group)位。
1.当I/G位=0时,地址字段表示一个单站地址。
2.当I/G位=1时,表示组地址,用来进行多播。此时IEEE只分配地址字段前三个字段中的23位。
3.当I/G位分别为0和1时,一个地址块可分别生成223个单站地址和223个组地址。
4.所有48位都为1时,为广播地址。只能作为目标的地址使用。
IEEE规定地址字段第一字节的最低第2位为G/L位,表示Global/Local。
1.当G/L位=0时,是全球管理(保证在全球没有相同的地址),厂商想IEEE购买的OUI都属于全球管理。
2.当G/L位=1时,这时用户可以任意分配网络上的地址。
适配器检查MAC地址:
适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址。如果是发往本站的帧则收下,然后再进行其他的处理。否则就将此帧丢弃,不再进行其他处理。
“发往本站的帧”包括以下三种帧:单播帧:(一对一)
广播帧:(一对全体)
多播帧:(一对多)
所有适配器都至少能够识别前两种帧,即能够识别单播地址和广播地址。有的适配器可用编程方法识别多播地址。
只有目的地址才能使用广播地址和多播地址。以混杂方式工作的以太网适配器只要"听到”有帧在以太网上传输就都接收下来。
MAC帧的格式:最常用的MAC帧是以太网DIX Ethernet V2标准格式。
1.6字节目的地址字段:目的MAC地址
2.6字节源地址字段:源MAC地址
3.2字节上层协议类型字段:用来标志上一层使用的是什么协议。
4.46~1500字节的MAC客户数据字段:最小长度64字节-18字节的首部和尾部 = 46字节数据字段的最小长度。当数据字段的长度小于46字节时,应当在数据字段的
后面加入整数字节的填充字段,以保证以太网的MAC帧长不小于64字节。
5.4字节CRC循环冗余检测法的FCS帧校验序列:当传输媒体的误码率为1*10-8时,MAC子层可使未检测到的差错小于1*10-14。
无效MAC帧(满足以下其一便是无效帧):对于检查出无效MAC帧就直接丢弃。以太网不负责重传丢弃的帧
1.数据字段长度和长度字段的值不一致
2.帧的长度不是整数个字节
3.用收到的帧检验序列FCS查出有错
4.数据字段的长度不在46~1500字节之间
5.MAC帧长度不在64~1518字节之间
八、以太网的扩展(指的是从数据链路层和物理层上进行扩展)
1.以太网扩展的目的:
2.在物理层扩展
(1)使用光纤扩展:主机使用光纤(通常是一对光纤)和一对光纤调制解调器连接到集线器。很容易使主机和几公里之外的集线器相连接。
(2)使用集线器扩展:使用多个集线器可连成更大的、多级星型结构的以太网。
优点:使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。扩大了以太网覆盖的地理范围。
缺点:碰撞域增大了,当总的吞吐量没有提高。如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
3.在数据链路层扩展(更常用)
早期使用网桥,现在使用交换机。
网桥工作的数据链路层,根据MAC帧地址的目的地址对收到的帧进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,
而是先检查此帧的目的MAC帧,然后再确定将该帧转发到哪一个接口,或把它丢弃。
1990年问世的交互式集线器可明显地提高以太网的性能。交换式集线器常称为以太网交换机,或第二层交换机。
以太网交换机的交换方式:
1.储存转发方式:把整个数据帧先缓存后再进行处理。
2.直通方式:接收数据帧的同时就立即按数据帧的目的MAC地址决定该帧的转发接口,因而提高了帧的转发速度。缺点就是不检查差错就直接将帧转发出去。
以太网交换机自学习功能:
九、虚拟局域网
利用以太网交换机可以很方便的实现虚拟局域网VLAN。
虚拟局域网的MAC帧格式: