摘要:介绍了一种在微控制器(单片机)上实现PPP协议,并使其通过ISP连入Internet的方法。分析了PPP协议,论述了软件系统的层次结构和实现难点,重点介绍了协议的简化方法以适应单片机有限的存储资源。 关键词:PPP 微控制器 单片机上网 调制解调器
微控制器(也称单片机)把所有常用的资源,如存储器、模数转换器、通用输入输出口、定时器等,与CPU集成在一个芯片上,具有体积小、功耗低、使用方便的特点,广泛应用于各种嵌入式系统中。随着互联网(Internet)的兴起与普及,使微控制器也接入到互联网,并通过互联网传送数据。便是实现单片机与互联网通信的前提是需要在单片机上实现多种繁杂的互联网协议。而微器一般处理能力较低、程序存储器和数据存储器资源有限,这就使微控制器上网变得非常困难。目前,一般采用微控制器直接驱动网卡芯片的方案。网卡芯片封装了底层的以太网协议(如IEEE802.3),微控制器只需控制网卡芯片并实现传输层与网络层协议(例如TCP、IP协议)即可以上层。但其缺点是必须应用在已经拥有局域网的地方,且网卡芯片(例如RTL8019等)价格不菲。
本文针对微控制器上网的问题,提出一种大微控制器中实现PPP协议,并通过调制解调器(MODEM)连接到ISP(Internet Service Provider)实现上网的解决方案:微控制器控制MODEM拨号连接到ISP上,然后根据PPP协议(Point to Point Protocol)进行通信协商、密码认证等握手过程,如果成功就可以通过ISP上网传送数据。这种方案的优点在于:(1)可以应用于任何覆盖电话网的地区,适用于广大偏远地区;(2)硬件实现比较简单,程序比较短小;(3)只需外接电话线,安装简便。
3 PPP协议的实现
PPP(Point to Point Protocol)是数据链路层协议中的一种,是目前应用最广的一种广域网协议。PPP协议假定两个对等实体间有一个双向全双工的连接,而且数据包按顺序投递,这正好符合串行口的通信方式。PPP协议不需要差错控制、排序和流量控制,易于实现,而且支持对多种高层协议(如IP、TCP、UDP)的复用。所以使用PPP拨号上网是微控制器实现Internet连接的最佳选择。大部分的ISP也正是通过PPP协议提供网络服务的。
PPP协议的帧结构如图3(a)所示。串口中断程序以包起始和结束符来判断是否有完整的PPP包,并对PPP包的内容进行校验以确定数据包的完整性和正确性。然后在主循环中进入PPP报文解板模块,在护号后初次与ISP通信阶段,系统首先要与ISP进行通信链路的协商,即协商点到点的各种链路参数配置。协商过程遵守LCP(Link Control Protocol)、PAP(Password Authentication Protocol)和IPCP(Internet Protocol Control Protocol)等协议。其中LCP协议用于建立、构造、测试链路连接;PAP协议用于处理密码验证部分;IPCP协议用于设置网络协议环境,并分配IP地址。协商机制用有限状态机模型来实现。一旦协商完成,链路已经创建,IP地址已经分配就可以按照协商的标准进行IP报文的传输了。根据应用的不同,IP报文中可以携带UDP报文也可以是TCP或ICMP报文。本系统正是采用UDP报文传送数据信息的。数据传输完成后,下位机会向ISP发送LCP的断开连接报文以终止网络连接。
值得注意的是,PPP报文、LCP、PAP、IP报文与UDP报文是互相嵌套的。即PPP报文中嵌入了IP报文和LCP、PAP等报文,而IP报文中嵌入了UDP报文。当PPP报文的协议符为0021时表示嵌入了IP数据报,当C021时表示嵌入LCP数据报,而为C023表示嵌入PAP数据报。PPP报文的基本解析过程如图3(b)所示。
3.1 登录ISP的协议协商过程
系统的难点之一是微控制器登陆ISP并与IISP的协商过程,其中需要应用到LCP、PAP与IPCP协议。LCP、PAP与IPCP协议的帧结构大同小异,最常用的是请求(REQ)、同意(ACK)和拒绝(NAK)三种帧。微控制器与ISP协商时,任何一方都可以发送REQ帧请求某方面的配制,另一方如果觉得配置不能接受会回应NAK帧,如果可以接受则回应ACK帧。为了节省资源,这里只处理这三种数据帧,其它链路问题都由微控制器在程序控制下自己重新拨号解决。各种配置选项协商好以后,PPP才可以成功登陆。
在拨号成功连接后,ISP首先返回一个PAPREQ数据帧,微控制器发送一个空LCP REQ帧以强迫ISP进行协议协商阶段;随后ISP发送LCP设置帧,微控制器拒绝所有的设置并请求验证模式。ISP选择CHAP或PAP方式验证,这里只接受PAP方式。然后进行PAP验证用户名和密码过程,如果成功,ISP会返回IPCP报文设置IP地址。此时,就完成了与ISP的协商过程,可以通过向ISP发送IP报文的方式连接互联网传送数据了。协商过程的状态转换图如图4所示。