#通信网络基础 2.1 组帧技术

目录

前言

2.1.1 面向字符的组帧技术

SLIP处理方式

PPP处理方式

总结

2.1.2 面向比特的组帧技术

比特插入技术

确定比特插入技术中Flag的长度

2.1.3 面向长度的组帧技术


前言

        在通信网络中,物理层为链路层提供比特传输通道。在高层分组传下来时如何识别分组的起止位置?是本节解决的主要问题。

        例如,如何确定下面这组数据的开始和结束位置。这就是组帧技术的工作,组帧技术主要分为三类,面向字符的组帧技术、面向比特的组帧技术以及面向长度的组帧技术。

2.1.1 面向字符的组帧技术

        在物理层传输的基本单位为一个字符时,通常使用这种组帧技术。在物理层有很多方式实现这字符的传输,例如可以采用RS-232C异步串行接口协议。

图1 协议传输示意图

        如图1 所示,该协议在传播每个字符(一个字符通常有8个比特构成)时在前后分别加上起始位和停止位以便区分。

        面向字符的组帧技术关键在于,使用特殊字符作为起止点。但这样做,在数据报文中出现了和标记起止点相同的字符的话就会出现错误,解决此问题的主要方法是利用转义字符

        Internet中常用的面向字符的组帧技术协议有SLIP(Serial Line Internet Protocol)PPP(Point-to-Point Protocol)

SLIP处理方式

        SLIP帧运载的是高层IP数据报。他在IP数据报的前后分别加上特殊字符END用于表示一帧的开始与结束。

图2 SLIP处理1—加入特殊帧标志开始结束

        这里END用十六进制COH表示。但这样则会带来问题,如果IP数据报里的内容含有C0,那么在接收端读到C0时也会停止,为了避免混淆报文中的数据和特殊字符,采用转义字符的方式,将数据报内容里的END转换为ESC(ESC用十六进制DBH表示,ESC-END用十六进制DCH表示)和ESC-END为什么不直接转换为ESC,同样是由于存在容易混淆的情况)。同理若数据报内容中含有ESC,则将其转换为ESC和ESC-ESC(ESC-ESC用十六进制DDH表示)。下面给出发送端处理是示意图。

图3 SLIP协议的帧格式

         经过这样的处理,在发送端接收时就会方便很多。如果发送端接收到END字符就表示一帧 的开始和结束。如果接收到ESC字符就代表需要进行字符转换,而转换的方式是根据后面的字符决定。

PPP处理方式

        有了SLIP处理方式的基础,PPP协议的处理方式基本相似,下面直接给出PPP的帧格式。

图4 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。

图5 比特插入技术

        在发送端首先在需要发送的一帧数据前后插入连续6个1表示一帧的开始和结束,并且每隔连续的5个1后便插入一个0。

        在接收端,收到连续的6个1后便知道一帧的开始和结束,在连续的5个1后便删除一个0,便可以恢复原始数据。

        这种方式优点:①灵活性高,数据传输以比特为单位②开销小,效率高③还有其他的作用,例如利用多个连续的1表示其他的需求,连续8个1表示要丢弃一帧或终止;连续的15个1表示信道空闲等。

        为什么不能在连续的j-1个1后通过看后面是1还是0来决定是否插入0呢?

        在接收端处理时无法判断这个0是本来就有的,还是通过比特插入技术新增的。

确定比特插入技术中Flag的长度

        面向比特的组帧技术关键问题在于,如何确定Flag的长度,确保开销最小。

        对于采用01^{j}(连续j个1)表示一帧的开始和结束,原始数据长度为k,开销最小的j值为:

j = Int[\log _{2}^{}k]

        Int表示向下取整。

        例如当k取1000时,最佳的j为9。

2.1.3 面向长度的组帧技术

        面向长度的组帧技术,利用帧长度来表示一帧的开始和结束,下图为采用长度技术的组帧技术示意图:

图6 采用长度的组帧技术

         若最大长度为k^{_{max}},则长度域的比特数至少为:

Int[\log _{2}^{}k^{_{max}}]+1

         但相较于,前两种组帧技术,面向长度的组帧技术通常使用较少。主要原因在于,若长度域出现了错误,则不仅影响本帧的接收,后面帧的接收也将发生错误

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值