下面的规则描述了SLIP协议定义的帧格式:
1) IP数据报以一个称作END(0xC0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符(如果有线路噪声,那么END字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
2) 如果I P报文中某个字符为END,那么就要连续传输两个字节ESC,ESC_END(0XDB,0xDC)来取代它。
0xDB这个特殊字符被称作SLIP的ESC字符,但是它的值与ASCII码的ESC字符(0x1B)不同。
3) 如果IP报文中某个字符为SLIP的ESC字符,那么就要连续传输两个字节ESC,ESC_ESC(0xDB,0xDD)来取代它。
SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:
1) 每一端必须知道对方的I P地址。没有办法把本端的I P地址通知给另一端。
2)数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
3 ) SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的CRC就显得很重要。
网友评论