数据链路层
1.什么是数据链路层
数据链路层是指OSI参数模型的第二层,它规定了以太网的帧操作,该传感器在工艺上将两个特征一致的热电元反向串联或接成差动平衡电路方式,因而能以非接触式检测出物体放出的红外线能量变化 ,数据链路层故障包括由集线器、路由器、网络测试仪提供的关于帧活动和帧错误的统计数据,并将其转换为电信号输出。
2.数据链路层的内容
数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路控制协议也称链路通信规程,也就是OSI参考模型中的数据链路层协议。链路控制协议可分为异步协议和同步协议两大类。数据链路层的主要协议有:
(1)点对点协议(Point-to-PointProtocol);
(2)以太网(Ethernet);
(3)高级数据链路协议(High-LevelDataLinkProtocol);
(4)帧中继(FrameRelay);
(5)异步传输模式(AsynchronousTransferMode)。
3.数据链路层的分类
数据链路层包含LLC逻辑链路层子层和MAC介质访问控制子层两个子层
- 逻辑控制子层
数据链路层的LLC子层用于设备间单个连接的错误控制,流量控制。与MAC层不同,LLC和物理媒介全无关系。媒介是CSMA/CD的802.3还是802.5的令牌环都没关系。它在LAN中是独立的802.2。在LLC之上的网络层可以是无连接、响应的无连接或面向连接的不同业务。LLC用业务接入点SAP访问上层协议,有了SAP,站点就能在LLC层只用一个接口同时与几个高层协议玩。一个SAP是简单的地址或协议ID,内容则为空的LLC帧。LLC协议数据单元(LLCPDU)即LPDU。它包括:DSAP(目的SAP)/SSAP(源SAP);一个定义吞吐量优先级的控制;和含带数据的信息域。在接收方,DSAP例如协议ID就是消息要被递送的,通常DSAP和SSAP是一样的,因为两端只有在同种协议间才能通信。例如当SAP为AA,代表SNAP(子层接入协议)。SNAP是个非标准化的,或厂商特定的协议,用于接入协议的业务。例如当SAP为06,则代表IP协议;当SAP为FO,代表NetBIOS(网络基本输入/输出协议)。SAP为FF表示广播的Global协议。
SNAP机制:规范种DSAP都只有一个字节,那不足够区分所有协议了。SNAP就来了,而且它支持在LLC帧上传厂商的协议。这样传递的协议就被放入所谓SNAP帧中了。SNAP”ㄍ酚形遄纸冢前三字节为厂商号,后两字节指示协议。以太网有两种版本:IEEE(802.2、802.3);DIX(DEC、Intel、Xerox)又称V2以太网。DIX帧在源地址之后是两字节的Type,例如IP。IEEE以太网帧,在源地址后是帧长度指示,在随后的数据域中才是标准的LPDU封装,包括DSAP/SSAP/控制域/Data。在这个Data中会有协议ID、以太类型指示,例如以太类型806表示地址解析协议ARP。以太网卡通过跳针或软件可以设置需要的以太网版本,DIX通常都设的,因为大约90%的网络都用此版本。请注意网络所有要通信的站点应设成相同版本。
- 介质访问层
介质访问控制是解决当局域网中共用信道的使用产生竞争时,如何分配信道的使用权问题。逻辑链路Logical Links是实际电路或逻辑电路上交换通信信息的两个端系统之间的一种协议驱动通信会话。协议栈定义了两个系统在某种介质上的通信。在协议栈低层定义可用的多种不同类型的通信协议,如局域网络(LAN)、城域网(MAN)和象X.25或帧中继这样的分组交换网络。逻辑链路在物理链路(可以是铜线、光纤或其他介质)上的两个通信系统之间形成。根据OSI协议模型,这些逻辑链路只在物理层以上存在。你可以认为逻辑链路是存在于网络两个末断系统间的线路。面向连接的服务 为了保证可靠的通信,需要建立逻辑线路,但在两个端系统间要维持会话。面向需要应答连接的服务 分组传输并有返回信号的逻辑线路。这种服务产生更大的开销,但更加可靠。无应答不连接服务 无需应答和预先的传送。在端系统间没有会话。
OSI协议栈中的数据链路层可进一步细分为较低的介质访问控制(MAC)子层和较高的逻辑链路控制(LLC)子层。当它接收到一个分组后,它从MAC子层向上传送。如果有多个网络和设备相连,LLC层可能将分组送给另一个网络。例如,在一个NetWare服务器上,你可能既安装了以太网络适配器又安装了令牌网络适配器,NetWare自动地在连接到适配器的网络间桥接,这样原来在以太网上的分组就可以传送到令牌网上的目的地了,LLC层就象网络段间的交换或链路中继,它将以太网的帧重装成令牌环网的帧。
4.数据链路层的功能
数据链路层的最基本的功能是向该层用户提供透明的和可靠的数据传送基本服务。透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。在物理层中这些情况都可能发生,在数据链路层中必须用纠错码来检错与纠错。数据链路层是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路。如果您想用尽量少的词来记住数据链路层,那就是:“帧和介质访问控制”。
为了使传输中发生差错后只将有错的有限数据进行重发,数据链路层将比特流组合成以帧为单位传送。每个帧除了要传送的数据外,还包括校验码,以使接收方能发现传输中的差错。帧的组织结构必须设计成使接收方能够 明确地从物理层收到的比特流中对其进行识别,也即能从比特流中区分出帧的起始与终止,这就是帧同步要解决的问题。由于网络传输中很难保证计时的正确和一致,所以不可采用依靠时间间隔关系来确定一帧的起始与终止的方法。
(1)字节计数法:这是一种以一个特殊字符表示一帧的起始并以一个专门字段来标明帧内字节数的帧同步方法。接收方可以通过对该特殊字符的识别从比特流中区分出帧的起始并从专门字段中获知该帧中随后跟随的数据字节数,从而可确定出帧的终止位置。面向字节计数的同步规程的典型代表是DEC公司的数字数据通信报文协议DDCMP(Digital Data Communications Message Protocol)。
控制字符SOH标志数据帧的起始。实际传输中,SOH前还要以两个或更多个同步字符来确定一帧的起始,有时也允许本帧的头紧接着上帧的尾,此时两帧间就不必再加同步字符。 count字段共有14位,用以指示帧中数据段中数据的字节数,14位二进制数的最大值为2-1=16383,所以数据最大长度为8×16383=131064。DDCMP协议就是靠这个字节计数来确定帧的终止位置的。DDCMP帧格式中的ACK、SEG、ADDR及FLAG中的第2位,CRC1、CRC2分别对标题部分和数据部分进行双重校验,强调标题部分单独校验的原因是,一旦标题部分中的CONUT字段出错,即失却了帧边界划分的依据,将造成灾难性的后果。由于采用字符计数方法来确定帧的终止边界不会引起数据及其它信息的混淆,因而不必采用任何措施便可实现数据的透明性(即任何数据均可不受限制地传输)。
(2)使用字符填充的首尾定界符法:该法用一些特定的字符来定界一帧的起始与终止,为了不使数据信息位中出现的与特定字符相同的字符被误判为帧的首尾定界符,可以在这种数据字符前填充一个转义控制字符(DLE)以示区别,从而达到数据的透明性。但这种方法使用起来比较麻烦,而且所用的特定字符过份依赖于所采用的字符编码集,兼容性比较差。
(3)使用比特填充的首尾标志法:该法以一组特定的比特模式(如01111110)来标志一帧的起始与终止。本章稍后要详细介绍的HDLC规程即采用该法。为了不使信息位中出现的与特定比特模式相似的比特串被误判为帧的首尾标志,可以采用比特填充的方法。比如,采用特定模式01111110,则对信息位中的任何连续出现的五个“1”,发送方自动在其后插入一个“0”,而接收则做该过程的逆操作,即每接收到连续五个“1”,则自动删去其后所跟的“0”,以此恢复原始信息,实现数据传输的透明性。比特填充很容易由硬件来实现,性能优于字符填充方法。
(4)违法编码法:该法在物理层采用特定的比特编码方法时采用。例如,一种被称作曼彻斯特编码的方法,是将数据比特“1”编码成“高-低”电平对,而将数据比特“0”编码成“低-高”电平对。而“高-高”电平对和“低-低”电平对在数据比特中是违法的。可以借用这些违法编码序列来定界帧的起始与终止。局域网IEEE 802标准中就采用了这种方法。违法编码法不需要任何填充技术,便能实现数据的透明性,但它只适用于采用冗余编码的特殊编码环境。由于字节计数法中COUNT字段的脆弱性以及字符填充法实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违法编码法。
- 差错控制
一个实用的通信系统必须具备发现(即检测)这种差错的能力,并采取某种措施纠正之,使差错被控制在所能允许的尽可能小的范围内,这就是差错控制过程,也是数据链路层的主要功能之一。对差错编码(如奇偶校验码,检查和或CRC)的检查,可以判定一帧在传输过程中是否发生了错误。一旦发现错误,一般可以采用反馈重发的方法来纠正。这就要求接收方收完一帧后,向发送方反馈一个接收是否正确的信息,使发送方所在此作出是不需要重新发送的决定,也即发送方仅当收到接收方已正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需要重新发送直至正确为止。物理信道的突发噪声可能完全“淹没”一帧,即使得整个数据帧或反馈信息帧丢失,这将导致发送方永远收不到接收方发来的反馈信息,从而使传输过程停滞.为了避免出现这种情况,通常引入计时器(Timer)来限定接收方发回反馈信息的时间间隔,当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反馈信息,即计时器超时(Timeout),则可认为传的帧已出错或丢失,继而要重新发送。由于同一帧数据可能被重复发送多次,就可能引起接收方多次收到同一帧并将其递交给网络层的危险。为了防止发生这种危险,可以采用对发送的帧编号的方法,即赋予每帧一个序号,从而使接收方能从该序号来区分是新发送来的帧还是已经接收但又重新发送来的帧,以此来确定要不要将接收到的帧递交给网络层。数据链路层通过使用计数器和序号来保证每帧最终都被正确地递交给目标网络层一次。
- 流量控制
流量控制并不是数据链路层所特有的功能,许多高层协议中也提供流时控功能,只不过流量控制的对象不同而已。比如,对于数据链路层来说,控制的是相邻两节点之间数据链路上的流量,而对于运输层来说,控制的则是从源到最终目的之间端的流量。由于收发双方各自使用的设备工作速率和缓冲存储的空间的差异,可能出现发送方发送能力大于接收方接收能力的现象,如若此时不对发送方的发送速率(也即链路上的信息流量)作适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”,从而造成帧的丢失而出错。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送率不致超过接收方所能承受的能力。这个过程需要通过某种反馈机制使发送方知道接收方是否能跟上发送方,也即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后继续发送。
- 链路管理
链路管理功能主要用于面向连接的服务。当链路两端的节点要进行通信前,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接,在传输过程中则要能维持该连接。如果出现差错,需要重新初始化,重新自动建立连接。传输完毕后则要释放连接。数据连路层连接的建立维持和释放就称作链路管理。在多个站点共享同一物理信道的情况下(例如在LAN中)如何在要求通信的站点间分配和管理信道也属于数据链路层管理的范畴。