《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层1/169第3章数据链路层定义和功能数据帧的组成可靠性传输数据链路层示例《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层2/169为网络层提供一个较好的服务接口定义一个合适的传输差错率对传输的数据流进行管理,以免快速的发送淹没慢速的接收端数据链路层的定义数据链路层的上层是网络层,数据链路层将借助于物理层为网络层提供服务数据链路层的协议数据单元(PDU)是帧《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层3/169数据链路层的功能数据链路层的任务是把网络层的数字数据组合成帧,并加上一定的校验码后交物理层物理层用不同的信号表示二进制数据位,从而把帧用一段连续的信号串表示并传送到目的主机通过目的主机的物理层和数据链路层送到网络层,也就是为源和目的主机的网络层之间提供一条可靠的数据链路《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层4/169相连、物理链路和数据链路所谓相连,可以理解为物理介质的连接,但当采用多路复用技术时也可以是信道的连接,其特征为:所传输的数据是按序的物理链路:一段无源的点到点的物理连接,中间没有任何交换节点数据链路:包括一条物理连接和为实现数据传输而在两端配置的硬件及其相关的通信协议《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层5/169数据链路层服务的区分规则数据链路层的服务是通过有无连接、有无确认来区分的无确认无连接的服务有确认无连接的服务有确认有连接的服务《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层6/169确认和连接确认:接收方在收到数据帧后,必须给发送方发回一个确认面向连接:发送方和接收方在传输数据之前必须建立一条数据链路,传输结束后必须释放该链路《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层7/169数据链路层的服务无确认无连接的服务有确认无连接的服务有确认有连接的服务《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层8/169无确认面向无连接的服务无确认是指接收方在收到数据帧后,毋需发回一个确认无连接的服务是指在数据传输前毋需建立数据链路物理线路的连接并非意味着提供了有连接的服务无确认并非不可靠,其可靠性可由上层负责例如:局域网1.共享信道不需要、也不允许建立连接2.信道较为理想,数据传输的误码率很低3.即使出错或丢失由上层负责恢复《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层9/169数据链路层的服务无确认无连接的服务有确认无连接的服务有确认有连接的服务《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层10/169有确认面向无连接的服务使用前不建立连接,即不建立数据链路,但每帧传输必须得到确认这在信号传播延时较大、线路状态不一定很可靠的情况下是有效的例如:无线通信1.如建立连接,则信道使用率很低2.然而,由于数据传输的误码率相对较高,所以确认是必要的《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层11/169数据链路层的服务无确认无连接的服务有确认无连接的服务有确认有连接的服务《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层12/169有确认的面向连接服务使用前先建立连接,即先建立数据链路,并且每帧的传输必须得到确认有连接的服务必须在使用前先建立连接(即建立数据链路),然后使用,最后释放连接例如:电话1.电话是一种实时的应用,如不是面向连接,则实时性难以得到保证2.电话是一对一的、双向的数据传输《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层13/169数据的可靠传输将传输的信息组合成帧校验和重发流量控制保证直接相连的两台主机的可靠性传输《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层14/169第3章数据链路层定义和功能数据帧的组成可靠性传输数据链路层示例《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层15/169数据帧的组成字符计数法带字符填充的首尾界符法带位填充的首尾标志法物理层编码违例法帧的组成必须保证能识别一个完整的帧,并保证一旦出现传输差错而导致前一个帧丢失时,也必须能识别后一个帧,即具有帧再同步能力《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层16/169字符计数法假设帧的长度用一个字节表示,并作为帧的头部一旦帧长度计数被误读,将无法再同步,所以不能采用第1帧第2帧帧长度计数错帧长度计数第1帧第4帧第3帧第2帧5123456789801234568789012351234767898012345687890123TnbmP188Fig.3-4字符计数成帧法《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层17/169数据帧的组成字符计数法带字符填充的首尾界符法带位填充的首尾标志法物理层编码违例法帧的组成必须保证能识别一个完整的帧,并保证一旦出现传输差错而导致前一个帧丢失时,也必须能识别下一个帧,即具有帧再同步能力《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层18/169带字符填充的首尾界符法用特殊的字符作为帧头和帧尾界符FLAGHeaderPayloadfieldTrailerFLAG这是一种面向字符的帧格式,所传输的数据都是字符(ASCII或EBCDIC字符),但帧中不允许出现帧界符标志,在面向字符的串型通信中常使用这种格式(PPP)接收方一旦丢失了一个FLAG,只要继续搜索下一个FLAG,就可重新确定帧边界,即具有再同步能力TnbmP189Fig.3-5(a)由Flag标志的一个帧《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层19/169面向字符的帧格式面向字符的帧格式不适宜传输数据中包含二进制数的帧,因为在包含二进制数的帧中很可能出现与FLAG相同的bit序列(通常FLAG用ASCII字符7EH定义)一种方法是在二进制数中偶然出现的FLAG前再插入一个ESC(ASCII字符1BH),这种方法称为字符填充法41337E5C4B0C41331B5C4B0C41331B7E5C4B0C41331B1B5C4B0C41331B7E5C4B0C41331B1B5C4B0C41331B1B1B7E5C4B0C41331B1B1B1B5C4B0C《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层20/169数据帧的组成字符计数法带字符填充的首尾界符法带位填充的首尾标志法物理层编码违例法帧的组成必须保证能识别一个完整的帧,并保证一旦出现传输差错而导致前一个帧丢失时,也必须能识别下一个帧,即具有帧再同步能力《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层21/169带位填充的首尾标志法在面向二进制位的同步串行通信中常使用带位填充的首尾标志格式,如HDLC这是一种面向二进制位的帧格式,把所有需传输的数据(不论是字符或表示一个浮点数的二进制位串,还是一个MP3的文件)一字排开,并以特殊的位模式01111110作为帧标志,即一个帧的开始(同时标志前一个帧的结束)如果由于干扰,一个帧标志没有被正确接收,则继续扫描接收串,一旦扫描到01111110,即新的一帧从此开始,即具有再同步能力即使字符也并非都是8位的,东方文字是16位,UNICODE是16位《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层22/169面向bit的帧格式当帧中出现一个与帧标志相同的位串01111110,则在连续5个1后自动插入一个0,即变成01111101,接收方将自动删除第5个1后的0这称为位插入法,也称为透明传输011011111111111111110010011011111011111011111010010011011111111111111110010TnbmP190Fig.3-6(a)(b)(c)位插入法示例《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层23/169数据帧的组成字符计数法带字符填充的首尾界符法带位填充的首尾标志法物理层编码违例法帧的组成必须保证能识别一个完整的帧,并保证一旦出现传输差错而导致前一个帧丢失时,也必须能识别下一个帧,即具有帧再同步能力《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层24/169物理层编码违例法在曼切斯特编码中,连续高电平或连续低电平可用作帧界符采用冗余编码技术,如曼切斯特编码,即对连续两个信号进行采样,可得到一个二进制位数据0:低-高电平对数据1:高-低电平对高-高电平对和低-低电平对没有使用,如在二进制编码中出现则称为编码违例,但这两种违例编码正好可用作帧界符,在令牌环网中使用编码违例格式《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层25/169第3章数据链路层定义和功能数据帧的组成可靠性传输数据链路层示例《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层26/169可靠性传输差错控制:校验、重发和序号避免帧错误的保证:帧的校验避免帧丢失的保证:超时和重发避免帧重复的保证:帧有序号流量控制:窗口协议发送方和接收方之间传输速率的协调协议描述和验证《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层27/169差错控制确认数据帧丢失重复帧如何保证数据帧的正常传输,将通过三种手段处理三种可能出现的情况:《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层28/169确认接收方在收到了正确的帧后向发送方发肯定性确认;如收到的帧有问题,则发否定性确认,此时发送方将重发此帧确认的前提是必须经过差错检测《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层29/169差错检测和校正差错的产生主要是在传输时,数据中的一位或几位因噪声干扰而出错噪声分两种:信道所固有的、持续存在的热噪声外界突发原因而造成的随机的冲击噪声通常接收方应能检错,甚至纠错纠错码是除m个数据位外增加r个冗余位作为纠错位,传输的总长度为n=m+r《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层30/169纠错码和检错码纠错码:海明(Hamming)码检错码:校验和(CheckSum)块校验码(BlockCheckCode)循环冗余检错码CRC(CyclicRedundancyCheck)《ComputerNetworksv4》cs.sjtu2019/8/11第3章数据链路层31/169海明(Hamming)纠错码m个数据位外加r个纠错位,在2i(i=0,1,2,3…)的位置放的是纠错位,m个数据位的次序不变,如字符m的7位ASCII码为1101101,要加上4位纠错码0011(偶校验),共11个bit1110987654321A7A6A5P4A4A3A2P3A1P2P111001100111《ComputerNe