4.3.2 网络接口层协议

4.3.2 网络接口层协议

由上述可知,TCP/IP参考模型的网络接口层对应OSI参考模型的物理层和数据链路层,所以TCP/IP参考模型的网络接口层协议包括物理层协议和数据链路层协议。物理层协议即4.2.2小节介绍的OSI参考模型的物理层协议;在Internet中广泛使用的数据链路层协议有SLIP、PPP和PPPoE等。

·串行线路IP(SLIP)是1984年提出的,由于缺点较多,难以普及。

·点对点协议(Point-to-Point Protocol,PPP)是IETF于1992年制定的,经过两次修订,在1994年已经成为Internet的正式标准(RFC 1661),它是一种目前用得比较多的数据链路层协议。

·PPPoE通过把以太网和点对点协议(PPP)的可扩展性及管理控制功能结合在一起(它基于两种广泛采用的标准:以太网标准和PPP),实现对用户的接入认证和计费等功能。采用PPPoE,用户以虚拟拨号方式接入宽带接入服务器,通过用户名密码验证后才能得到IP地址并连接网络。

下面重点介绍PPP。

1.PPP的作用

PPP是TCP/IP协议包的一个成员,是TCP/IP协议的扩展,它可以通过串行接口传输IP数据报。用户使用拨号电话线接入Internet时,用户到ISP(Internet服务提供商)的链路一般都使用PPP,如图4-13所示。

图4-13 用户到ISP的链路使用PPP

2.PPP的特点

与OSI参考模型中数据链路层广泛采用的高级数据链路控制规程(HDLC)不同,PPP具有以下几个特点。

(1)简单

在IP网络体系结构中,把保证可靠传输、流量控制等最复杂的部分放在TCP中,IP则非常简单,它提供的是不可靠、无连接的IP数据报传送服务,因此数据链路层没有必要提供比IP更多的功能。所以采用PPP时,数据链路层检错,但不再纠错和流量控制,PPP帧也不需要序号。

(2)保证透明传输

与HDLC相同的是,PPP也可以保证数据传输的透明性(具体措施后述)。

(3)支持多种网络层协议

PPP能够在同一条物理链路上同时支持多种网络层协议(如IP、IPX等,IPX是指互联网分组交换协议,提供分组寻址和选择路由的功能,保证可靠到达)。

(4)支持多种类型链路

PPP能够在多种类型的链路上运行,即可以采用串行或并行传输、可以同步或异步传输、可以低速或高速传输、可以利用电或光信号传输等。

但是值得强调的是,PPP只支持点对点的链路通信,不支持多点链路,而且只支持全双工链路。

(5)设置最大传送单元(MTU)

PPP对每一种类型的点对点链路设置了最大传送单元(MTU)的标准默认值(MTU指数据部分的最大长度,其默认值至少是1 500字节),若高层的协议数据单元超过MTU的值,PPP就要丢弃此协议数据单元,并返回差错。

(6)网络层地址协商

PPP提供了一种机制,使通信的两个网络层的实体通过协商知道或能够配置彼此的网络层地址(如IP地址),可以保证网络层能够传送数据报。

(7)可以检测连接状态

PPP能够及时自动检测出链路是否处于正常工作状态。

3.PPP的组成

PPP有以下3个组成部分。

(1)一个将IP数据报封装到串行链路PPP帧的方法

PPP既支持异步链路,也支持面向比特的同步链路,IP数据报放在PPP帧的信息部分。

(2)一套链路控制协议(Link Control Protocol,LCP)

LCP用来建立、配置、测试和释放数据链路连接。

(3)一套网络控制协议(Network Control Protocol,NCP)

NCP用来建立、释放网络层连接,并分配给接入ISP的PC的IP地址。由于PPP能够在同一条物理链路上同时支持多种网络层协议,因此对应有一套NCP,其中的每一个NCP支持不同的网络层协议。

4.PPP帧格式

PPP帧格式与HDLC帧格式相似,如图4-14所示。

图4-14 PPP帧格式

PPP帧格式(帧结构)各字段的作用如下。

(1)标志字段F(01111110)

F表示一帧的开始和结束。PPP规定连续两帧之间只需要用一个标志字段,它既可表示上一个帧的开始,又可表示下一个帧的结束。

PPP与HDLC一样要保证透明传输,具体措施如下。

当PPP用在同步传输链路时,透明传输的措施与HDLC的一样,即“0”插入和删除技术。具体是在发送端将数据信息和控制信息组成帧后,检查两个F之间的字段,若有5个连“1”就在第5个“1”之后插入一个“0”。在接收端根据F识别出一个帧的开始和结束后,对接收帧的比特序列进行检查,当发现起始标志和结束标志之间的比特序列中有连续5个“1”时,自动将其后的“0”删去。

当PPP用于异步传输时,就使用一种特殊的字节填充法。字节填充是在FCS计算完后进行的,在发送端把除标志字段以外的其他字段中出现的标志字节0x7E(即01111110)置换成双字节序列0x7D、0x5E;若其他字段中出现一个0x7D字节,则将其转变成为双字节序列(0x7D,0x5D)等。接收端完成相反的变换。

(2)地址字段A(11111111)

由于PPP只能用在点到点的链路上,没有寻址的必要,因此把地址域设为“全站点地址”,即二进制序列11111111,表示所有的站都接受这个帧(其实这个字段无意义)。

(3)控制字段C(00000011)

PPP帧的控制字段不使用编号,用00000011表示。

PPP帧不使用编号是因为PPP不使用序号和确认机制,这主要出于以下的考虑:

·在数据链路层出现差错的概率不大时,使用比较简单的PPP较为合理;

·在Internet环境下,PPP的信息字段放入的是IP数据报,数据链路层的可靠传输并不能够保证网络层的传输也是可靠的;

·帧检验序列(FCS)字段可保证无差错接收。

(4)协议字段(2字节)

PPP帧与HDLC帧不同的是多了2个字节的协议字段。当协议字段为0x0021时,表示信息字段是IP数据报;当协议字段为0xC021时,表示信息字段是链路控制数据;当协议字段为0x8021时,表示信息字段是网络控制数据。

(5)信息字段

信息字段长度是可变的,但应是整数个字节且最长不超过1 500字节。

(6)帧校验序列(FCS)字段(2字节)

FCS是对整个帧进行差错校验的,其校验的范围是地址字段、控制字段、信息字段和FCS本身,但不包括为了透明传输而填充的某些比特和字节等。

5.PPP的工作过程

PPP的工作过程如下。

(a)当用户拨号接入ISP时,路由器对拨号做出确认,并建立一条物理连接。

(b)PC向路由器发送一系列的LCP分组(封装成多个PPP帧),路由器向PC返回响应分组(LCP分组及其响应选择一些PPP参数),此时建立起LCP连接。

(c)NCP给新接入的PC分配一个临时的IP地址,使PC成为Internet上的一个主机,且建立网络层连接。

(d)通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址;接着LCP释放数据链路层连接;最后释放的是物理层的连接。