串行网络通信协议SLIP、C-SLIP、PPP详解

SLIP、C-SLIP、和PPP都是用于网络通信中的协议,在OSI七层模型中属于数据链路层(如下图)。它们的主要功能是提供在两个设备之间传输数据包的方式,通常用于点对点的通信,如串行连接或拨号连接。尽管这些协议在今天的互联网连接中已经逐渐被更现代的技术所替代,但它们仍然在某些特定环境中起到了重要作用。下面详细介绍这三个协议的功能和特点:

1. SLIP(Serial Line Internet Protocol)

SLIP 是一种非常简单的串行线路协议,最早用于通过串行端口(如RS-232串行端口)连接到互联网。它的主要目的是通过串行线路传输IP数据包。

基本功能:

SLIP的作用是将IP数据包封装为串行数据流,并通过串行连接进行传输。

它没有复杂的错误检测和纠正机制,设计上比较简洁,因此效率较高,但也存在可靠性差的缺点。

工作原理:

SLIP串行线路网络协议是一种常用的链路层通信协议,规定了帧头、帧尾,在帧头帧尾之间如果出现帧头或帧尾字符,则按照一定的规则进行替换,保证发送方在帧头、帧尾间不会出现帧头、帧尾对应的字符。

SLIP协议如图1所示,在用户信息帧的帧头和帧尾加上0xC0,若用户信息帧中出现0xC0,则以连续两个字符0xDB和0xDC取代,将0xDB用两个连续字符0xDB和0xDD取代。接收方收到第1个0xC0作为数据的帧头,第2个0xC0作为数据的帧尾,再按照替换规则将有效数据还原。

然而,SLIP没有定义任何错误检测或纠错机制,所以如果数据包在传输过程中出现错误,它不会自动进行重传。

缺点:

没有错误检测:SLIP协议本身不包含错误检测或纠错机制,这意味着如果数据包在传输过程中丢失或损坏,就无法自动恢复。

不支持多种网络协议:SLIP仅支持IP协议,不能直接处理其他类型的协议(如ARP)。

没有流量控制:它不提供对数据流量的控制,因此可能会导致数据丢失或传输冲突。

2.C-SLIP(Compressed SLIP)

C-SLIP 是对SLIP的改进,它通过对数据进行压缩来提高效率,从而减少了传输过程中所需的带宽。

基本功能:

C-SLIP使用与SLIP相同的基本结构和操作原理,但它引入了对IP地址和端口的压缩处理,以节省带宽。

它通过去除重复的头信息(如IP地址)来减少每个数据包的大小,从而提高了数据传输的效率。

工作原理:

C-SLIP使用一种压缩技术,减少了IP数据包的冗余部分。特别是对于一些静态的、频繁使用的IP地址,它通过简化其表示来减少所需的字节数。

尽管如此,C-SLIP仍然是一个相对简化的协议,没有提供诸如错误检测、流量控制或多协议支持等功能。

优势与局限性:

优势:C-SLIP提高了数据传输的效率,尤其是在带宽受限的情况下,能够显著减少所需的传输带宽。

3. PPP(Point-to-Point Protocol)

PPP(点对点协议)是一种更为先进和灵活的协议,广泛用于各种串行连接(如拨号上网、DSL、ISDN、甚至VPN连接等)。PPP提供了对SLIP和C-SLIP的多项改进,是一个功能更全、可靠性更强的协议。

PPP协议的报文封装格式如图所示

PPP数据帧首部有4个字段,尾部有2个字段。这其中首部里的第1个字段与尾部的最后1个字段都表示Flag(标志)字段,标志字段的作用可以判断一个物理帧的开始与结束,因此也称之为帧的定界符,并且它的值在相关标准文档中被规定为0x7E的固定值且不能更改。PPP帧首部中的Address Filed(地址域)字段的值也被规定为0xFF。同样的,标准文档中还规定了Control Field(控制域)字段的值固定为0x03。标志字段、地址字段、控制字段都是1个字节宽度的协议字段。尾部中的FCS字段宽度也是2个字节,它的值表示使用帧校验序列CRC。

PPP帧首部中第4个字段表示占2个字节宽度的Protocol(协议域)字段。在PPP帧里Information(信息)字段封装的不同类型的协议报文就是靠协议域不同取值来区
分的,也体现出PPP报文的多样性。对于信息域字段来说,它的内容则为PPP报文的
主体,其长度是可变的,并不是一个固定值,不过最大长度不能超过1500字节。规定
Protocol协议字段的低字节最低比特位值为1,高字节最低比特位值为0,0xXXXX~0x3XXX区间取值表示网络层协议,0x8XXX~0xBXXX区间取值表示网络层
控制协议,0xCXXX~0xFXXX区间取值表示链路层控制协议。目前常见取值及其表示
协议如表所示。

当信息字段中Code字段不同取值,表示此报文为PPP的LCP或IPCP等不同协商报文,如当Protocol协议域字段值为0xC021,如果是LCP协商的Configure-Request报文则Code为0x01,如果是LCP协商的Configure-Ack报文则Code为0x02。Identifier字段用于区分不同的协商报文,代表报文号;协商报文从Code字段到Data字段所占用总字节长度用Length字段表示。协商报文里携带着不同协商选项,这些协商内容用Data字段表示,其具体封装格式按照type、length、data的顺序标识协商选项。
从PPP链路协商到链路建立、对链路进行维护以及拆除链路,协商链路运行的网络层协议,用户认证,都是PPP提供的完整方案。PPP协议包括LCP、NCP(Network Control Protocol,网络控制协议)和认证协议。PAP(Password Authentication Protocol,也就是密码验证协议)和CHAP(Challenge-Handshake Authentication Protocol,也就是挑战握手验证协议)是最常用的两种认证协议。这其中,LCP负责创链、维护PPP链路或者将一次物理连接终止。NCP则不同,它是一族协议,它的作用是解决物理链路中运行哪一种网络协议。对于IP网络而言,会选用IPCP协议(IP Control Protocol,也就是IP控制协议)且进行网络参数的协商,如果针对的是IPX网络,则会进行IPX网络参数的协商。

一次完整的PPP会话由5个阶段组成,它们分别是Dead(链路死亡阶段)、Establish(链路创建阶段)、Authenticate(用户认证阶段)、Network(网络层参数协商阶段)和Terminate(链路终止阶段)。PPP链路建立过程必然会伴随状态变化,详细状态转换如图所示。

(1)链路死亡阶段
PPP链路的起点和终点给我们呈现出的均为Dead状态,此时表明链路不可用。当有外部事件(比如物理层开启)表明物理层已经准备就绪,PPP的状态会由Dead态转换Establish态,开始进行链路的创建,并且将事件UP信号报告给LCP自动机器。
(2)PPP链路创建阶段
LCP关于链路的参数协商的整个过程在创建阶段进行。想要建立链路连接的两端设备,这时会通过LCP分别向对端发送关于配置信息的报文(Configure-Request Packet),此报文里主要包括魔术字、最大接收单元、认证协议等链路属性的协商。对方收到这个报文且能够接受该请求报文里的协商选项,会对相应协商内容进行确认并回复Configure-Ack Packet报文。只有链路两端的设备均进行此协商交互,表明双方已经就协商选项达成了一致,也就完成了LCP的交换,进入LCP opened的状态。

(3)用户认证阶段
在这个阶段中,链路一端需要把自己的身份信息发送至另一端对其身份进行认证。如果身份认证未通过,则会直接从这个阶段跃迁至Terminate链路终止阶段。在身份认证结束之前,是禁止从此阶段直接前进到下一阶段协商,也就是网络层协商。

(4)网络层参数协商阶段
用户认证通过后就进行网络层协议的参数协商,此阶段的协商跟LCP协商流程类
似,只是NCP阶段协商的是关于网络层协议的参数选项。不同的网络层协议由不同的
网络控制协议进行协商。协商通过之后,链路会生成UP事件信号并上报,进入opened
状态。接着在这个阶段就能向拨入的客户端分配IP地址。
完成上述4个阶段后,在验证方和被验证方之间建立起一条完整的PPP链路。
(5)链路终止阶段
PPP 协议规定在链路建立后的任意时间都可以终止链路。PPP链路的终止由LCP负责处理,互相发送Terminate Packets(链路终止报文)并生成LCP DOWN事件信号,关闭这条链路。引起链路终止的原因有管理员人为关闭链路、认证失败等。链路拆除后PPP又将回到Dead状态。


  PPP协议的简单完整、支持地址分配、用户认证等优点使得其应用非常广泛。由
它衍生出来的运行在以太网上的 PPPoE 协议宽带拨号,也因此成为目前最受欢迎的宽
带接入方式之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值