SLIP协议
SLIP 的全称为 Serial Line IP(串行线路 IP)。它是一种对 IP 数据报进行封装的简单形式。
SLIP 协议规定的帧格式规则:
-
IP 数据报以一个称作 END(0xc0)的特殊字符结束。同时为了防止数据报传输之前的线路噪音被误认为是数据报内容,在数据报开始处添加一个 END 字符;
-
如果 IP 数据报中含有 END 字符,就连续传输 0xdb 和 0xdc 来取代它。0xdb 是 SLIP 的 ESC 字符,但它的值与 ASCⅡ码中的 ESC(0x1b)不同;
-
如果 IP 数据报中含有 ESC 字符,就连续传输 0xdb 和 0xdd 来取代它。
SLIP 的缺陷:
-
每一端必须知道对端的 IP 地址,没有办法把本端 IP 地址传递给对端;
-
数据帧中无类型字段,当一条串行线路使用 SLIP 时则不能使用其他协议;
-
SLIP 数据帧中无 checksum,只能依靠上层协议来发现和纠正错误。
PPP协议
PPP(点到点协议)是为在同等单元之间传输数据设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据。设计目的主要是用来通过 拨号或专线 方式建立 点对点 连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
点对点协议(PPP)为在点对点连接上传输多协议数据包提供了一个标准方法。PPP 最初设计是为两个对等节点之间的 IP 流量传输提供一种封装协议。在 TCP/IP 协议集中它是一种用来同步调制连接的数据链路层协议。
PPP 协议修改了 SLIP 协议中的缺陷,包括以下三个部分:
-
PPP 封装 IP 数据报既支持数据为 8 位和无奇偶校验的异步模式,又支持面向比特的同步链接;
-
通过 LCP(链路控制协议)允许双方进行协商;
-
通过 NCP(网络控制协议)允许双方在网络层上进行协商。
PPP 协议的字符规则与 SLIP 有所不同:
-
PPP 帧以标志字符 0x7e 开始和结束,紧接着是一个值为 0xff 的地址字节,然后是一个值为 0x03 的控制字节;
-
由于标志字符是 0x7e,当它出现在信息字段中时,需要连续传送 0x7d 和 0x5e 来替代它;
-
当在信息字段中遇到 0x7d 时,需要连续传送 0x7d 和 0x5d 来替代它。
-
默认情况下,如果字符的值小于 0x20,需要连续传送 0x7d 和 0x21 来替代它。
PPP 与 SLIP 相比具有下列优点:
-
PPP 支持在单根串行线路上运行多种网络层协议;
-
每一帧都有 CRC 校验;
-
通信双方可以用 NCP 进行 IP 地址的动态协商;
-
可以类似于 CSLIP 对 TCP 和 IP 首部进行压缩;
-
LCP 可以对多个数据链路选项进行设置。