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.物理层编码违禁法

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

  • 相关阅读:
    NetCore
    OAuth授权
    Vue混入:全局混入
    Vue作用域插槽:用作循环结构的模版
    Vue作用域插槽:基本用法
    Effect Hook
    State Hook
    表单组件中state依赖props
    Vue自定义指令
    Vue访问子组件实例或子元素
  • 原文地址:https://www.cnblogs.com/jiu0821/p/7414524.html
Copyright © 2011-2022 走看看