数据链路层之服务与成帧
服务:
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.物理层编码违禁法
方法:物理层比特编码成信号通常会加些冗余,意味着一些信号不表示数据。可以利用这些非数据信号来表示帧边界,实际上,采用“编码违法”来区分帧的边界。