在某些操作系统上,SLIP 驱动程序是用户空间程序;在 下,它是内核的一部分,这使其速度更快。 然而,这需要将串行线路显式地转换为 SLIP 模式。 这通过一种特殊的 tty 线路规程 SLIPDISC 来完成。 当 tty 处于正常线路规程 (DISC0) 时,它只会与用户进程交换数据,使用标准的 read(2) 和 write(2) 调用,并且 SLIP 驱动程序无法写入或读取 tty。 在 SLIPDISC 中,角色颠倒了:现在任何用户空间进程都被阻止写入或读取 tty,而所有在串行端口上进入的数据将直接传递给 SLIP 驱动程序。
SLIP 驱动程序本身理解 SLIP 协议的多种变体。 除了普通的 SLIP,它还理解 CSLIP,它对传出的 IP 数据包执行所谓的 Van Jacobson 报头压缩。 这显著提高了交互式会话的吞吐量。 此外,这些协议的每一种都有六位版本。
将串行线路转换为 SLIP 模式的一个简单方法是使用 slattach 工具。 假设您的调制解调器在 /dev/cua3 上,并且已成功登录到 SLIP 服务器。 然后您将执行
# slattach /dev/cua3 &这将把 cua3 的线路规程切换到 SLIPDISC,并将其附加到其中一个 SLIP 网络接口。 如果这是您的第一个活动 SLIP 链路,则该线路将附加到 sl0; 第二个将附加到 sl1,依此类推。 当前内核最多支持八个并发 SLIP 链路。
slattach 选择的默认封装是 CSLIP。 您可以使用 -p 开关选择任何其他模式。 要使用普通 SLIP(无压缩),您将使用
# slattach -p slip /dev/cua3 &其他模式包括 cslip、slip6、cslip6(用于 SLIP 的六位版本)和 adaptive(用于自适应 SLIP)。 后者让内核找出远程端使用的 SLIP 封装类型。
请注意,您必须使用与您的对端相同的封装。 例如,如果 cowslip 使用 CSLIP,您也必须这样做。 不匹配的症状是,对远程主机的 ping 将不会收到任何数据包返回。 如果另一台主机 ping 您,您还可能会在您的控制台上看到类似 “Can't build ICMP header” 的消息。 避免这些困难的一种方法是使用自适应 SLIP。
实际上,slattach 不仅允许您启用 SLIP,还允许启用其他也使用串行线路的协议,例如 PPP 或 KISS(火腿无线电爱好者使用的另一种协议)。 有关详细信息,请参阅 slattach(8) 手册页。
将线路交给 SLIP 驱动程序后,您必须配置网络接口。 同样,我们使用标准的 ifconfig 和 route 命令来完成此操作。 假设从 vlager,我们拨号连接到名为 cowslip 的服务器。 然后您将执行
# ifconfig sl0 vlager pointopoint cowslip # route add cowslip # route add default gw cowslip第一个命令将接口配置为到 cowslip 的点对点链路,而第二个和第三个命令添加了到 cowslip 的路由以及使用 cowslip 作为网关的默认路由。
当关闭 SLIP 链路时,您首先必须使用带有 del 选项的 route 命令删除所有通过 cowslip 的路由,关闭接口,并向 slattach 发送挂断信号。 之后,您必须再次使用您的终端程序挂断调制解调器
# route del default # route del cowslip # ifconfig sl0 down # kill -HUP 516