2.3.5  使用LCP建立链路

LCP操作包括链路建立、链路维护和链路终止。

1.LCP操作

LCP使用3种LCP帧来完成每个LCP阶段的工作。

链路建立帧(Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject)用于建立和配置链路。

链路维护帧(Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request)用于管理和调试链路。

链路终止帧(Terminate-Request和Terminate-Ack)用于终止链路。

图2.28说明了LCP链路建立过程。LCP操作的第一阶段是建立链路,要交换网络层分组,必须先完成该阶段。在链路建立过程中,LCP打开连接并协商配置参数。

使用LCP建立链路_ppp协议 
图2.28  建立链路

链路建立过程的第一步是发起设备向响应方发送Configure-Request帧。Configure-Request帧包含需要给链路设置的各种配置选项。换句话说,发起方向响应方发送一个"愿望清单(wish list)"。

发起方的愿望清单包含描述它希望如何建立链路的选项,其中包括协议和身份验证参数。响应方处理愿望清单,如果该清单可接受,则用Configure-Ack消息进行响应。收到Configure-Ack消息后,链路建立过程便转入身份验证阶段。

如果选项不可接受或无法识别,响应方将发送Configure-Nak或Configure-Reject消息。收到Configure-Ack后,链路操作将交给NCP。如果响应方向请求方发送Configure-Nak或Configure-Reject消息,将不会建立链路。如果协商失败,发起方需要使用新选项重新启动该过程。

在链路维护期间,LCP可使用消息来提供反馈和测试链路。

Code-Reject和Protocol-Reject:如果无法识别的LCP编码(LCP帧类型)或错误的协议标识符导致帧无效,可使用这两种帧来提供反馈。例如,如果从对等体那里收到无法解释的分组,响应方将发送Code-Reject分组。

Echo-Request、Echo-Reply和Discard-Request:这些帧可用于测试链路。

在网络层完成数据传输后,LCP将终止链路。在图2.28中,注意到NCP只终止网络层和NCP链路。链路始终处于打开状态,直到LCP终止它。如果LCP在NCP之前终止链路,NCP会话也将被终止。

PPP可随时终止链路。导致终止的原因包括载波丢失、身份验证失败、链路质量故障、空闲定时器超时或管理性关闭链路。LCP通过交换Terminate分组来关闭链路。发起关闭操作的设备发送Terminate-Request消息,而对方使用Terminate-Ack进行响应。终止请求表明发送该请求的设备想关闭链路。关闭链路时,PPP将通知网络层协议让其能够采取相应的措施。

图2.29是LCP链路协商过程的逻辑示意图。

使用LCP建立链路_ppp协议_02 
图2.29  LCP链路协商过程

2.LCP分组

每个LCP分组都是一条LCP消息,由编码字段、标识符字段、长度字段和数据字段组成。编码字段指出了LCP分组的类型,标识符字段用于匹配请求和应答,长度字段指出了LCP分组的长度,而数据字段包含LCP分组的具体数据。

图2.30说明了LCP分组中的字段。

LCP分组包含如下信息:

编码:长1字节,指出了LCP分组的类型。

标识符:长1字节,用于匹配请求和应答。

长度:长2字节,指出了LCP分组的总长(包括所有字段)。

数据:长度由"长度"字段指出,可能为0或多个字节。"编码"字段决定了该字段的格式。

使用LCP建立链路_ppp协议_03 
图2.30  LCP分组中的字段

每个LCP分组在交换配置信息方面都有特定功能,这取决于LCP分组的类型。LCP分组的编码字段指出了分组类型,如表2.4所示。

表2.4 编码字段的取值


编码字段的取值

LCP分组类型

    

1

Configure-Request

在打开或重置PPP连接时发送该消息。Configure-Request包含一系列用于修改默认选项值的LCP选项

2

Configure-Ack

最近收到的Configure-Request中所有LCP选项值都可识别和接受时发送该消息。PPP对等体发送和收到Configure-Acks时,LCP协商便完成了

3

Configure-Nak

当所有LCP选项都可识别,但有些选项的值不可接受时发送该消息。Configure-Nak包含其值不可接受的选项及其可接受的值

4

Configure-Reject

当LCP选项无法识别或不能接受时发送该消息。Configure-Reject包括无法识别或无法接受的选项。

5

Terminate-Request

在关闭PPP连接时可选地发送该消息

6

Terminate-Ack

响应Terminate-Request时发送该消息

7

Code-Reject

在LCP编码未知时发送该消息。Code-Reject消息包含其编码未知的LCP分组

8

Protocol-Reject

当PPP帧包含未知协议ID时发送该消息。Protocol-Reject消息包含有问题的LCP分组。PPP对等体通常发送Protocol-Reject来指出它没有启用PPP NCP对应的LAN协议

9

Echo-Request

发送该消息以测试PPP连接(可选)

10

Echo-Reply

用于响应Echo-Request。PPP Echo-Request和Echo-Reply与ICMP回应请求和回应应答消息毫无关系

11

Discard-Request

用于测试出站方向的链路(可选)