数据链路层
数据链路层使用的信道主要以下两种类型:
- 点对点信道。这种信道使用的一对一的点对点通信方式
- 广播信道。 这种信道使用的一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
在互联网进行通信的过程中所处的地位如图:
从数据链路层来看,H1到H2的通信可以看成由四段不同的链路层通信组成。如图:
使用点对点信道的数据链路层
数据链路和帧
链路(link)就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有王何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
数据链路(data link则是另一拿概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输(这将在后面几节讨论),若把实现这些协议的硬件和软件加到链路上,就构成了数据链略。现在最常用的方法是使用网络适配器(既有硬件,也包括软件)来实现这些协议。一般的适配器都包括了数据链路层和物理层这两层的功能。
数据链路层的协议数据单元——帧。
点对点信道的数据链路层在进行通信时主要步骤如下:
(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
(2)结点A把封装好的帧发送给结点B的数据链路层。
(3)若结点B的数据链路层收到的帧无差错,则从收到的额中提取出IP数据报交给上面的网络层;否则丢弃这个帧。
三个基本问题
数据链路层协议有许多种,但有三个基本问题则是共同的。这三个基本问题是:封装成帧、透明传输和差错检测。
- 封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。帧的数据部分的长度应该尽可能的大于首部和尾部的长度。SOH添加在首部,EOT在尾部。ASCII码分别为01 ,04 并不是字符SHO 以及EOT。 - 透明传输
如果在二进制代码中恰好出现和SHO或者EOT中间一样的数据链路层会错误的找帧边界。所以要使数据中的相应字符成为一个透明的数据。
前面提到的“透明”是一个很重要的术语,它表示:某一个实际存在的事物看起来却好像不存在一样(例如,你看不见在你前面有块100%透明的玻璃的存在)。 “在数据链路层透明传送数据”表示无论什么样的比特组合的数据,都能够按照原样没有差错地通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层有什么妨碍数据传输的东西。或者说,数据链路层对这些数据来说是透明的。
为了解决透明传输问题,就必须设法使数据中可能出现的控制字符"SOH"和"EOT"在接收端不被解释为控制字符。具体的方法是:发送端的数据链路层在数据中出现控制字符"SOH"或"EOT"的前面插入一个转义字符"ESC" (其十六进制编码是IB,二进制是00011011)而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(characte stuffing)如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。 - 差错检测
现实的通信链路都不会是理想的,这就是说,比特在传输过程中可能会产生差错: 1可能会变成0,而0也可能变成1,这就叫做比特差错,比特差错是传输差错中的一种。本小节所说的“差错”,如无特殊说明,就是指“比特差错”.在一段时间内,传输错误的比特占所专输比特总数的比率称为误码率BER (Bit Err Rate),例如,误码率为101时,表示平均每传送1010个比特就会出现一个比特的差错。误码率与信噪比有很大的关系。如果设法提高信噪比,就可以使误码率减小。实阿的通信链路并非是理想的,它不可能使误码率下降到零。
因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
目前在数据链路层广泛使用了循环冗余检验CRC (Cyclic Redundancy Check)的检错技术。
点对点协议PPP
能实现可靠传输的高级数据链路控制HDLC当初比较流行的。对于点对点协议PPP则是目前使用的最广泛的数据链路协议。
PPP协议的特点
PPP协议就是用户计算机和ISP进行通信时的数据链路层的协议。
1. PPP协议满足的需求
- 简单 互联网体系结构中把最复杂的部分放在了TCP协议中对于数据链路层的帧就一个首要要求简单。仅仅只进行CRC也就是循环冗余检验通过收下没有通过拒绝
- 封装成帧 PPP协议必须规定特殊字符作为帧定界符
- 透明性 PPP必须保证数据传输的透明性
- 多种网络协议 PPP协议必须能在同一条物理链路上同时支持多种网络层协议(IP 、IPX等)
- 多种类型链路 可以在多种链路上运行如串行,并行,同步或异步 ,低俗速或高速,电的或光的,交换或非交换点对点电路。
- 差错检测(error detection) PPP协议必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。若在数据链路层不进行差错检测,那么已出现差错的无用帧就还要在网络中继续向前转发,因而会白白浪费许多的网络资源。
- 检测连接状态 PPP协议必须具有一种机制能够及时(不超过几分钟)自动检测出链路是否处于正常工作状态。当出现故障的链路隔了一段时间后又重新恢复正常工作时,就特别需要有这种及时检测功能。
- 最大传送单元 PPP协议必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值。这样做是为了促进各种实现之间的互操作性,如果高层协议发送的分组过长并超过MTU的数值, PP就要丢衰这样的帧,并返回差错。需要强调的是, MTU是数据链路层的帧可以载荷的数据部分的最大长度,而不是帧的总长度。
- 网络层地址协商 PPP协议必须提供一种机制使通信的两个网络层(例如,两个IP层)的实体能够通过协商知道或能够配置彼此的网络层地址,协商的算法应尽可能简单,并且能够在所有的情况下得出协商结果,这对搜号连接的链路特别重要,因为如果仅仅在链路层建立了连接而不知道对方网络层地址,则还不能够保证网络层可以传送分组.
- 数据压缩协商 PPP协议必须提供一种方法来协商使用数据压缩算法。但PPP协议并不要求将数据压缩算法进行标准化.
在TCP/P协议族中,可靠传输由运输层的TCP协议负责,因此数据链路层的PPP协议不需要进行纠错,不需要设置序号,也不需要进行流量控制.PPP协议不支持多点线路c即一个主站轮流和链路上的多个从站进行通信),而只支持点对点的链路通信。此外,PPP协议只支持全双工链路。
2. PPP协议组成
PPP协议有三个组成部分:
- 一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分,这个信息部分的长度受最大传送单元MTU的限制。
- 一个用来建立、配置和测试数据链路连接的链路控制协议LCP (Link ControlProtocol).通信的双方可协商一些选项。在RFC 1661中定义了11种类型的LCP分组。
- 一套网络控制协议NCP (Network Control Protocoll),其中的每一个协议支持不同的网络层协议,如IP, Osl的网络层、DECnet,以及AppleTalk等。
PPP协议的帧格式
-
各字段的意义
PPP的帧格式如图:
- F表示的是标志字段
- 首部中的地址字段A规定为OxFF (即11 111),控制字段C规定为0x03 (即0000001)最初曾考虑以后再对这两个字段的值进行其他定义,但至今也没有给出。
- PPP首部的第四个字段是2字节的协议字段,当协议字段为0x0021时, PP顿的信息字段就是IP数据报。若为OxC021,则信息字段是PPP链路控制协议LCP的数据,而0x8021表示这是网络层的控制数据.
- 信息字段的长度是可变的,不超过1500字节。
- 尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS.
- 字节填充
当信息字段中出现和标志字段一样的比特(OxTE)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
当PPP使用异步传输时,它把转义符定义为OxTD (即011111,并使用字节填充,RFC 1662规定了如下所述的填充方法:
- 把信息字段中出现的每一个Ox7E字节转变成为2字节序列(OxTD, OxSE).
- 若信息字段中出现一个Ox7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成为2字节序列(Ox7D, OxsD)
- 若信息字段中出现ASCI码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03 (在控制字符中是“传输结束” ETX)就要把它转变为2字节序列0ox7D, 0x23).
由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。
- 零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送),在这种情况下, PP协议采用零比特填充方法来实现透明传输。
零比特填充的具体做法是:在发送端,先扫描整个信息字段(通常用硬件实现,但也可用软件实现,只是会慢些),只要发现有S个连续1,则立即填入一个0,因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现6个连续1,接收端在收到一个额时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。垂当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流(图3-11),这样就保证了透明传输;在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断
PPP协议工作状态
使用广播信道的数据链路层
局域网的数据链路层
局域网的特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
局域网所具有的主要优点:
- 具有广播功能,从一个站点可很方便地访问全网,局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性(relability)可用性(availablity)生存性(survivability).
局域网的拓扑结构有:星形网、环形网,总线网。
共享信道对于共享通信媒体资源的两种方法;
- 静态划分信道:也就是频分复用、时分复用、码分复用、波分复用等
- 动态媒体接入控制,它又称为多点接入,特点是信道并非在用户通信时固定分配给用户。分为以下两种:
- 随机接入:随机接入的特点是所有用户可以随机的发送信息。但如果有两个或以上的用户同时发送信息会发生碰撞既是冲突,使这些用户的发送都失败。必须要有网络协议解决碰撞
- 受控接入:受控接入的特点是用户不能随机的发送信息必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路擦询(polling)或称为轮询。
-
以太网的两个标准
后面的局域网一般只适配了MAC协议不在装LCC协议了
- 适配器的作用
计算机与外界局域网的连接是通过通信适配器进行。
CSMA/CD协议
为了通信的方便以太网采取两种措施:
- 采用较为灵活的无连接的工作方式,即不必先建立连接就可以直接发送数据。以太网采用的协调方法和上面的办法非常像,它使用的协议是CSMA/CD,意思是载波监听多点接入/碰撞检测(Carrier Sense Multiple Access with Collision Deigction)。
- 第二,以太网发送的数据都使用曼彻斯特(Manchester)编码的信号。
CSMA/CD协议的要点:
“多点接入”就是说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测"
"载波监听”就是用电子技术检测总线上有没有其他计算机也在发送,其实总线上并没有什么“载波”,这里只不过借用一下“载波”这个名词而已,因此载波监听就是检测信道,这是个很重要的措施。不管在发送前,还是在发送中,每个站都必须不停地检测信道。
在发送前检测信道,是为了获得发送权,如果检测出已经有其他站在发送,则自己就暂时不许发送数据,必须要等到信道变为空闲时才能发送。在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞。这就称为碰撞检测。“碰撞检测”也就是“边发送边监听”,即适配器边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。
可以把CSMA/CD协议的要点归纳如下:
- (1)准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部(见后面的3.4.3节),组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。
- (2)检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
- (3)在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
- ①发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到(1).
- ②发送失败:在争用期内检测到碰撞,这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),维续检测信道,但若重传达16次仍不能成功,则停止重传而向上报错。
以太网每发送完一帧,一定要把已发送的帧暂时保留一下,如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次。
本章重点
- 链路是从一个结点到相邻结点的一段物理线路,数据链路则是在链路的基础上增加了一些必要的硬件(如网络适配器)和软件(如协议的实现)。
- 数据链路层使用的信道主要有点对点信道和广播信道两种。
- 数据链路层传送的协议数据单元是帧。数据链路层的三个基本问题则是:封装成锁、透明传输和差错检测。
- 循环冗余检验CRC是一种检错方法,而帧检验序列FCS是添加在数据后面的元余码。
- 点对点协议PPP是数据链路层使用最多的一种协议,它的特点是:简单;只检测差错,而不是纠正差错:不使用序号,也不进行流量控制;可同时支持多种网络层h议.
- PPPOE是为宽带上网的主机使用的链路层协议。
- 局域网的优点是:具有广播功能,从一个站点可很方便地访问全网:便于系统的扩展和逐渐演变;提高了系统的可靠性、可用性和生存性。
- 共享通信媒体资源的方法有二:一是静态划分信道(各种复用技术),二是动态媒体接入控制,又称为多点接入(随机接入或受控接入)。
- IEEE 802委员会曾把局域网的数据链路层拆成两个子层,即逻辑链路控制(LLC)子层(与传输媒体无关)和媒体接入控制(MAC)子层(与传输媒体有关),但现在LCC子层已成为历史
- 计算机与外界局域网的通信要通过通信适配器(或网络适配器),它又称为网络接口卡或网卡。计算机的硬件地址就在适配器的ROM中.
- 以太网采用无连接的工作方式,对发送的数据帧不进行编号,也不要求对方发回确认。目的站收到有差错帧就把它丢弃,其他什么也不做。
- 以太网采用的协议是具有冲突检测的载波监听多点接入CSMA/CD.协议的要点是:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。因此,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。以太网上各站点都平等地争用以太网信道
- 传统的总线以太网基本上都是使用集线器的双绞线以太网,这种以太网在物理上是星形网,但在逻辑上则是总线形网.集线器工作在物理层,它的每个接口仅仅简单地转发比特,不进行碰撞检测
- 以太网的硬件地址,即MAC地址实际上就是适配器地址或适配器标识符,与主机所在的地点无关。源地址和目的地址都是48位长。
- 以太网的适配器有过滤功能,它只接收单播帧、广播顿或多播帧。
- 使用集线器可以在物理层扩展以太网(扩展后的以太网仍然是一个网络)。
- 交换式集线器常称为以太网交换机或第二层交换机(工作在数据链路层),它就是一个多接口的网桥,而每个接口都直接与某台单主机或另一个集线器相连,且工作在全双工方式。以太网交换机能同时连通许多对的接口,使每一对相互通信的主机都能像独占通信媒体那样,无碰撞地传输数据。
- 高速以太网有100 Mbils的快速以太网、吉比特以太网和10 Gbits的10吉比特以太网。最近还发展到100吉比特以太网。在宽带接入技术中,也常使用高速以太网进行接入