PPP协议原理实验指导书
z Network-Layer Protocol 阶段 PPP 完成上述各阶段后,每一个网络层协议,如 IP、IPX、AppleTalk 等,必须由各自相应的 NCP 来配置。NCP 可以在任意时刻打开或关闭。
z Link Termination 阶段 PPP 可以在任何时候中断链路。LCP 通过交换 Terminate 分组来关闭链 路。Terminate 分组交换以后,应用程序应当向物理层和网络层发出信 号,使它们发出相应的动作。
5. PPP 报文实例 以当建立 LCP 连接过程中发生异常为例,分析其发送的错误 LCP 连接请求 报文如下: 客户机首先发送错误 LCP 连接请求报文:c0 21 01 00 00 08 01 04 00 0a。 其各部分格式解释如下: 协议:c0 21(LCP 协议) 代码:01(连接请求) 标识:00 长度:00 08(协议,代码,标识,长度,数据字段的总长度为 8 字节) 数据: 01 04 00 0a(4 字节,为 Configure-Request 的参数,01 表示 MRU 参数,04 表示此参数为 4 字节,00 0a 表示 MRU 的大小为 10 字节) 由于 LCP 报文是封装在 PPP 的 HDLC 帧当中,所以实验软件没有显示 HDCL 帧当中的固定字段,因为此报文在 HDLC 中的 FCS(Frame Checksum) 字段的值不对,所以被视为错误帧,但是从实验软件的显示中不能看出其 是否为错误帧,这一点请大家注意。
PPP 协议原理实验指导书
一.实验目的: 通过对 PPP 协议的模拟仿真实验,了解协议的工作原理,加深对 PPP 协议的理
解。
二.实验内容 1. LCP 建链实验 2. LCP 拆链实验 3. LCP 身份验证 4. NCP 的工作过程 5. 数据报文传送
三.实验器材 PC 机两台,PPP 协议模拟程序,串口线一根。
z Authentication 阶段 Authentication 阶段是可选项,如果应用程序希望使用某些特定协议进 行身份验证,那么必须在 Link Establishment 阶段请求使用这些验证协 议。如果身份验证成功,则进入 Network-Layer Protocol 阶段。如果身 份验证失败,则进入 Link Termination 阶段。应用程序应当在经过多次 验证尝试之后才进入 Link Termination 阶段。
在做实验的过程中,可以按照通常的步骤来做,也可以各个步骤分开做 实验,这个由个人根据自己的情况来定。
在做实验的过程中,如果发生异常,随时都可以单击复位按钮,对实验 程序进行复位操作。
其用户界面如下图所示:
2. LCP 建链实验 正常建立 LCP 连接 1) 运行服务器,选择合适的串口,波特率设为 9600。 2) 把要求身份验证的选择勾去掉。 3) 运行客户机,选择合适的串口,波特率设为 9600。 4) 单击“LCP 过程”按钮,在弹出菜单中单击“建立 LCP 连接”按钮,观察 程序输出并做记录。
z Link Dead 阶段 Link Dead 阶段是 PPP 链路的起始和终止阶段。当发生外部事件指示物理 层已就绪后,PPP 将进入到 Link Establishment 阶段。
z Link Establishment 阶段 LCP 通过交换 Configure 分组来建立连接,如果链路建立成功,则进入 Authentication 阶 段 , 否 则 进 入 Link Dead 阶 段 。 当 发 送 了 Lcp Config-Request 之后,如果在一定的时间内没有收到任何相应,那么就重 发 Lcp 连接请求报文,如果重发次数超过一规定次数后,则视为连接失败。 超时时间和重试次数都可以认为设定。
3
Configure-Nak
4
Configure-Reject
5
Terminate-Request
6
Terminate-Ack
7
Code-Reject
8
Protocol-Reject
9
Echo-Request
10
Echo-Reply
11
Discard-Request
Identifier 字段为一个字节,主要目的是用来匹配请求和应答,所有有无效 的 Identifier 字段的分组都会被丢弃。
4. 标志字段为一个字节,用以标志一帧的起止,为二进制序列 01111110。
5. 地址字段为一个字节,采用标准的广播地址,为二进制序列 11111111。 6. 控制字段为一个字节,为二进制序列 00000011,其含义是使用无序号帧
传输用户数据。 7. 协议字段为两个字节,标明 PPP 帧中信息字段所封装的协议。 8. 数据字段为零个或多个字节,内容为协议字段中所标明的协议的数据
五.实验环境
服务器
串口线
客户机
PPP 协议实验环境主要由三部分组成,一台服务器,一台客户机,一根串 口线,两台 PC 机通过串口线相互通信,利用 PPP 协议进行双方的通信参 数的设置以及数据的传输。 六.实验步骤 1. 实验前的准备 1. 安装 PPP 实验程序,在两台电脑上分别装上 PPP 服务器和客户机程序,只 需要简单的拷贝即完成安装,检查两台电脑的串口是相连的。 1) 运行 PPP 实验程序,熟悉其界面。 界面说明: 服务器: 串口设置:可以改变设置串口参数。 身份验证设置:可以设置是否要求身份验证,以及用户名和密码。
4. LCP 的身份验证 身份验证密码错误
1) 运行服务器,选择合适的串口,波特率设为 9600。 2) 选中要求身份验证选项,设置用户名和密码。 3) 运行客户机,选择合适的串口,波特率设为 9600。 4) 单击“LCP 过程”按钮,在弹出菜单中单击“建立 LCP 连接”按钮,当提
示输入用户名和密码的时候,输入错误的密码,观察程序输出并做记 录。
复位:复位服务器。 客户机:
LCP 过程:选择 LCP 协议的操作的类型,建链,建链(有错误发生),拆链。 NCP 过程:选择 NCP 协议的操作类型。
通常的过程是:首先建立 LCP 连接,在建立连接的过程中进行身份验证, 然后建立 IPCP 的连接,之后就可以发送数据了。拆除连接的过程正好相反, 首先拆除 IPCP 连接,最后拆除 LCP 连接。
身份验证密码正确 1. 运行服务器,选择合适的串口,波特率设为 9600。 2. 选中要求身份验证选项,设置用户名和密码。 3. 运行客户机,选择合适的串口,波特率设为 9600。 4. 单击“LCP 过程”按钮,在弹出菜单中单击“建立 LCP 连接”按钮,当提
示输入用户名和密码的时候,输入正确的密码(同服务器上设置的用户名 和密码一样),观察程序输出并做记录。
4. LCP 的格式 LCP 分组的格式如下图所示。传输时从左到右依次传输。
Code 字段为一个字节,它表明了 LCP 分组的类型,在 Assigned Numbers 中指
明了常用的 LCP Code 值所代表的分组类型,现在列于下:
LCP 分组的类型
1
Configure-Request
2
Configure-Ack
示输入用户名和密码的时候,输入错误的密码(同服务器上设置的用户名 和密码不一致),当再次提示输入用户名和密码的时候(同服务器上设置 的用户名和密码一样),输入正确的密码。 5) 单击“NCP 过程”按钮,在弹出菜单中单击“建立 IPCP 连接”按钮。 6) 单击“发送数据”按钮,输入任意数据。 7) 单击“NCP 过程”按钮,在弹出菜单中单击“关闭 IPCP 连接”按钮。 8) 单击“LCP 过程”按钮,在弹出菜单中单击“关闭 LCP 连接”按钮。 9) 观察以上个步骤中程序的输出并做记录。
Length 字段为两个字节,它表明了整个 LCP 分组的长度,包括 Code, Identifier,Length 和 Data 字段,其大小不能超过 MRU,否则会被丢弃。
Data 字段为零个或者多个字节,Data 字段的格式由 Code 字段的值决定。在 这里不详细介绍各种 Code 对应的 Data 的格式了,这在 RFC1661 中有详细的说明。
报。 9. FCS 通常为 16 比特,为了提高错误检测能力,也可以使用 32 比特的 FCS。 3. PPP 链路操作 在 PPP 链路上建立通信的过程分两步完成:首先用 LCP 报文配置和测试数据链 路,链路建立后,终端进行身份验证。然后用 NCP 报文选择和配置一个或多个网 络层协议。 在点到点链路的建立、配置、保持和中断过程中,PPP 要先后经历几个不同 的阶段。这几个阶段之间的转换图如下:
察程序输出并做记录。 6. 数据报文的传送
1) 此实验要求程序已经成功建立了 IPCP 连接。 2) 单击“发送数据”按钮,输入任意数据,观察程序输出并做记录。 7. PPP 完整运行过程实验 在此实验中,我们完全模拟一次实际的通信过程,我们首先建立 LCP 的连接, 进行相应的身份验证,然后进入 NCP 的配置(IPCP),成功配置好 IPCP 后就可 以进行数据的传输了,当传输完数据后,我们不再使用 PPP 信道,于是关闭连 接(包括 IPCP 和 LCP 连接),这一实际过程一般发生在拨号上网的时候。其具 体过程如下: 1) 运行服务器,选择合适的串口,波特率设为 9600。 2) 选中要求身份验证选项,设置用户名和密码。 3) 运行客户机,选择合适的串口,波特率设为 9600。 4) 单击“LCP 过程”按钮,在弹出菜单中单击“建立 LCP 连接”按钮,当提
四.实验原理 1. PPP 协议简介 PPP 协议在接入网领域的使用十分广泛,比如说拨号上网,宽带接入等,同 时,在广域网之间的绝大部分链路也都是 PPP 链路,这些都使得我们有必要了解 和掌握 PPP 协议的工作原理和运行机制。这本指导书就是为了让同学们了解 PPP 协议而编著的,它介绍了 PPP 协议的各个组成部分以及各部分的运行机制。 PPP(Point to Point Protocol)协议最早定义于 RFC1661,它提供了一个在点 到点链路上传输多种协议数据报(datagram)的标准方法。它由以下三个部分组 成: 1) 一个封装多协议数据报的方法。 2) 一个链路控制协议 LCP 用于建立、配置和测试数据链路。 3) 一个网络控制协议族 NCP 用于建立和配置不同的网络层协议。 2. PPP 的封装和帧格式 PPP 封装的示意图如下:
1. 协议字段的值标明了封装在信息字段中的数据报所使用的协议。RFC1340 规定了常用协议所对应的字段值。
2. 信息字段可以有一个或多个字节,其中包含协议字段中指明的协议的数 据报。
3. 填充字段是用来在传输时,把信息字段填充任意字节以达到 MRU。 PPP 使用 HDLC(High-level Data Link Control)的帧格式,一个 PPP 帧如下图 所示:
七.思考题
1. 参考 PPP 协议的状态机,说明在 LCP 建链失败的实验过程中服务器和客户机分 别中止于何种状态,你认为作为 PPP 协议软件应该对此做何处理?
5. NCP 的工作过程 建立 NCP 连接 1) 此实验要求已经成功建立 LCP 连接。 2) 单击“NCP 过程”按钮,在弹出菜单中单击“建立 IPCP 连接”按钮,观 察程序输出并做记录。
建立 NCP 连接出错 1. 此实验要求已经成功建立 LCP 连接。 2. 单击“NCP 过程”按钮,在弹出菜单中单击“建立 IPXCP 连接”按钮,观
建立 LCP 连接过程中发生异常 1. 运行服务器,选择合适的串口,波特率设为 9600。 2. 把要求身份验证的选择勾去掉。 3. 运行客户机,选择合适的串口,波特率设为 9600。 4. 单击“LCP 过程”按钮,在弹出菜单中单击“非法 LCP 连接”按钮,观察
程序ห้องสมุดไป่ตู้出并做记录。
3. LCP 拆链实验 1) 此实验要求程序已经正常建立 LCP 连接。 2) 单击“LCP 过程”按钮,在弹出菜单中单击“关闭 LCP 连接”按钮,观察 程序输出并做记录。