基于邮件协议的NAT穿越远程升级与控制系统
2017-03-27张永刚周小林郑立荣
陈 磊, 张永刚, 周小林, 郑立荣
(复旦大学 信息科学与工程学院,上海 200433)
基于邮件协议的NAT穿越远程升级与控制系统
陈 磊, 张永刚, 周小林, 郑立荣
(复旦大学 信息科学与工程学院,上海 200433)
提出了一种新的实现网络地址转换(NAT)穿越的方案:利用邮件服务器的POP3和SMTP协议传递相关IP地址和端口等信息,并通过“打洞”技术,实现客户端和设备结点之间的UDP连接.相比于利用程序服务器进行“打洞”从而实现NAT穿越的方案,该方案运营成本更低,系统稳定性更高,系统可移植性更强.基于该NAT穿越方案,结合多设备结点、多种网络环境的情况,引入固件升级模块,设计与实现了一个物联网智能设备的远程升级和控制系统,并对系统的稳健性进行了探讨.
NAT穿越; 点对点连接; POP3; SMTP; UDP
0 引 言
目前,物联网技术已经获得巨大发展[1],点对点(P2P)技术已经渗透到基础设施、工业生产以及人们的生活中[2],越来越多的用户和设备结点需要接入互联网进行信息交换和处理,因此也导致了IPv4地址资源面临枯竭.国内外普遍采用网络地址转换(NAT)技术作为让多设备连入互联网的过渡手段[3].然而,NAT技术的“对外不可见”特性阻碍了系统中结点的P2P连接[4].
本课题研究NAT环境下,物联网设备结点的一种建立P2P连接方式:利用邮件服务器的POP3和SMTP协议进行NAT穿越的技术.与常用的利用程序服务器进行NAT穿越的方法对比,其优势在于:
1)可以减少成本.传统的程序服务器不仅需要工程人员自行搭建或租借,而且后期的维护也是一笔不小的开销.而本文作者使用的邮箱为互联网中常见的个人邮箱,可以免费长期使用.
2)系统更加稳定.相比于程序服务器,邮件服务器运行时间上不间断,技术上更加成熟,不易产生传输错误.并且由于只需要对客户端和设备端进行程序的开发,可以有效避免程序服务器上出现错误.
3)拓展性更强.由于减少了服务器上相应程序的开发,进行系统移植时,只需要修改客户端和设备端程序,因此该方案具有更强的拓展性.
1 系统总体设计方案
图1 系统总结构架
图1为本研究的物联网智能设备的远程升级和控制系统的整体架构.该系统主要分为3个部分:客户端,设备结点和邮件服务器.
当客户端和设备结点处于不同NAT网络下时,两者之间难以直接进行通信连接.目前已有多种方案可以解决客户端和设备端之间的通信问题,其中较常用的Simple Traversal of UDP over NATs(STUN)方案利用程序服务器作为中介进行NAT穿越.本研究利用邮件服务器替代STUN方案中的程序服务器,建立客户端与设备端之间的P2P连接,实现客户端对在线设备结点进行信息查询、P2P连接及远程固件升级等操作.因此,该系统主要包括两个步骤:1)客户端查看在线设备信息;2)客户端连接或升级指定设备端.
反复进行第一步操作,直到客户端选定特定设备后进入第二步,进行连接或升级操作.当第二步完成后,一个完整的远程控制流程结束.
2 通信协议的制定
在该系统中,包含了客户端、设备结点和邮箱三方之间的通信情况.分别设计了2套通信协议,分别对应于与邮箱的通信情况以及客户端和设备结点之间的通信情况.
2.1 与邮箱通信协议的制定
利用POP3协议和SMTP协议实现客户端和设备的邮件收发功能[5].当一方利用SMTP协议发送邮件,另一方通过POP3协议以某种频率登录相应邮箱并查询邮件,就能进行近似于即时的传递信息.
设计客户端、设备端与邮箱之间通信的协议如下:邮件类型:设备ID:公网IP:port:私网IP:port:seq.
1)邮件类型.该字段是通信协议的标志,用于区分该通信协议邮件的类型.字段分为4种类型,分别为Update、Re_Up、State、Re_St.
2)设备ID.由于在该系统中需要对多设备进行管理,因此让每个设备拥有唯一的ID以标识设备.通过在通信协议中增加设备ID字段,客户端可以指定特定设备进行连接,设备返回状态信息时也能标注状态信息的来源.
3)IP和port.该字段表示客户端或设备所在IP及其绑定端口.
4)Seq.该字段表示客户端和设备端在一次完整升级过程中,通过邮箱传递信息的次数.通过添加该字段,客户端或设备可以判断该邮件是否为此次升级步骤中有用的邮件,避免了之前进行NAT穿越残留的邮件干扰.
2.2 客户端与设备结点通信协议的制定
考虑到采用UDP协议能够提高NAT穿越的成功率,因此客户端和设备结点是采用UDP协议进行通信的.但是UDP面向非连接的特性使得接收方无法感知报文发送时的先后顺序,以及是否有丢失报文的情况[6].因此,在程序设计中需要建立一定机制,保障数据的可靠传输.
图2 协议结构
图2为客户端与设备结点通信协议结构.该协议结构主要分为6个部分:opcode,block,IP,Port,MAC和Message.opcode是命令字符,根据发送数据包的目的不同,opcode字段的值也不同.block是该数据包的编码,主要是当发送方将数据分开发送时,接收方通过该字段判断报文的先后顺序.IP、PORT和MAC可以存储发送方的地址信息.Message字段存储所需传输的其他信息.
3 客户端查看设备结点在线情况及其 信息
图3 客户端查看在线设备信息流程
相较于程序服务器通过运行特定程序,实现保存、接收和发送信息等功能,邮箱只能通过邮件的接收和发送,被动地实现存储和发送信息的功能.因此,设计了客户端查看设备结点在线情况及设备信息的方案,如图3所示.
为了具有代表性,图3中包含了设备结点与客户端在同一NAT子网下及设备结点与客户端在不同NAT子网下两种情况.
在该方案中,客户端是主动发起连接方,设备结点是等待被连接方.因此,将设备结点设置为“查询邮箱”阶段,即定时访问邮箱,查询是否有相应设备端的指令邮件.下面是该方案的具体流程:
1)客户端发送“请求设备结点在线情况”的邮件至邮箱,并设置T1时间后,查询邮箱.
2)设备结点处于“查询邮箱”阶段,查询时间间隔为T2.当某个设备结点查询到“请求设备结点在线信息”的邮件时,便返回一封包含有该设备结点ID及其他设备信息的邮件至邮箱.
3)在设定时间结束后,客户端登录邮箱并查询邮件,记录下设备结点返回的邮件内容信息.
值得注意的是,为保证所有在线的设备结点返回的邮件均能被客户端读取,考虑到存在时间延迟(主要为设备端登陆邮箱至发送邮件所花时间),因此设置T1=90 s,T2=60 s.
经过上述流程,客户端已汇总所有的在线设备结点返回的邮件信息.若客户端未能查询到某设备结点返回的邮件,则认为该设备处于离线状态.值得注意的是,在进入下一步骤之前,客户端查看设备结点在线情况的步骤可以反复进行.
4 客户端连接指定设备结点
客户端经查询设备结点在线情况后,已获取在线设备结点ID及IP地址等信息,便可以选定某一在线设备进行连接.
图4 客户端连接指定设备结点
客户端连接特定设备结点的具体流程如图4所示.
由图4可知流程如下:
1)客户端发送请求NAT穿越邮件至邮箱,邮件主题中包含了所要连接设备结点的ID.
2)设备结点查询邮箱.
3)当发现该邮件主题中ID号与自身ID相同时,便向客户端地址进行“打洞”.打洞是网络通信的常用技术,其从服务器上获得目标主机的外网端口和地址,可向目标端口和地址传输一个数据包.若邮件主题中ID号与自身ID不同,则不作应答.
4)指定设备结点“打洞”完成后,便返回一封确认邮件至邮箱.
5)客户端查询到该邮件.
6)客户端向指定设备结点发送UDP数据包进行连接.
7)设备结点收到来自客户端的数据包,向客户端返回数据包.客户端和指定设备结点P2P连接建立.
5 程序的稳健性
在建立P2P连接之前,客户端和设备结点是通过收发邮件进行通信的,若没有对邮件进行特定处理,由于邮件的堆积,很容易产生邮件干扰问题.
通过对邮件进行编码,达到解决邮件互相干扰问题的目的.具体的运行机制如图5所示.
图5 解决邮件互相干扰问题
图5中设置了两个典型的设备结点:设备1在客户端第一次请求在线设备结点信息之前,就已经连入网.设备2为后连入网的设备.在该方案中,设s为seq字段的值,客户端和设备端程序中分别设置变量c和d,初始值为1.下面进行具体分析:
1)客户端发送“请求在线”邮件,该邮件主题中s=c=1.邮件发送完成之后,c=c+1=2.
2)设备结点检测到“请求在线”邮件,判断c<=s是否成立.若是,该设备结点返回一封包含该设备ID及其他设备信息的确认邮件至邮箱,并置c=s+1=2,客户端在一定时间后访问邮箱,下载并即时删除设备结点返回的邮件.若不成立,则设备端认为该邮件已阅读过,不会进行下一步操作.
第一步和第二步交替进行,则可解决客户端请求设备结点在线情况中邮件干扰问题.当客户端经过n次查询设备结点在线情况结束后,则进入客户端连接在线设备结点步骤.此时,c=d=n.
3)客户端发送“请求连接”邮件,邮件主题中包含指定连接设备的ID,并令s=c=n,邮件发送完成后,将c置为初始值1.设备结点检测到该邮件,判断邮件ID与自身设备ID是否相符,以及c<=s是否成立.如果两者都成立,则进入相应连接状态,置c=1.如果两者有一项不成立,置c=0.
以上步骤是一个完整的系统流程.在一个流程结束后,客户端和设备结点返回初始状态(置c=d=1),准备下一流程.
考虑到实际情况,采用“阅后即删”和对邮件进行编号相结合的方法,即在对邮件进行编号的基础上,对原有设计进行相应改进:
第一步骤中,当客户端收集完设备结点在线信息后,客户端负责删除“请求在线”邮件以及设备结点返回的邮件.
第二步骤中,指定连接的设备结点负责删除客户端的“请求连接”邮件,客户端负责删除设备结点返回的邮件.
由于在该系统中,一个完整的客户端查看设备结点在线情况并进行连接的流程,所耗时间大于2 min,而删除邮件指令的响应时间在1 min以内.因此,采用两个方法结合的办法,可以有效避免邮件的互相干扰问题.
6 添加固件升级模块
在设备端与设备结点建立P2P连接后,基于以下两点增加设备端的固件升级功能:
1)开发人员不可能在初期设计出十全十美的程序,程序的漏洞也许在程序发布后才体现出来,需要采取固件升级的方法解决程序bug.
2)随着需求的不断提升,现有的设备功能不能满足需求.因此需要进行固件升级增加相应功能.
而在一个物联网系统中可能存在成百上千个设备结点,这些设备结点也可能处于不同地点.如果让开发人员至现场直接对设备结点进行固件升级工作,将会是一个庞大的工程.因此,物联网系统中设备结点的固件升级与本研究的远程连接相结合,有一定现实意义.所选用的固件升级模块的具体设计方案参见文献[7].
7 实验仿真结果
实验仿真主要包括两个部分:1)客户端查看在线设备结点信息;2)客户端与指定在线设备建立P2P连接及远程固件升级.
在本章的实验仿真中,设置了一个运行在VS2013上的客户端程序,以及两个设备结点:S20C开发平台,并将客户端和设备结点分别设置在同一局域网下及不同NAT子网下两种网络环境.
下面分别阐述和分析实验结果.
7.1 查看在线设备结点信息部分
图6 客户端查看设备结点信息的程序运行截图
首先,第一步骤为点击“Online Devices”按键,发送请求在线设备结点情况的邮件.当所有在线设备结点查询到该邮件并返回设备信息邮件后,在线设备栏显示在线设备结点的ID.这时可以通过选择设备列表中的在线设备结点,在设备信息栏中查询该设备结点的详细信息.在客户端界面的Status Bar中显示了客户端程序运行状态.当第一步骤完成后,在线设备结点ID显示在Online Devices中(本例在线设备为Device 1和Device 2).在Device List中选定某个在线设备结点,则其相应信息显示在Device Information栏中,如图6所示.
图7为设备结点(Device 1)检测到客户端发送的邮件并返回相应邮件.
图7 Device 1的程序运行截图
图8显示了客户端发送的请求在线设备信息邮件和设备结点(Device 1和Device 2)返回的邮件.
图8 步骤1邮箱中的邮件信息
7.2 远程连接与升级部分
当第一步骤完成之后,可以进入远程连接与升级部分.首先点击“Updating File”按钮,选择本地的升级文件.之后在Device List中选择待固件升级的在线设备ID(本例为Device 1),选中的设备ID会在Devices for Updating栏里显示.接下来再点击“Update”按钮,执行连接设备结点及固件升级操作.
值得注意的是,在设备端“打洞”之后,客户端会先尝试进行局域网连接,若在一定时间内设备端没有响应,则尝试不同NAT子网的连接.
图9 不同NAT子网下,客户端与设备结点建立连接界面
图9为不同NAT子网下,客户端与设备结点建立连接界面,方框中显示了客户端与设备结点在不同NAT子网下时,两者成功进行NAT穿越并建立P2P连接,之后进行远程固件升级.
图10为设备端的调试信息,图中方框部分是客户端与设备端建立P2P连接之后,设备端(该例为Device 1)的程序运行固件升级部分.
图11为步骤2邮箱中邮件信息,显示了远程连接与固件升级的步骤中,客户端和设备端在建立P2P连接时通过邮件进行地址交换.
8 总 结
分析了NAT和NAT穿越理论、邮件服务器的特点,提出了一种新的解决NAT之间通信问题的方案——利用邮件服务器的NAT穿越方法,设计了一个远程控制系统,并对系统进行仿真测试.与原有的利用服务器进行NAT穿越的方法对比,本方案具有降低成本,增加系统稳定性以及更强的拓展性等优点,在小规模、低强度,对系统速度要求不高的应用情况下,可以作为一种替代方案使用.
图10 设备端的调试信息
图11 步骤2邮箱中邮件信息
[1] 毛燕琴,沈苏彬.物联网信息模型与能力分析 [J].软件学报,2014(8):1685-1695.
Mao Y Q,Shen S B.Information model and capability analysis of the Internet of things.Journal of Software,2014,25(8):1685-1695.
[2] 闫薇.基于P2P技术的视频会议系统的研究与设计 [D].哈尔滨:哈尔滨理工大学,2007.
Yan W.Research and design of video conferencing system based on P2P [D].Harbin:Harbin University of Science and Technology,2007.
[3] 彭祥.第三方不完全代理的TCP穿透NAT的技术研究 [D].长沙:湖南师范大学,2014.
Peng X.The research on NAT traversal of TCP based on incomplete third-party agent server [D].Changsha:Hunan Normal University,2014.
[4] 曹申会.NAT穿越技术研究与实现 [D].南京:南京邮电大学,2013.
Cao S H.The study and implementation of NAT traversal technology [D].Nanjing:Nanjing University of Posts and Telecommunications,2013.
[5] 李志博,余正红,尹朝庆,等.邮件服务智能代理的研究 [D].武汉:武汉理工大学,2007.
Li Z B,Yu Z H,Yin C Q,et al.The research on Internet agent for mail server [D].Wuhan:Wuhan University of Technology,2007.
[6] 黄亮.一个基于UDP协议的P2P即时通讯软件的设计与实现 [D].武汉:华中科技大学,2011.
Huang L.The design and implementation of an UDP-based P2P instant messaging software [D].Wuhan:Huazhong University of Science and Technology,2011.
[7] 郑泽铭.物联网智能设备远程固件升级的设计与实现 [D].上海:复旦大学,2015.
Zheng Z M.Design and implementation of remote upgrading for IoT [D].Shanghai:Fudan University,2015.
(责任编辑:包震宇,顾浩然)
Remote upgrade and control system of NAT crossingbased on mail protocol
Chen Lei, Zhang Yonggang, Zhou Xiaolin, Zheng Lirong
(School of Information Science and Technology,Fudan University,shanghai 200433,China)
This paper proposes a new scheme which uses transmits information such as related IP address and port by the mail server POP3 and SMTP protocol to realize net address turning (NAT) crossing.The UDP connection between client and device node is realized by using "burrow" technology.Compared to the scheme that uses procedure server to realize NAT crossing schemes by the "burrow" technology,our scheme has advantages of saving operating costs,improving the stability of the system and enhancing the transferability of the system.With multiple equipment node,and a variety of network environment,we introduces the firmware update module,designs and realizes the remote upgrade and the control system of an intelligent device of Internet of Things based on the proposed scheme,and discusses the robustness of the system.
NAT crossing; P2P connection; POP3; SMTP; UDP
10.3969/J.ISSN.1000-5137.2017.01.026
2016-11-27
国家科技支撑课题项目(2015BAD17B04)
陈 磊(1993-),男,硕士研究生,主要从事网络通信方面的研究.E-mail:14210720168@fudan.edu.cn
导师简介: 周小林(1973-),男,副教授,主要从事无线通信、移动通信、信号处理等方面的研究.E-mail:zhouxiaolin@fudan.edu.cn(通信联系人)
TN 929.5
A
1000-5137(2017)01-0156-07