2. 点到点信道的数据链路
2.1 点到点信道
(1)点到点信道是指一条链路上就一个发送端和一个接收端的信道,通常用在广域网链路。如两个路由器通过串口相连或家庭用户使用调制解调器通过电话线拨号连接ISP。
(2)早期通信线路质量差,在数据链路层使用可靠传输协议(HDLC,高级数据链路控制协议)。现在最广泛使用的是较为简单的PPP点到点协议。
2.2 PPP协议的特点
(1)简单:PPP协议不负责可靠传输、纠错和流量控制,也不需要给帧编号,接收端收到帧后就进行CRC检验。如果正确就收下,反之直接丢弃,其他什么也不做。
(2)封装成帧:每种数据链路层协议都是特定的帧定界符,用于接收端从收到的比特流中准确地找到帧开始和结束的位置。
(3)透明传输:保证数据传输的透明性。比如数据中碰巧出现了和帧定界符一样的比特组合时,要采取有效措施来解决。
(4)差错检测:通过检测技术将传输中出现差错的帧丢弃,以防止出错的帧被继续转发而白白浪费了网络资源。
(5)支持多种网络层协议:同一条物理链路上同时支持多种网络层协议(如IP和IPv6)。这意味着IP数据包和IPv6数据都可以封装在PPP帧中进行传输
(6)多种类型链路:能够在多种类型的链路上运行(如串行或并行、同步或异步、低速或高速、电或光等)
(7)检测连接状态:具有一种机制能够及时自动检测出链路是否处于正常工作状态。当出现故障的链路隔一段时间后又重新恢复正常时,就特别需要这种检测功能。
(8)最大传送单元:当高层协议发送的分组过长并超过MTU数据值,PPP就要丢弃这样的帧,并返回差错。(注意:MTU指的是帧的数据部分的最大长度,而不是帧的总长度)
(9)网络层地址协商:PPP协议提供一种机制使通信的两个网络层实体能够通过协商知道或配置彼此的网络层地址(如ADSL拨号上网,ISP给的是一个公网地址),这就是PPP协议的功能。
(10)数据压缩协商:提供一种协商使用数据压缩算法,但PPP协议并不要求将数据压缩算法进行标准化。
2.3 PPP协议的组成
(1)高级数据链路层控制协议:将IP数据报封装到串行链路的方法。既支持异步链路也支持同步链路。
(2)链路控制协议:用来建立、配置和测试数据链路的连接,通信的双方可协商一些选项。
(3)网络控制协议:支持不同的网络层协议,如IP、IPv6、DECnet以及AppleTalk等。
2.4 串行通信的同步传输和异步传输
(1)同步传输
①同步传输以数据帧为单位传输数据(注意每个数据帧的大小是不固定的!)。
②在短距离的高速传输中,时钟信号可由专门的时钟线路传输。双方按相同的时钟信号进行收发。
③计算机网络采取的同步方式,常将时钟信号(前同步码)植入数据信号帧中,以实现接收端与发送端的时钟同步。
(2)异步传输
①异步传输以字符为单位传输数据(注意:传输单位是固定的,如8比特为一个单位)
②异步传输,接收方是不知道数据什么时候会到达。因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据己经到达。在传输结束时,一个停止位表达该次传输的终止。当接收方收到停止位后,就一直处于空闲位(如高电平1),如果这时出现一个起始位(如高电平0)就表示应该开始接收数据。发送完一个字符,还会继续发送一个停止位,通知字符发送完毕并把信号切换为1,让接收方又进入等待的空闲状态。
③发送方需要将发送的帧拆分成以字符为单位进行传输,每个字符前加一个起始位,后有一位停止位,字符之间的时间间隔就是空闲位(大小不固定)。接收方收到陆续到来的字符,组装成一个完整的帧。
(3)同步传输和异步传输的区别
①异步传输是面向字符的传输,传输单位为字符。而同步传输是面向比特的传输,传输单位是帧。
②异步传输通过字符的开始码和停止码抓住再同步的机会,而同步传输则是从前同步码中抽取同步信息。
③异步传输每个字符中要多传递2比特信息,总传输负载量增加不小。其传输效率比同步传输效率低。异步传输对于那些数据传输量的高速设备来说,增加了不少传输量。因此,适合用于数据传输量较小的低速设备。
2.5 PPP协议帧格式
(1)帧开始和结束定界符均为(0x7E)。
(2)A字段为地址字段(值为0xFF),该字段没有源地址和目标地址,形同虚设。C字段为控制字段(值为0x03,具体的定义至今没给出)。
(3)FCS为2个字节的帧校验序列。
(4)信息部分的长度不超过1500字节。PPP是面向字节的,所有PPP帧的长度都是整数字节的倍数。
2.6 PPP帧填充方式
(1)异步传输使用字节填充
①在异步传输的链路上,数据传输以字节为单位,PPP帧的转义字符定为0x7D,并使用字节填充。
②把信息字段(即除开始和结束定界符外)中出现的每一个0x7E字节转变为2字节的(0x7D,0x5E)
③若信息字段中出现一个0x7D的字节(即出现了和转入字符一样的比特组合),则把0x7D转变为2字节序列(0x7D,0x5D)
(2)同步传输使用零比特填充
①在同步传输的链路上,数据传输以帧为单位,PPP协议采用零比特填充的方法来实现透明传输。(注意PPP协议帧定界符为0x7E,二进制为01111110,中间有连续的6个1)
②发送端先扫描整个信息字段(通常由硬件实现),只要发现有连接的5个1,则立即填入一个0。从而保证在信息字段中不会出现帧定界符(6个连续的1)
③接收端收到数据后,从确定一个帧的开始,接着扫描比特流,如果发现连续的5个1,就把其后的0删除,还原成原来的信息比特流。
2.7 抓包工具查看PPP的帧首部
(1)捕获PPP协议数据帧
①确保R1和R2路由器之间是通过PPP协议通信(可用show interfaces serial 2/0之类的命令查看,用encapsulation ppp命令设置为PPP协议)
②捕获R1至R2链路的PPP协议数据帧。
(2)通过抓包工具分析PPP帧
(3)说明
①抓包工具捕获的PPP帧中没有帧开始和结束符的原因:这些信息是用来给网卡定位帧的开始和结束的,收到后就可以直接去掉了,不需要保存。
②同理,FCS只是用来检测帧是否出现误码,当帧出错时网卡就直接扔掉该帧。一旦网卡接收了该帧,就表示没有错误,因此FCS也不需要保存。
③转义字符也会被删除后再提交给抓包工具,所以看不到插入的转义字符。