Chinaunix首页 | 论坛 | 博客
  • 博客访问: 327545
  • 博文数量: 243
  • 博客积分: 86
  • 博客等级: 民兵
  • 技术积分: 1045
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-09 17:03
个人简介

稳重,成熟

文章分类

全部博文(243)

文章存档

2015年(2)

2013年(72)

2012年(169)

我的朋友

分类:

2013-03-11 21:13:27

原文地址:数据链路层 作者:超级忍者龟

数据链路层属于计算机的网络的底层。数据链路层使用的信道主要有以下2种类型:

1:点对点信道。这种信道使用一对一的点对点通信方式。
2:广播信道。这种信使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

图中a表示用户主机H1通过电话线上网,中间经过三个路由器(R1,R2,R3)连接到远程主机H2。所经过的网络可以是多种的,如电话网,局域网和广域网。当主机H1向H2发送数据时,从协议的层次上看,数据流动如图b所示。主机H1和H2都有完成的五层协议,单路由器在转发分组时候使用的协议栈只有下面的三层。数据进入路由器后要先从物理层上到网络层,在转发表中找到下一跳的地址后,再下到物理层转发出去。因此,数据从主机H1传送到主机H2需要在路径中的各结点协议栈向上和向下流动多次。

然而当我们专门研究数据链路层的问题时,在许多情况下我们可以只广信在协议栈中水平向的各数据链路层。于是,当主机H1向主机H2发送数据时,我们可以想象数据就是在数据链路层从左向右沿水平方向传送。如图:

从数据层来看,H1到H2的通信可以看成是由四段不同的链路层通信组成,即H1->R1,R1->R2,R2->R3,R3->H2。这四段不同的链路层可能采用不同的数据链路层协议。
注意,链路和数据链路不是一回事。
链路是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换节点。在进行数据通信时,两个计算机之间的同心路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
数据链路则是另一个概念。则是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法就是网络适配器(如拨号上网使用拨号适配器)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并交给网络层。在因特网中,网络层协议数据单元就是IP数据报(简称数据报,分组或包)。

点对点信道的数据链路层在进行通信时步骤:
1:结点A的数据链路层把网络层交下来的IP数据报添加头和尾封装成帧。
2:结点A把封装好的帧发送给结点B的数据链路层。
3:结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给网络层,否则丢弃该包。
数据链路层不必考虑物理层如何实现的细节。

数据链路层协议虽然有多种,但有3个基本问题则是共同的:封装成帧,透明传输和差错检测。
1:封装成帧就是在一段数据后面分别添加头和尾,就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据头和尾的标记,从收到的比特流中识别帧的开始和结束。
分组交换的一个重要概念就是所有在因特网上传送的数据都是以分组(即IP数据报)为传送单位。网络层的IP数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分的头和尾加上标记信息,构成一个完整的帧。因此,帧的长度等于数据部分长度加上帧的头尾长度,头尾的一个重要作用就是进行帧定界(确定帧的界限)。此外,头尾还包括许多需要的控制信息。在发送帧时,是从帧头部开始发送。各种数据链路层协议都要对帧头和帧尾的格式有明确的规定。为了提高帧的传输效率,应当使帧得数据部分长度尽可能地大于头尾的长度。但是,每种数据链路层协议都规定了帧的数据部分长度上限-最大传送单元MTU。

点对点协议:
PPP协议是目前使用最广泛的数据链路层协议。
我们知道,因特网用户通常都要连接到某个ISP才能接入因特网。PPP协议就是用户计算机和ISP进行通信所用的数据链路层协议。
封装成帧:PPP协议必须规定特殊字符作为帧定界符(标志一个帧的开始和结束的字符),以便使接收端从收到的比特流中能准确地找出帧的开始和结束位置。
透明性:PPP协议必须保证数据的透明性,就是说,如果数据中碰巧出现了和帧定界符一样的比特组合时,就要采取有效地措施来解决这个问题。
多种网络协议:PPP协议必须能够在同一条物理链路上同事支持多种网络层协议(如IP何IPX等)的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
多种类型链路:除了要支持多种网络层的协议外,PPP还必须能够在多种类型的链路上运行,例如串行的或并行的,同步的或异步的,低速的或高速的,电或光的,交换的(动态的)或非交换的(静态的)点对点链路。PPPoE(PPP over Ethernet)这是PPP协议能够适应多种类型链路的一个典型例子。PPPoE是为宽带上网的主机使用的链路层协议。这个协议把PPP帧再封装在以太网帧中(当然还要增加一些能够识别各个用户的功能)。宽带上网时由于数据传输速率较高,因此可以让多个连接在以太网(是当今现有局域网采用的通用通信协议,是一种通信速率为10Mbps的常用局域网LAN标准,在以太网中,所有计算机被连接在一条同轴电缆上)上的用户共享一条道ISP的宽带链路。现在,即使是只有一个用户利用ADSL进行宽带上网(并不和其他人共享到ISP的宽带链路),也是使用PPPoE协议。
差错检测:PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。若在数据链路层不进行差错检测,那么已出现差错的无用帧就还要在网络中继续向前转发,白白浪费网络资源。
检测连接状态:PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。当出现故障的链路隔了一段时间后又重新恢复正常工作时,就特别需要有这种及时检测功能。
最大传送单元:PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值。这样做是为了促进各种实现之间的互操作性。如果高层协议发送的分组过长并超过MTU的数值,PPP就要丢弃这样的帧,并返回差错。需要强调的是,MTU是数据链路层的帧可以载荷的数据部分的最大长度,不是帧的总长度。
网络层地址协议商:PPP协议必须提供一种机制使通信的两个网络层(例如两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址。协商的算法应尽可能简单,并且能够在所有的情况下得出协商结果。这对拨号连接特别重要,因此仅仅在链路层建立了连接而不知道对方网络层地址时,则还不能够保证网络层能够传送分组。
数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法。单PPP协议并不要求将数据压缩算法进行标准化。

PPP协议不需要的功能:
纠错:在TCP/IP协议中,可靠传输由运输层的TCP协议负责,而数据链路层的PPP协议只进行检错。就是说,PPP协议是不可靠传输协议。
流量控制:在TCP/IP协议族中,端到端的流量控制由TCP负责,因而链路级的PPP协议就不需要再重复进行流量控制。
序号:PPP是不可靠传输协议,因此不需要使用帧的序号。在噪声较大的环境下,如无线网络,则可以使用有序号的工作方式,这样就可以提供可靠传输服务。
多点线路:PPP协议不支持多点线路(即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。
半双工或单工链路:PPP协议只支持全双工链路。

PPP协议帧格式:
PPP帧的首部有4个字段,尾部2个字段。
首部的第一个字段和尾部的最后一个字段都是标志字段F(Flag),规定为0x7E。十六进制的7E的二进制是01111110。标志字段表示一个帧的开始和结束。如果出现连续两个标志字段,就表示这是一个空帧,应该丢弃。
首部中的地址字段A规定为0xFF,控制字段C规定为0x3,
PPP首部的第四个字段是两个字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据。信息字段的长度是可变的,不超过1500字节。尾部的第一个字段两个字节,是使用CRC的帧检测序列FCS。

PPP协议的工作状态:
当用户拨号接入ISP后,就建立了一条从用户PC机到ISP的物理连接。这时,用户PC机向ISP发送一系列的LCP(链路层控制协议)分组(封装成多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着还要进行网络层配置,NCP给新接入用户PC机分配一个临时的IP地址。这样,用户PC机就成为因特网上的一个有IP地址的主机了。当用户通信完毕,NCP(网络控制协议)释放网络层连接,回收分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。

当网络层配置完毕后,链路就进入可进行数据通信的“链路打开”状态。链路的两个PPP端点可以彼此向对方发送分组。两个PPP端点还可发送回送请求LCP分组和回答LCP分组,以检测链路的状态。
数据传输结束后,可以由链路的一端发出终止请求LCP分组,请求终止链路连接,在收到对方发来的终止确认LCP分组后,转到链路终止状态。如果链路出现故障,也会从链路打开状态转到链路终止状态。当天之解调器的载波停止后,则回到链路静止状态。
从设备之间无链路开始,到建立物理链路,再建立LCP链路。经过鉴别后再建立NCP链路,然后才能交换数据。由此可见,PPP协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

局域网的数据链路层:
局域网最大特点是网络为一个单位所拥有,且地里范围和站点数目均有限。 
为了使数据链路层能更好地适应多种局域网标准,IEEE 802委员会就把局域网的数据链路层拆成两个子层,即逻辑链路层LLC子层和媒体接入控制MAC(MAC地址)子层。与接入到传输媒体有关的内容都放在MAC子层,而LLC子层则与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的。

以太网在局域网中已取得垄断的地位,并且几乎成为了局域网的代名词。由于因特网发展很快,现在逻辑链路控制子层LLC的作用已经消失了,很多厂商生产网卡适配器就仅装有MAC协议而没有LLC协议。

适配器的作用:
计算机与外界局域网的连接时通过通信适配器。适配器本来就是主机箱内插入的一块网络接口板。称为网卡。由于较新的计算机主板上已经嵌入了这种适配器,不使用单独的网卡了。适配器上面装有处理器和存储器(包括RAM和ROM)。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行和并行传输的转换。由于网络上的数据率和计算机总线上的数据率不同,因此在适配器中必须装有缓存芯片。若在主板上插入适配器时,还必须把管理该适配器的设备驱动程序装在计算机的操作系统中。这个驱动程序就会告诉适配器,应当从存储器的什么位置上把多次的数据块发送到局域网,或者应当在存储器的什么位置上把局域网传送过来的数据块存储下来。
适配器接收和发送各种帧时不适用计算机的CPU。这时CPU可以处理其他任务。当适配器收到有差错的帧时,就把这个帧丢弃而不必通知计算机。当适配器收到正确的帧时,它就使用中断来通知该计算机并交付给协议栈中的网络层。当计算机要发送IP数据报时,就由协议栈把IP数据报向下交给适配器,组装成帧后发送到局域网中。计算机的硬件地址就在适配器的ROM中,而计算机的软件地址-IP地址,则在计算机的存储器中。
如何协调总线上各计算机的工作。我们知道,总线上只要有一台计算机在发送数据,总线的传输资源就被占用,因此,在同一时间只能允许一台计算机发送信息,否则各计算机之间就会互相干扰。
以太网采用的协调方法是使用一种特殊的协议CSMA/CD,它是载波监听多点接入/碰撞检测(Carrier Sense Multiple Aceess with Collision Detection)的缩写。
多点接入就说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是载波监听和碰撞检测。
载波监听就是发送前先监听,即每一个站在发送数据前先检查一下总线上是否有其他站在发送数据,如果有,则暂时不发送数据,要等待信道变成空闲时再发送。
碰撞检测就是变发送边监听,即适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度会增加。当适配器检测到信号电压变化幅度超过一定的值时,就认为总线上至少有2个站同时在发送数据,表明产生了碰撞。即发送了冲突。每一个正宗发送数据的站,一旦发现总线上出现了碰撞,适配器就要立即停止发送,免得继续浪费网络资源,然后等待一段随机事件后再次发送。
CSMA/CD协议归纳:
1:适配器从网络层获取一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓冲中,准备发送。
2:若适配器检测到信道空闲(即在96比特时间内没有检测到信道上有信号),就发送这个帧。若检测到信道忙,则继续检测并等待信道转为空闲(加上96比特时间),然后发送这个帧。
3:在发送过程中继续检测信道,若一直未检测到碰撞,就顺利把这个帧成功发送完毕。若检测到碰撞,则中止发送,并发送人为干扰信号。
4:在中止发送后,适配器就执行指数退避算法,等待r倍512比特时间后,返回到步骤2。

阅读(320) | 评论(0) | 转发(0) |
0

上一篇:ARP协议

下一篇:物理层

给主人留下些什么吧!~~