3.4数据链路层协议举例数据链路层协议也称链路通信规程分类:异步协议,同步协议异步协议:以字符为独立的传输单位同步协议:以数据块(幀)为传输单位面向字符的同步协议(如BSC)面向比特的同步协议(如HDLC)特点:每一个字符独立地发送,字符间的间隔是任意的每个字符的组成部分:起始位:1位,一个字符的开始数据位:5~8位(最低位在前)奇偶检验位:1位(可选)停止位:1、1.5或2位,一个字符的结束3.4.1起-止式异步通信规程1/0图3-171/01/01/01/01/01/01/0起始位奇偶位停止位数据位10数据位每个字符以起始位和停止位加以分割,故称起止式字符中各个比特用固定的时钟频率传输,但字符间采用异步定时,字符间的同步利用起始位实现,收、发时钟只要在一个字符的时间内保持同步(误差7%)即可,不要求两个时钟频率精确地一致起-止式异步通信规程(续)起-止式异步通信规程(续)缺点:通信效率低。如7位数据位、1位校验位、1位停止位、且字符间间隔最小时,数据传输效率为:7/(1+7+1+1)*100%=70%优点:•对收发双方的时钟同步要求低,设备简单,费用低•适合于低速场合3.4.2面向字符的同步协议面向字符的同步协议,其典型代表是IBM公司的二进制同步通信规程BSC(BinarySynchronousCommunication)。缺点:链路上传送的数据必须是由规定字符集中的字符组成,控制信息也必须由同一个字符集中的若干指定的控制字符构成。所有通信的设备必须使用同样字符代码,而不同版本的BSC规程要求使用不同的代码。只对数据部分进行差错控制,控制部分出错无法控制,可靠性较差。采用停止等待协议,收发双方交替工作,通信线路利用率低。不易扩展,每增加一种功能就需要设定一个新的控制字符。优点:BSC协议采用停等协议,需要的缓冲区容量小。适用于点对点、点对多点线路结构,在面向终端的网络系统中仍被广泛使用。数据帧:用于数据传输•SYN:00010110,同步字符,至少要两个•标题:发送者和接收者的地址,停等ARQ中的帧编号。标题是可选的•正文:要传输的有用信息•控制字符:SOH(序始),STX(文始),ETX(文终)•BCC:BlockCheckCode,块校验字符,单字节的CRC或双字节的CRC,对标题和正文进行校验图3-18BSC数据帧格式SYNSYNSOH标题STX正文ETXBCCBSC数据幀的基本格式BSC数据帧格式※BSC控制幀格式※ENQ(询问),SYN(同步),P/S(查询/选择),ACK(确认),NAK(否认),EOT(送毕)正文ETXBCCSTXENQACK0ACK1正文ETXBCCSTXACK0EOTSendENQSendData0SendData1FinishReadyRecv&ChkACKData0SendNextRecv&ChkACKData1SendNextFinish图3-20点-点通信过程(正常)ETBBSC协议点-点通信时的交互※控制字符:ENQ(询问),STX(文始),ETB(组终),ETX(文终),EOT(送毕)–演变•SDLC:1975年IBM提出了同步数据链路控制规程SDLC•ADCCP:ANSI基于SDLC的高级数据通信控制规程•HDLC:ISO基于SDLC提出了高级数据链路控制规程HDLC•LAPs:ITU-T基于HDLC提出了LAPs标准(X.25中的LAPB,ISDN中的LAPD,带差错控制功能Modem中的LAPM)•LAN802.2LLC:基于HDLC3.4.3面向比特的同步协议(1)工作站类型①主站(PrimaryStation):负责链路控制,包括对次站的控制、恢复链路差错,它发出的帧为命令帧。②次站(SecondaryStation):受主站控制的站,它完成主站所命令的工作,返回响应帧。③复合站(CombinedStation):既有主站功能,又有次站功能。可发出命令帧和响应帧。(2)链路结构①非平衡式结构(Unbalanced):由一个主站和一个或多个次站组成,点对点或多点通信。②平衡式结构(Balanced):由二个复合站组成。HDLC主要概念HDLC的链路结构(3)数据操作方式①正常响应方式(NRM-NormalResponseMode)•用于非平衡式链路结构(点-点、点-多点)•传输过程由主站启动,并向次站发命令,主站轮询、选择次站,主站并负责链路管理及对超时重发和各类恢复操作的控制。②异步平衡方式(ABM-AsychronousBalancedMode)–用于平衡式链路结构(全双工点-点),每个站都是复合站。–每一个复合站都可以发出命令帧和响应帧,对另一站传输数据。③异步响应方式(ARM-AsychronousResponseMode)–用于非平衡式链路结构–次站无主站允许,即可主动向主站发送数据。–主站仍负责初始化、错误恢复等,起控制作用。–此方式一般使用较少(1)标志字段•8比特序列01111110标志帧的开始和结束,即用于帧的同步•“0”比特插入法,保持标志字段的唯一性,实现数据的透明传输。–在发送端发送数据时,每5个连续“1”后面自动插入一个“0”。–在接收端,检测到连续5个“1”后,自动删除后面的一个“0”,恢复成原来的数据。图3-26HDLC帧格式Flag01111110Address1ByteControl1ByteInfoNbitsFCS2BytesFlag01111110HDLC帧结构–(2)地址字段•一般为8个比特,可扩展。•全“1”为广播地址,全“0”为测试用。•扩充地址时,前面的8位组首位为0,只有最后一个首位为“1”,表示地址结束。–(3)控制字段•用于构成各种命令和响应,以便对链路监视和控制–(4)信息字段•可以是任意长度的二进制比特串,一般为0~2000比特长。–(5)帧校验序列字段FCS•用于差错控制,采用CRC码,多项式为X16+X12+X5+1。•校验范围为两个标志字段之间。HDLC帧结构(续)–信息帧I-Frame:用于传送数据–监控帧S-Frame:用于差错控制和流量控制–无编号帧U-Frame:主要用于提供链路的建立、拆除及其它多种控制功能帧类型控制字段比特12345678信息帧0N(S)P/FN(R)监控帧10S1S2P/FN(R)无编号帧11M1M2P/FM3M4M5HDLC帧的类型三种类型的幀格式全视图三种类型的幀格式、提供的命令与响应信息帧结构视图帧类型控制字段比特12345678信息帧0N(S)P/FN(R)采用滑窗协议,N(S)表示发送的帧序列号,N(R)表示捎带的确认信息(期待接收的下一个幀),N具有3位,即幀序号0~7。扩展方式下有7位。P/F为探询/终止位。–NRM下,主站轮询次站有无数据要发送,置P=“1”。若次站有数据发送,则在前面各帧中置F=“0”,最后一数据帧中置F=“1”;若无数据发送,则在响应帧中置F=“1”。–ARM和ABM中,任何一站在发送的S帧和I帧中置P=“1”,表示询问对方状态,对方在收到该帧后应回答本站的状态,并置F=“1”。信息帧监控帧视图帧类型控制字段比特12345678监控帧10S1S2P/FN(R)–监控帧:根据3,4位的取值有四种类型。S1,S2帧名功能00RR(ReceiveReady)准备好接收N(R)帧,即确认N(R)以前各帧。用于无捎带应答的场合01REJ(Reject)否认N(R)起的各帧,要求对方从N(R)开始全部重发,同时表明确认N(R)以前各帧10RNR(ReceiveNotReady)确认N(R)以前各帧,但还未准备好接收下一幀N(R),要求对方暂停发送。11SREJ(SelectiveReject)只否认N(R)一帧(要求对方选择重发)同时表明确认N(R)以前各帧监控帧无编号帧视图帧类型控制字段比特12345678无编号帧11M1M2P/FM3M4M5–无编号帧:•不包含N(S)和N(R),即无编号。•用于提供链路的建立、拆除及其他多种控制功能。•它的类型由M1~M5来编码,总共可有32种命令或响应。–DISC(DISConnect):终止逻辑链接,结束以前操作模式.–置模式命令:SNRM、SABM、SNRME、SABME等。后带E的为置扩展模式,扩展模式下帧序号由3位变成7位。–FRMR(FRaMeReject):帧发生语义格式错误。–UA(UnnumberedAcknowledgement):无编号命令的应答。–DM(DisconnectMode):响应幀,表明本方已与链路断开。–UI(UnnumberedInformation):无编号信息幀,为送给对方链路层实体的信息。–其它命令与响应,用于测试、链路初始化、参数协商等。无编号帧HDLC的扩展模式LAPB(LinkAccessProcedureBalanced):平衡型链路访问规程,它是HDLC的一个子集,用于X.25中。–操作过程可分为建立链路、数据传输和断开链路三个阶段。–通过任意一方发送SABM命令,另一方返回UA响应来建立双向链路。–在启动建立链路之前,为确保DCE和DTE处于相同的阶段,DCE常可主动发一个DM响应幀,要求DTE启动链路的建立过程。HDLC的链路访问规程HDLC帧应用举例(无错时)HDLC帧应用举例(有错时)DTE与DCE在数据链路层上的通信过程–优点:•适用于点-点或点对多点通信。•可用于半双工或全双工通信。•采用同步方式和滑窗协议传输,传输效率高。•主站可同时与多个从站建立链路,传输效率高。•幀都有幀校验序列,且按顺序编号,可靠性较高。•采用比特填充法实现数据透明传输。•可传输任意长度的二进制比特串。•采用统一的帧格式来传输数据、命令和响应,非常利于程序的实现。因此HDLC和相类似的协议获得了广泛的应用。使用HDLC的优点3.4.4因特网的点对点协议PPP现在全世界使用得最多的数据链路层协议是点对点协议PPP(Point-to-PointProtocol)用户使用拨号电话线接入因特网时,一般都是使用PPP协议用户拨号入网的示意图路由器调制解调器调制解调器因特网服务提供者(ISP)用户家庭拨号电话线使用TCP/IP的PPP连接使用TCP/IP的客户进程路由选择进程至因特网…PC机PPP协议1992年制订了PPP协议。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661]PPP协议有三个组成部分–一个将IP数据报封装到串行链路的方法–链路控制协议LCP(LinkControlProtocol)–网络控制协议NCP(NetworkControlProtocol)PPP协议的帧格式PPP的帧格式和HDLC的相似标志字段F仍为0x7E(十六进制的7E的二进制表示是01111110)地址字段A只置为0xFF。地址字段实际上并不起作用控制字段C通常置为0x03PPP是面向字节的,所有的PPP帧的长度都是整数字节PPP协议的帧格式PPP有一个2个字节的协议字段。–当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。–若为0xC021,则信息字段是PPP链路控制数据。–若为0x8021,则表示这是网络控制数据。IP数据报1211字节12不超过1500字节PPP帧先发送7EFF03FACFCSF7E协议信息部分首部尾部PPP透明传输问题当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充(和HDLC的做法一样)当PPP用在异步传输时,就使用一种特殊的字符填充法PPP字符填充法将信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)若信息字段中出现一个0x7D的字节,则将其变成为2字节序列(0x7D,0x5D)若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变不提供使用序号和确认的可靠传输PPP协议之所以不使用序号和确认机制是出于以下的考虑:–在数据链路层出现