第3章数据链路层•数据链路层基本概念•点对点协议PPP•局域网数据通信与计算机网络wenzhanSchoolofCommunicationEngineering,CUIT2两种类型的数据链路层点对点信道一对一的通信。常用协议:PPP,PPPoE,HDLC……广播信道一对多的广播通信。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据收发。常用协议:Ethernet,802.11……wenzhanSchoolofCommunicationEngineering,CUIT3数据链路层的基本概念wenzhanSchoolofCommunicationEngineering,CUIT43.1数据链路层的基本概念链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。一条链路只是一条通路的一个组成部分。数据链路(datalink)除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。wenzhanSchoolofCommunicationEngineering,CUIT5数据链路层像个数字管道常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。早期的数据通信协议曾叫作通信规程(procedure)。因此在数据链路层,规程和协议是同义语。结点结点帧帧wenzhanSchoolofCommunicationEngineering,CUIT6数据链路层的简单模型局域网广域网主机H1主机H2路由器R1路由器R2路由器R3电话网局域网主机H1向H2发送数据链路层应用层运输层网络层物理层链路层应用层运输层网络层物理层链路层网络层物理层链路层网络层物理层链路层网络层物理层R1R2R3H1H2从层次上来看数据的流动wenzhanSchoolofCommunicationEngineering,CUIT7数据链路层的简单模型(续)局域网广域网主机H1主机H2路由器R1路由器R2路由器R3电话网局域网主机H1向H2发送数据链路层应用层运输层网络层物理层链路层应用层运输层网络层物理层链路层网络层物理层链路层网络层物理层链路层网络层物理层R1R2R3H1H2仅从数据链路层观察帧的流动PPPoEEthernetPOSFDDIwenzhanSchoolofCommunicationEngineering,CUIT8数据链路层功能数据链路层主机A缓存主机B数据链路AP2AP1缓存发送方接收方帧高层帧A的数据链路层把网络层交下来的IP数据报封装成帧;A把封装好的帧发送给B的数据链路层;若B收到的帧无差错,则从帧中提取IP数据报,上交给网络层,否则丢弃此帧。wenzhanSchoolofCommunicationEngineering,CUIT93.2数据链路层的三个基本问题1.数据链路层的发送端应当让对方接收端的数据链路层知道,所发送的帧从什么地方开始和从什么地方结束。--帧定界2.数据链路层传送的数据的比特组合必须是不受限制的,不能禁止传送某种特殊的比特组合。--透明传输3.数据链路层必须有差错检测功能,当接收端检测出有差错的帧时,根据协议,可以有不同处理方法。--差错控制wenzhanSchoolofCommunicationEngineering,CUIT103.2.1帧定界(framing)帧定界是指确定帧的界限。数据一帧一帧地传送,当出现差错时,将有错的帧再重发一次,从而避免将全部数据都重传。帧的装配:在发送帧时,要在帧前后都加入事先商定好的标记,使得接收端在收到帧后,能根据标记识别帧的开始和结束。IP数据报帧首部帧的数据部分帧尾部=MTUwenzhanSchoolofCommunicationEngineering,CUIT11帧定界可以使用特殊的定界字符,如ASCII。如图:SOH帧的数据部分EOT帧定界也可以使用特殊的bit组合。如图:F=01111110FACFFCSI8bit88N168I3.2.1帧定界(framing)wenzhanSchoolofCommunicationEngineering,CUIT123.2.2透明传输透明传输:在两结点之间如何确定一个分组-帧的开始和结束?数据链路层传送的数据的比特组合必须是不受限制的,不能禁止传送某种特殊的比特组合。wenzhanSchoolofCommunicationEngineering,CUIT13解决透明传输问题方法:当数据中出现“SOH”或“EOT”时,就将其转换为另一字符,称字节插入(bytestuffing)。比特插入(bytestuffing)P94:在HDLC(PPP)帧中,当数据中出现连续5个1,即11111时,做插入0,以免数据中出现F=01111110,被接收方作为帧的结束。接收方在数据中每扫描到连续5个1,即11111时,便将其后的0删除。3.2.2透明传输wenzhanSchoolofCommunicationEngineering,CUIT143.2.3差错检测信息位(kbit)FCS(rbit)n=k+r1、接收方如何发现数据是否正确?2、冗余码解决–奇偶冗余码;3、检查错误和纠正错误4、在数据后面添加上的冗余码称为帧检验序列FCS(FrameCheckSequence)。差错控制:在两结点之间数据帧是可靠的吗?(无错误)wenzhanSchoolofCommunicationEngineering,CUIT15循环冗余校验CRC(CyclicRedundancyCheck)CRC的校验原理已知—个长度为k的二进制位串,为了检查它在传输中的错误,发送产生另一个r位二进制序列,称为校验序列,使得合成的k+r位二进制位串能够被某一个预定的二进制数(生成多项式)整除(按模2运算)。接收端收到k+r位位串以后,用这个预定的二进制数(生成多项式去除(模2运算),若能除尽,则无错误;若除不尽则有错误发生。信息位(kbit)FCS(rbit)n=k+rwenzhanSchoolofCommunicationEngineering,CUIT16模2运算模2加减:既不借位,也不进位,相同数相加减为0,不同数相加减为1,相当于异或。模2乘除:与一般乘除相同,采用模2加减,直到余数位数小于被除数为止。1001+110101001001-11010100wenzhanSchoolofCommunicationEngineering,CUIT17例:生成多项式g(x)=x5+x4+x2+1、信息位M=1010001101。求CRC的发送码组A解答步骤:1)求被除数2r*M(k+rbit)得1010001101000002)将生成多项式g(x)表示为除数1101013)作模2除法4)得商Q=1101010110(丢弃)余数R=01110(校验位)5)得到发送数据为2n*M(被除数)+R(商)即101000110101110循环冗余检验的原理说明wenzhanSchoolofCommunicationEngineering,CUIT181101010110←Q商除数P→110101101000110100000←2nM被除数11010111101111010111101011010111111011010110110011010111001011010101110←R余数循环冗余检验的原理说明wenzhanSchoolofCommunicationEngineering,CUIT19生成多项式g(x)在CRC循环检验编码中g(x)是事先确定的,要成为生成矩阵g(x)必须满足以下条件:(1)g(x)必须是常数项为1的(n-k)次多项式。(2)g(x)必须是不能在进行因式分解的多项式。(3)g(x)的最高次项次数必须为r(即CRC的监督位个数为g(x)的最高项次数)。例:g(x)=x4+x2+x1+1从而可以看出监督位个数r=4。10111循环冗余检验的原理说明wenzhanSchoolofCommunicationEngineering,CUIT20检错如果不出错,则接收端应该收到的数据为2n*M(被除数)+R(商),即101000110101110,将这个数据除以除数(生成多项式)110101(模2),得到的余数为0。如果数据出错,则在接收端进行以上运算后,一般不会得出余数为0的结果。注意,CRC只有检错功能,没有纠错功能。wenzhanSchoolofCommunicationEngineering,CUIT21课堂练习已知信息位M=10011,生成多项式G(x)=x4+x2+x+1,求M的CRC编码组A,并说明监督位的位数r。A=100111011r=4wenzhanSchoolofCommunicationEngineering,CUIT22作业P1053-073-08wenzhanSchoolofCommunicationEngineering,CUIT23数据链路层实例简介SDLCHDLCSLIPPPPPOS–PPPoverSDH/SonetPPPoE–PPPoverEthernetIBMISOIETFIETFwenzhanSchoolofCommunicationEngineering,CUIT24用户拨号入网的示意图-PPP实例路由器调制解调器调制解调器因特网服务提供者(ISP)用户家庭拨号电话线PPPoE连接至因特网…PC机wenzhanSchoolofCommunicationEngineering,CUIT25PPP协议1992年制订了PPP协议。经过1993年和1994年的修订,现在的PPP协议已成为因特网的正式标准[RFC1661]。PPP协议有三个组成部分一个将IP数据报封装到串行链路的方法。链路控制协议LCP(LinkControlProtocol)。网络控制协议NCP(NetworkControlProtocol)。wenzhanSchoolofCommunicationEngineering,CUIT26PPP协议的帧格式PPP有一个2个字节的协议字段当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。若为0xC021,则信息字段是PPP链路控制数据。若为0x8021,则表示这是网络控制数据。IP数据报1211字节12不超过1500字节PPP帧先发送7EFF03FACFCSF7E协议信息部分首部尾部wenzhanSchoolofCommunicationEngineering,CUIT27透明传输问题当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充(和HDLC的做法一样)。当PPP用在异步传输时,就使用一种特殊的字符填充法。wenzhanSchoolofCommunicationEngineering,CUIT28透明传输问题-零比特的填充与删除数据中某一段比特组合恰好出现和F字段一样的情况01001111110001010会被误认为是F字段发送端在5个连1之后填入0比特再发送出去填入0比特010011111010001010在接收端将5个连1之后的0比特删除,恢复原样在此位置删除填入的0比特010011111010001010wenzhanSchoolofCommunicationEngineering,CUIT29字符填充法将信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E)。若信息字段中出现一个0x7D的字节,则将其转变成为2字节序列(0x7D,0x5D)。若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变