目录
前言
在通信网络中,物理层为链路层提供比特传输通道。在高层分组传下来时如何识别分组的起止位置?是本节解决的主要问题。
例如,如何确定下面这组数据的开始和结束位置。这就是组帧技术的工作,组帧技术主要分为三类,面向字符的组帧技术、面向比特的组帧技术以及面向长度的组帧技术。
2.1.1 面向字符的组帧技术
在物理层传输的基本单位为一个字符时,通常使用这种组帧技术。在物理层有很多方式实现这字符的传输,例如可以采用RS-232C异步串行接口协议。
如图1 所示,该协议在传播每个字符(一个字符通常有8个比特构成)时在前后分别加上起始位和停止位以便区分。
面向字符的组帧技术关键在于,使用特殊字符作为起止点。但这样做,在数据报文中出现了和标记起止点相同的字符的话就会出现错误,解决此问题的主要方法是利用转义字符。
Internet中常用的面向字符的组帧技术协议有SLIP(Serial Line Internet Protocol)和PPP(Point-to-Point Protocol)。
SLIP处理方式
SLIP帧运载的是高层IP数据报。他在IP数据报的前后分别加上特殊字符END用于表示一帧的开始与结束。
这里END用十六进制COH表示。但这样则会带来问题,如果IP数据报里的内容含有C0,那么在接收端读到C0时也会停止,为了避免混淆报文中的数据和特殊字符,采用转义字符的方式,将数据报内容里的END转换为ESC(ESC用十六进制DBH表示,ESC-END用十六进制DCH表示)和ESC-END(为什么不直接转换为ESC,同样是由于存在容易混淆的情况)。同理若数据报内容中含有ESC,则将其转换为ESC和ESC-ESC(ESC-ESC用十六进制DDH表示)。下面给出发送端处理是示意图。
经过这样的处理,在发送端接收时就会方便很多。如果发送端接收到END字符就表示一帧 的开始和结束。如果接收到ESC字符就代表需要进行字符转换,而转换的方式是根据后面的字符决定。
PPP处理方式
有了SLIP处理方式的基础,PPP协议的处理方式基本相似,下面直接给出PPP的帧格式。
PPP中,采用7EH作为一帧的开始/结束的标志(F),占有1个字符;A,C分别是地址域和控制域,采用固定值,一般FF表示广播,各自占有1个字符;协议域中,采用根据协议标志的值占用2个字符,来告知信息域中存放的内容,例如取0021H表示运载的是数据,取C021H表示运载的是链路层控制信息;信息域的大小一般不超过1500;FCS是校验域,占用一个字符;结尾F表示帧结束,占用1个字符。
在信息域中若存在7EH,则将其转换为5DH和5EH;若存在7DH,则将其转换为7DH和5DH。
总结
上述,讲了面向字符的组帧方式,这种方式的关键技术在采用转义字符,将信息域中的特殊字符的内容转为其他。
采用这种方式,效率较低,特别是在信息域中含特殊字符较多的情况;其次,信息长度必须以字节为单位,灵活性低。
优点是,采用帧结构处理时非常简单。
2.1.2 面向比特的组帧技术
在面向比特的组帧技术中,通常采用一个特殊的比特串(Flag),来表示一帧的开始结束。例如,采用连续的j个1表示一帧的正常开始和结束。同样若在比特流中存在相同的连续j个1该如何处理?面向比特的组帧技术关键的技术在于比特插入技术。核心思想是,在连续的j-1个1后插入一个0,下面给出这种方法的示意。
比特插入技术
用连续的6个1表示一帧的开始和结束,在数据流中若存在连续的5个1则在后面插入一个0。
在发送端首先在需要发送的一帧数据前后插入连续6个1表示一帧的开始和结束,并且每隔连续的5个1后便插入一个0。
在接收端,收到连续的6个1后便知道一帧的开始和结束,在连续的5个1后便删除一个0,便可以恢复原始数据。
这种方式优点:①灵活性高,数据传输以比特为单位②开销小,效率高③还有其他的作用,例如利用多个连续的1表示其他的需求,连续8个1表示要丢弃一帧或终止;连续的15个1表示信道空闲等。
为什么不能在连续的j-1个1后通过看后面是1还是0来决定是否插入0呢?
在接收端处理时无法判断这个0是本来就有的,还是通过比特插入技术新增的。
确定比特插入技术中Flag的长度
面向比特的组帧技术关键问题在于,如何确定Flag的长度,确保开销最小。
对于采用(连续j个1)表示一帧的开始和结束,原始数据长度为,开销最小的值为:
表示向下取整。
例如当取1000时,最佳的为9。
2.1.3 面向长度的组帧技术
面向长度的组帧技术,利用帧长度来表示一帧的开始和结束,下图为采用长度技术的组帧技术示意图:
若最大长度为,则长度域的比特数至少为:
但相较于,前两种组帧技术,面向长度的组帧技术通常使用较少。主要原因在于,若长度域出现了错误,则不仅影响本帧的接收,后面帧的接收也将发生错误。