应用天地 APPLICATION
53Mi crocont rol lers & Emb edded Systems2001.11
基于PPP协议单片机拨号上网的设计与实现
河海大学 谢林枫
摘 要
关键词
通过对 TCP/IP协议簇进行简化,讨论数据包的配置,设计并实现单片机拨号上网的系统。
单片机 协议 TCP/IP PPP 数据包
引 言
20世纪 90年代,以因特网为代表的计算机网络
通信技术的发展和应用取得了前所未有的突破和成
功,单片机上网技术在生活和现代化建设的各方面
的应用和研究随之成为当今一个热门话题。8位、16
位单片机因为其较好的性价比,在测控领域仍然占
据着重要地位。这些单片机的 RAM、ROM一般都
很小,而网络协议通常嵌入在操作系统中,无法把
庞大的操作系统直接安装在这样的单片机中。所
以,要实现上述单片机通过拨号直接连上因特网,
需要考虑的主要技术就是如何在单片机
上嵌入能符合需要的经过简化的网络协
议。这就是本文所要讨论的主题。
本文着重
所用数据包的类型和
选项,给出几个典型数据包的格式。
一、 PPP协议简介
IETF成立了一个小组,推出了点到
点线路的数据链路层协议,并成为正式
的因特网
。这项工作定义为 PPP
(Poin t-to-Poin t Protocol),即点到点
协议,并以 RFC文件 RFC1661,后来以 RFCl662和
RFC1663进一步明确下来。PPP处理错误检测,支持
多种协议,在连接时期允许商议 IP地址,允许身份
验证,以及在SLIP上所做的许多其他改进。虽然许
多因特网服务提供者仍支持SLIP和PPP,但未来显然
属于PPP,不管是拨号线路,还是租用路由器与路由
器的线路都是如此。
PPP成就了 3件事:
(1)明确地划分出一帧的尾部和下一帧的头部
的成帧方式。这种帧格式也处理错误检测工作。
(2)当线路不再需要时,跳出这些线路,测
试它们,商议选择,并仔细地再次释放链路控制协
议。这个协议被称为链路控制协议LCP(Link Control
Protocol)。
(3)用独立于所使用的网络层协议的方法来商
议使用网络层的哪些选项;对于每个所支持的网络层
来说,所选择的方法有不同的网络控制协议 NCP
(Network Control Protocol)。NCP在因特网中(TCP/
IP协议)为 IPCP。
PPP数据帧的格式如图 1所示。
二、基于PPP协议单片机拨号上网
的设计与实现
1. 概 述
本
选用的单片机是 ADAM5510。它是台湾
ADVANTECH公司推出的一种功能较强、价位适中的
单片机,具有 80188-40、 16-bi t 单片机,RS-232、
RS-485口各一个,还有一个编程口(ADAVA NTECH
图1 PPP数据帧格式
标志 地址 控制 标志
7E FF 03
协议 信 息 CRC
7E
1 1 1 2 最多 1500字节 2 1
协议
0021
IP数据报
协议
C021
链路控制数据
协议
8021
网络控制协议
应用天地 APPLICATION
54 2001.11
公司为5510系列单片机开发了同普通的Turbo C界面
很相似的集成开发环境,这种IDE能灵活地编辑、编
译、仿真、开发和调试适用于 5510系列的软件)。
ADAM5510的功能模块如图2所示。这种单片机在硬
件构成上已比较完善,使我们可以集中精力于TCP/IP
协议的分析和软件的实现。
在本方案中,物理层接口采用的是:单片机通过
RS-232与 Modem通信,电话线与 Modem相连。单
片机直接从RS-232端口收发数据。
2.原理及程序流程
系统原理如图3所示,测试程序流程如图4所示。
3. 简化PPP协议——配置各种数据包
(1) LCP包的配置
LCP包的配置如图 5所示。
a. LCP包概述
LCP包有 3类:a链路配置包,用
于建立和配置链路,包括 Con figu re
Ack、Configu re Nak、Configu re Requ es t、Config -
ure Re ject;b链路结束包,用于结束一个链路,包
括 Termin ate Reques t、Terminate Ack;c链路维修
包,用于管理和调试一个链路,包括 Code Reject、
Protocol Reject、Echo Requ es t、Echo Reply、Dis -
card Request。LCP包的选项最常见的有:1 Maximum
Rece iv e Un it、 2 A sy nc Cont rol Ch aract er M ap、 3
A u t h en t i ca t io n Pr o to c ol、 7 Pr o to c o l F i e l d
Compr es s i on、 8 A dd re ss a n d Co n t ro l Fi e l d
Compression。
b. LCP包种类的取舍
本文中,只用了Configure -Request、Reject、Ack
三种LCP数据包,这是实现应答所必需的最低限度。
单片机发出的Request选项是我们预先设定的,而ISP
发出的选项若有我们不接受的内容,则单片机回答一
个Reject,任何一方接受请求时发Ack,因此未处理NAK
图2 ADAM 5510功能模块
RS-485 收发 ⋯⋯ UART
COM2
80188-40
UART
COM1
RS-232 收发
SRAM ROM RTC
电池
局部总线
计算机
WDT &
Reset
P.S.
+5V GND
电源
转换器
+10~80V
隔离电源
整流和
滤波
接地正电压
图3 系统原理图
ADAM5510
拨号
PPP
调制
解调器
RS-232 调制
解调器
LCP PAP IPCP
河海大学
网管接入
服务器
(dial 51409)
IPInternet
IP
信宿PC机(网络节点的IP地址为
202.119.116.248),存放采集数据
电话线
图4 测试程序流程图
开始
初始化调制解调器(Modem)
Modem准备好?
Y
向校网管拨号服务器拨号(51409)
连上网络?
Y
失败!N
发送PPP数据包,通过PPP协议中的
LCP、PAP协商PPP数据包服务选项;
通过IPCP向拨号服务器获取IP地址
开始利用PPP协议进行数据传输
N
图5 一个LCP请求数据包
02 06 00 0A 00 00
类型 长度 值
7E FF 03 C0 21 01 05 2 3 5 7 CRC校验 7E
PPP帧头
协议
(LCP)
代码
(REQ)
序号
(ID)
长度 选 项 校验和 PPP帧尾
应用天地 APPLICATION
55Mi crocont rol lers & Emb edded Systems2001.11
数据包。本文也未处理剩余的七类数据包,因任何
原因造成的链路终止问题都由单片机在程序的控制下
重新拨号来解决。
c. LCP选项的取舍
由于我们每次发送(接收)的数据较少(由于
单片机 RA M 的限制,设定的缓冲区很小),MRU
选项默认值为 1500字节,最小值为 576字节,所以
测试程序不支持选项 1;选项 2是必须支持的;选项
3提供了发送 password 的方法,它的
可以是
0xc023或 0xc223。为简单起见,本文的测试程序选择
了 0xc023作为选项 3的参数,这样,程序将以明文
的形式在一个数据包中发出用户名和密码。测试程序
不请求选项 7和 8的服务,也就是根据默认的
,
发送的数据包含有PPP协议域和控制域。
(2)PA P包的配置
由于LCP包中选项 3的使用情况,PAP包是必需
的。简单起见,程序中只交换了一个 PAP包,但已
完成了用户的身份鉴定,如图 6所示。
(3) IPCP包的配置
IPCP选项是关于 IP地址和 IP压缩的,测试选择
了选项 3(IP-address)。本程序通过发出一个无效
的地址请求(0.0.0.0),等待服务器回答一个 NA K
(选项为 3),从这个NAK包中得到自己的正确地址。
IPCP包的配置如图 7所示。
(4)CCP包的处理
有些服务器试图协商压缩,但由于我们关心的是
程序的大小(越小越好)而不是数据传送的速度,
所以 CCP请求被拒绝。
(5) IP 包的处理
在协商好PPP协议的各选项后,即可进行数据传
输了。同样,为了简单起见,采用了 UDP协议而不
是 TCP协议。数据的正确性由应用程序控制。
( 6 )验证
在(202.119.116.248)端,安装了 NetxRay 3.0
版网络嗅探器。利用该软件可以很方便地查看进出该
机器的数据包的功能,我们验证出源端发送数据的测
试程序是可行的。
结束语
本文针对实际应用情况,对庞大的TCP/IP网络协
议组进行了简化,具体分析了简化后的协议组中各种
数据包,同时给出了测试程序对所需发送数据的具体
打包过程。完整的TCP/IP协议很大,只能嵌入到 32
位以上的单片机上运行。我们的软件只需要3K B(字
节)的 ROM 即可运行。在接收数据的目的端,PC
机上安装了Netxray 3.0软件,对测试程序的结果进行
测试,验证出最终在目的端接收到的数据就是我们在
源端所发送的数据,而且所有的数据包都符合TCP/IP
规范。
参考文献
1 李艺,李新明.机顶盒系统中 PPP协商机制的
设计和实现 .计算机科学,2000,27(6)
2 Richard Stevens W.The Protocols. TCP/IP Illus-
trated Volume 1
3 Simpson W.The Poin t-to-
Point Protocol(PPP).RFC1661,Ju ly
1994
4 McGregor G.The PPP Internet
Protocol Con trol Protocol (IPCP).
RFC1332,May 1992
5 ADVANTECH.ADA M5510
User Man ual, 3rd Edi tion
图6 PAP数据包
7E FF 03 C0 23 01 05
06 75 73
65 72 69
64
0 8 7 0 6 1
7 3 7 3 7 7
6 F 7 2 6 4
CRC校验 7E
PPP帧头 协议
(PAP)
代码 序号
(ID)
长度 用户名长度
+用户名
密码长度
+密码
校验和 PPP帧尾
图7 IPCP数据包
04 06 CA 77 76 A6
类型 长度 值(动态 IP地址)
7E FF 03 80 21 03 05 3 CRC校验 7E
PPP帧头 协议
(IPCP)
代码
(NAK)
序号
(ID)
长度 选项 校验和 PPP帧尾
应用天地 APPLICATION
53Mi crocont rol lers & Emb edded Systems2001.11
基于PPP协议单片机拨号上网的设计与实现
河海大学 谢林枫
摘 要
关键词
通过对 TCP/IP协议簇进行简化,讨论数据包的配置,设计并实现单片机拨号上网的系统。
单片机 协议 TCP/IP PPP 数据包
引 言
20世纪 90年代,以因特网为代表的计算机网络
通信技术的发展和应用取得了前所未有的突破和成
功,单片机上网技术在生活和现代化建设的各方面
的应用和研究随之成为当今一个热门话题。8位、16
位单片机因为其较好的性价比,在测控领域仍然占
据着重要地位。这些单片机的 RAM、ROM一般都
很小,而网络协议通常嵌入在操作系统中,无法把
庞大的操作系统直接安装在这样的单片机中。所
以,要实现上述单片机通过拨号直接连上因特网,
需要考虑的主要技术就是如何在单片机
上嵌入能符合需要的经过简化的网络协
议。这就是本文所要讨论的主题。
本文着重分析所用数据包的类型和
选项,给出几个典型数据包的格式。
一、 PPP协议简介
IETF成立了一个小组,推出了点到
点线路的数据链路层协议,并成为正式
的因特网标准。这项工作定义为 PPP
(Poin t-to-Poin t Protocol),即点到点
协议,并以 RFC文件 RFC1661,后来以 RFCl662和
RFC1663进一步明确下来。PPP处理错误检测,支持
多种协议,在连接时期允许商议 IP地址,允许身份
验证,以及在SLIP上所做的许多其他改进。虽然许
多因特网服务提供者仍支持SLIP和PPP,但未来显然
属于PPP,不管是拨号线路,还是租用路由器与路由
器的线路都是如此。
PPP成就了 3件事:
(1)明确地划分出一帧的尾部和下一帧的头部
的成帧方式。这种帧格式也处理错误检测工作。
(2)当线路不再需要时,跳出这些线路,测
试它们,商议选择,并仔细地再次释放链路控制协
议。这个协议被称为链路控制协议LCP(Link Control
Protocol)。
(3)用独立于所使用的网络层协议的方法来商
议使用网络层的哪些选项;对于每个所支持的网络层
来说,所选择的方法有不同的网络控制协议 NCP
(Network Control Protocol)。NCP在因特网中(TCP/
IP协议)为 IPCP。
PPP数据帧的格式如图 1所示。
二、基于PPP协议单片机拨号上网
的设计与实现
1. 概 述
本方案选用的单片机是 ADAM5510。它是台湾
ADVANTECH公司推出的一种功能较强、价位适中的
单片机,具有 80188-40、 16-bi t 单片机,RS-232、
RS-485口各一个,还有一个编程口(ADAVA NTECH
图1 PPP数据帧格式
标志 地址 控制 标志
7E FF 03
协议 信 息 CRC
7E
1 1 1 2 最多 1500字节 2 1
协议
0021
IP数据报
协议
C021
链路控制数据
协议
8021
网络控制协议
应用天地 APPLICATION
54 2001.11
公司为5510系列单片机开发了同普通的Turbo C界面
很相似的集成开发环境,这种IDE能灵活地编辑、编
译、仿真、开发和调试适用于 5510系列的软件)。
ADAM5510的功能模块如图2所示。这种单片机在硬
件构成上已比较完善,使我们可以集中精力于TCP/IP
协议的分析和软件的实现。
在本方案中,物理层接口采用的是:单片机通过
RS-232与 Modem通信,电话线与 Modem相连。单
片机直接从RS-232端口收发数据。
2.原理及程序流程
系统原理如图3所示,测试程序流程如图4所示。
3. 简化PPP协议——配置各种数据包
(1) LCP包的配置
LCP包的配置如图 5所示。
a. LCP包概述
LCP包有 3类:a链路配置包,用
于建立和配置链路,包括 Con figu re
Ack、Configu re Nak、Configu re Requ es t、Config -
ure Re ject;b链路结束包,用于结束一个链路,包
括 Termin ate Reques t、Terminate Ack;c链路维修
包,用于管理和调试一个链路,包括 Code Reject、
Protocol Reject、Echo Requ es t、Echo Reply、Dis -
card Request。LCP包的选项最常见的有:1 Maximum
Rece iv e Un it、 2 A sy nc Cont rol Ch aract er M ap、 3
A u t h en t i ca t io n Pr o to c ol、 7 Pr o to c o l F i e l d
Compr es s i on、 8 A dd re ss a n d Co n t ro l Fi e l d
Compression。
b. LCP包种类的取舍
本文中,只用了Configure -Request、Reject、Ack
三种LCP数据包,这是实现应答所必需的最低限度。
单片机发出的Request选项是我们预先设定的,而ISP
发出的选项若有我们不接受的内容,则单片机回答一
个Reject,任何一方接受请求时发Ack,因此未处理NAK
图2 ADAM 5510功能模块
RS-485 收发 ⋯⋯ UART
COM2
80188-40
UART
COM1
RS-232 收发
SRAM ROM RTC
电池
局部总线
计算机
WDT &
Reset
P.S.
+5V GND
电源
转换器
+10~80V
隔离电源
整流和
滤波
接地正电压
图3 系统原理图
ADAM5510
拨号
PPP
调制
解调器
RS-232 调制
解调器
LCP PAP IPCP
河海大学
网管接入
服务器
(dial 51409)
IPInternet
IP
信宿PC机(网络节点的IP地址为
202.119.116.248),存放采集数据
电话线
图4 测试程序流程图
开始
初始化调制解调器(Modem)
Modem准备好?
Y
向校网管拨号服务器拨号(51409)
连上网络?
Y
失败!N
发送PPP数据包,通过PPP协议中的
LCP、PAP协商PPP数据包服务选项;
通过IPCP向拨号服务器获取IP地址
开始利用PPP协议进行数据传输
N
图5 一个LCP请求数据包
02 06 00 0A 00 00
类型 长度 值
7E FF 03 C0 21 01 05 2 3 5 7 CRC校验 7E
PPP帧头
协议
(LCP)
代码
(REQ)
序号
(ID)
长度 选 项 校验和 PPP帧尾
应用天地 APPLICATION
55Mi crocont rol lers & Emb edded Systems2001.11
数据包。本文也未处理剩余的七类数据包,因任何
原因造成的链路终止问题都由单片机在程序的控制下
重新拨号来解决。
c. LCP选项的取舍
由于我们每次发送(接收)的数据较少(由于
单片机 RA M 的限制,设定的缓冲区很小),MRU
选项默认值为 1500字节,最小值为 576字节,所以
测试程序不支持选项 1;选项 2是必须支持的;选项
3提供了发送 password 的方法,它的参数可以是
0xc023或 0xc223。为简单起见,本文的测试程序选择
了 0xc023作为选项 3的参数,这样,程序将以明文
的形式在一个数据包中发出用户名和密码。测试程序
不请求选项 7和 8的服务,也就是根据默认的规定,
发送的数据包含有PPP协议域和控制域。
(2)PA P包的配置
由于LCP包中选项 3的使用情况,PAP包是必需
的。简单起见,程序中只交换了一个 PAP包,但已
完成了用户的身份鉴定,如图 6所示。
(3) IPCP包的配置
IPCP选项是关于 IP地址和 IP压缩的,测试选择
了选项 3(IP-address)。本程序通过发出一个无效
的地址请求(0.0.0.0),等待服务器回答一个 NA K
(选项为 3),从这个NAK包中得到自己的正确地址。
IPCP包的配置如图 7所示。
(4)CCP包的处理
有些服务器试图协商压缩,但由于我们关心的是
程序的大小(越小越好)而不是数据传送的速度,
所以 CCP请求被拒绝。
(5) IP 包的处理
在协商好PPP协议的各选项后,即可进行数据传
输了。同样,为了简单起见,采用了 UDP协议而不
是 TCP协议。数据的正确性由应用程序控制。
( 6 )验证
在(202.119.116.248)端,安装了 NetxRay 3.0
版网络嗅探器。利用该软件可以很方便地查看进出该
机器的数据包的功能,我们验证出源端发送数据的测
试程序是可行的。
结束语
本文针对实际应用情况,对庞大的TCP/IP网络协
议组进行了简化,具体分析了简化后的协议组中各种
数据包,同时给出了测试程序对所需发送数据的具体
打包过程。完整的TCP/IP协议很大,只能嵌入到 32
位以上的单片机上运行。我们的软件只需要3K B(字
节)的 ROM 即可运行。在接收数据的目的端,PC
机上安装了Netxray 3.0软件,对测试程序的结果进行
测试,验证出最终在目的端接收到的数据就是我们在
源端所发送的数据,而且所有的数据包都符合TCP/IP
规范。
参考文献
1 李艺,李新明.机顶盒系统中 PPP协商机制的
设计和实现 .计算机科学,2000,27(6)
2 Richard Stevens W.The Protocols. TCP/IP Illus-
trated Volume 1
3 Simpson W.The Poin t-to-
Point Protocol(PPP).RFC1661,Ju ly
1994
4 McGregor G.The PPP Internet
Protocol Con trol Protocol (IPCP).
RFC1332,May 1992
5 ADVANTECH.ADA M5510
User Man ual, 3rd Edi tion
图6 PAP数据包
7E FF 03 C0 23 01 05
06 75 73
65 72 69
64
0 8 7 0 6 1
7 3 7 3 7 7
6 F 7 2 6 4
CRC校验 7E
PPP帧头 协议
(PAP)
代码 序号
(ID)
长度 用户名长度
+用户名
密码长度
+密码
校验和 PPP帧尾
图7 IPCP数据包
04 06 CA 77 76 A6
类型 长度 值(动态 IP地址)
7E FF 03 80 21 03 05 3 CRC校验 7E
PPP帧头 协议
(IPCP)
代码
(NAK)
序号
(ID)
长度 选项 校验和 PPP帧尾