zoukankan      html  css  js  c++  java
  • 数据链路层之服务与成帧

    服务:

    1.无确认的无连接服务

    2.有确认的无连接服务

    3.有确认的有连接服务

    成帧:

    通常的做法是,将比特流拆分成多个离散的帧,为每个帧计算一个称为校验和的短令牌,并将该校验和和放在帧中一起传输。接收方同样计算校验和,核对。

    拆分比特流,有以下方法:

    1.字节计数法

    方法:每个帧第一字节标识帧的大小。以此确定帧的边界。

    缺点:一旦首字节损坏,找不到下一个帧,方法失效。

    应用:很少用到。

    2.字节填充的标志字节法

    方法:每个帧采用一些特殊的字节作为帧的开始和结束边界,这些字节称为标志字节FLAG(如同c语言里字符串的结尾0)。考虑到这些字节可能出现在数据中,需要额外的转义字节ESC,与c语言类似,构成【ESC FLAG】。当然,数据中遇到转义字节,也要进行转义【ESC ESC】。这些FLAG和ESC都属于额外填充的字节,故而帧大小不确定。

    缺点:只能使用8bit的字节;帧大小不定。

    应用:PPP协议

    3.比特填充的标志比特法

    方法:帧的划分可以在bit级完成。每个帧采用一个特殊字节,作为边界,它是01111110或0x7E标记。帧的大小是任意大小bit数,而不一定是8的倍数(不完整字节)。发送方在数据里每遇到5个连续的1,就填充一个0。如果数据中有标志字节01111110,会被填充后成为011111010。故而保证标志字节是唯一的,只能出现在边界。

    缺点:帧大小不定。

    应用:USB(通用串行总线),以太网,802.11(实际使用中,FLAG并不是一个字节)

    4.物理层编码违禁法

    方法:物理层比特编码成信号通常会加些冗余,意味着一些信号不表示数据。可以利用这些非数据信号来表示帧边界,实际上,采用“编码违法”来区分帧的边界。

  • 相关阅读:
    理解BSTR数据类型 神奇的BSTR
    char *
    _variant_t和_bstr_t
    数据库中创建表(包括创建主键,外键,非空列,唯一)
    使用ADO实现BLOB数据的存取 -- ADO开发实践之二
    sql server 2005 修改动态端口,连接字符串为:需要改成:IP地址+逗号+端口号才行
    Bilateral Filtering(双边滤波) for SSAO
    关于在Arduino中调用DS1302模块
    关于电机驱动扩展板 L293D 马达板Arduino
    Arduino教程资料汇总(8月22日悄悄跟新了一下)
  • 原文地址:https://www.cnblogs.com/jiu0821/p/7414524.html
Copyright © 2011-2022 走看看