浅谈基于无线通信的远程监控系统中TCP与UDP协议的选择


   

摘要:本文将对TCP与UDP协议进行分析,并针对基于无线通信网络的远程监控系统在各种特殊的工业应用场合中的协议选择进行讨论。 

   关键词:无线通信;TCP/UDP协议;远程监控 

   中图分类号:TN91 文献标识码:A文章编号:1007-9599 (2010) 11-0000-02 

   The Selection of TCP and UDP Protocols in Remote Monitoring System Based on Wireless Communication 

   Li Xiaoguang 

   (Hubei Three Gorges Polytechnic,Yichang443000,China) 

   Abstract:TCP and UDP protocols will be analyzed,and the wireless communication network based remote monitoring system for industrial applications in a variety of special occasions in the protocols chosen as discussion. 

   Keywords:Wireless communication;TCP/UDP protocol;Remote monitoring 

   在工业控制领域中,人们往往需要在特定的地点采集数据、分析数据,并及时的根据分析结果选择恰当的处理方式。但是在很多具体的工业应用场合中,需要监控的地域非常广,或者监控的数据种类繁多,选择大面积的布线来连接设备,从设备上获取监控数据,是不经济、不合理的,也是不利于维护的。利用无线网络实现远程监控系统,是这种情况下的最佳选择。 

   利用无线通信网络,可以将多台监控设备上的数据即时发送到Internet网络上的远程监控中心服务器,在服务器上对数据进行整理、分析,并根据分析结果,在监控中心服务器上自动或人工的对设备进行远程控制。 

   

   远程监控系统的简单模型 

   监控设备与监控中心服务器之间,主要采取TCP或UDP网络协议来传输数据,本文将对TCP与UDP协议进行分析,并针对基于无线通信网络的远程监控系统在各种特殊的工业应用场合中的协议选择进行讨论。 

  TCP与UDP两种协议的特点与报文分析 

   (一)TCP(传输控制协议)是Transmission Control Protocol的简称,是一种面向连接的、可靠的、基于字节流的传输层通信协议。在客户端和服务端使用TCP协议交换数据前,双方必须先通过三次握手建立一个连接,然后才能传输数据。TCP协议提供超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能从一端传输到另一端。 

   源端口号(Source Port):标识主机上发起传输的应用程序接收TCP服务的端口, 占16位。 

   目的端口(Destination Port):标识主机上传输要到达的对方应用程序接收TCP服务的端口,占16位。 

   顺序号字段(Sequence Number):标识从TCP源端向TCP目标端发送的数据首字节的序号;在连接建立阶段,该字段用于识别传输中的初始序列号,占32位。 

   确认号字段(Acknowledgment Number):标识TCP目标端所期望收到TCP源端的下一个数据字节序号,占32位。只有ACK标志为1时,确认号字段才有效。 

   数据偏移字段(Offset):标识TCP数据开始位置,占4位。 

   预留(Reserved):为了将来定义新的用途所保留,占6位,通常为0。 

   标志位字段(Flags):标识控制位信息,占6位。 

   各控制位含义如下(顺序排列): 

   URG:紧急指针字段(urgent pointer)有效。 

   ACK:确认序号有效。 

   PSH:接收方应该尽快将这个报文段交给应用层。 

   RST:重建连接。 

   SYN:发起一个连接。 

   FIN:释放一个连接。 

   窗口大小字段(Window):标识本机期望一次接收的字节数,占16位。 

   校验和(Checksum):对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证,目标端要与源端数值结果完全一样,从而证明数据的有效性,占16位。 

   紧急指针字段(Urgent Pointer):紧急数据偏移量,占16位。 

   选项字段(Option):指定各种TCP选项,可能包括“窗口扩大因子”、“时间戳”等选项,占32位。 

   (二)UDP(用户数据报协议)是User Datagram Protocol的简称,是一种无连接的、面向数据报的传输层通信协议。UDP不提供可靠性,它只是把应用程序传输给IP层的数据报发送出去,但是并不能保证数据准确无误地到达目的地。UDP在传输数据前不用在客户端和服务端之间建立连接,自然就不需要维护连接状态,因此服务端可以同时向多个客户端传输相同的数据,UDP没有检验数据、超时重发等机制,故而传输速度很快。 

   UDP协议报文格式如下: 

   0 8 16 2431 

   16位源端口 16位目的端口 

   16位数据报长度 16位效验和 

   数据 

   UDP协议报文格式 

   源端口号(Source Port):标识主机上发起传输的应用程序接收UDP服务的端口,占16位。 

   目的端口(Destination Port):标识主机上传输要到达的对方应用程序接收UDP服务的端口,占16位。 

   数据报长度(Length):UDP报文首部的长度(8字节)与UDP数据长度的总和,占16位。 

   校验和(Checksum):对整个UDP报文段,即UDP头部和UDP数据进行校验和计算,并由目标端进行验证,目标端要与源端数值结果完全一样,从而证明数据的有效性,占16位。 

   对比TCP协议与UDP协议的报文格式可以得知,TCP协议的报文首部(数据之前的部分)最小为20字节,而UDP协议的报文首部则只有8字节,要精简的多。在一般情况下,传输相同长度的数据,使用UDP协议比TCP协议的数据流量要小。 

  工业应用场合的特殊要求与TCP/UDP协议的讨论 

   (一)要求远程控制 

   在很多工业应用场合中,都要求监控中心服务器能够根据监控设备发送过来的数据,及时进行操作控制,例如开关监控设备,修正监控设备的时间等。这就意味着服务器与监控设备之间必须保持一个长期的、可靠的数据双向传输的通道。 

   TCP协议本身就是一种面向连接的传输层协议,提供一个双向的传输通道,能很好的满足随时传输的要求。不过TCP连接在也存在着时间限制,如果长时间没有数据流量,会自动降低此连接的优先级直至强制断开此连接。对于服务器而言,维持 TCP连接也需要耗费一定的系统资源,如果出现异常情况,例如TCP连接的双方的网络中间节点(例如路由器、网关等)停止工作,将导致服务器的TCP连接未能正常关闭但又失去效用。失效的 TCP 连接已经不能再传输任何数据,如果连接长时间无法关闭,可能会导致服务器系统资源(主要指内存资源和Socket 资源)被耗尽而无法响应新的连接请求。为了解决这些问题,在实际应用中往往需要采取定时发送心跳包的方式,来维持并及时更新TCP的连接状态,服务器接收心跳包并依此判断TCP连接是否有效。 

 相比之下,UDP协议在这种情况下的应用则显得比较困难。UDP协议没有建立连接,只是发送数据,但是由于无线通信网络中的端口资源是有限的,在相对比较短的一段时间内,如果没有数据流量,端口号就会重新分配给其他人使用,这时监控中心服务器再通过这个端口发送数据,监控设备就无法接收到了。如果选择UDP协议传输数据,必须以较高的频率发送心跳包来维持端口号,才能保证能够随时的进行双向通信。 

   (二)要求数据的实时性 

   数据在网络中的传输,往往有一定的延时,这取决于具体的网络环境。比如上网的高峰期,大量的用户占据了带宽,可能会使得网络状况非常糟糕,数据严重滞后、异常。在某些特定的工业应用场合,对数据的实时性要求比较高,数据一旦过时则失去效用。在这种情况下,选择UDP协议,容许部分数据包丢失,在网络拥塞时可以改善接收数据严重滞后的情况。 

   (三)要求较低的数据丢包率 

   数据包在传输过程中,可能因为各种异常情况造成传输失败而丢失,这种现象称之为丢包。某些工业应用场合中,例如电力、水务抄表、环保监测等,不容许传输过程中的数据丢失,很显然具有数据重传机制的TCP协议比UDP协议更能保证数据的完整性与可靠性。 

   (四)连接数量比较大 

   TCP协议需要通信双方建立一个连接,但是当监控设备达到一定数量后,监控中心服务器可能根本容纳不了那么多并发连接。例如全城范围内遍布有几万个监控点,在这种情况下,只有选择UDP协议与监控设备进行通信才能保证一些超大规模的应用。 

   (五)要求降低费用 

   与无线联网费用直接相关的就是数据流量了,数据流量低,费用相对就较低。虽然TCP协议本身的报文首部要比UDP协议长,但是UDP协议在某些工业应用中需要保证能够随时双向的传输数据,必须通过发送大量的心跳包来维持端口号。如果发送心跳包的频率过高,使用UDP协议的实际数据流量可能反而比TCP协议还要大,需要根据实际情况进行测算来选择方案。 

   三、总结 

   总的来说,多点分散、数据量小、实时性要求高、终端数量多的应用,更适合选择UDP协议;而数据量大、数据可靠性要求十分严格、终端数量较少,以及部分特殊应用,TCP协议是更好的选择。 

   当然,使用哪种协议也并不是绝对的,例如TCP协议可以使用多台服务器,将其架设成分布式系统的方式,来缓解单台服务器的压力和资源占用问题;而UDP协议也可以通过在应用程序中建立验证机制的方式来保证数据的完整性与可靠性。在具体的工业应用中,还需要根据实际的情况和需求,通过业主单位、设备供应商与系统集成商三方的交流达成共识,来确定一个相对合理的最终方案。 

   参考文献: 

   [1]施伟年,凌海宏.GPRS网络上数据传输协议之讨论[J].电力系统通信.2004(8) 

   [2][美]Charles M.Kozierok.TCP/IP指南(卷1):底层核心协议[M].陈鸣,贾永兴,宋丽华译.北京:人民邮电出版社,2008 

   [3]wxf0204.GPRS/CDMA行业应用中的TCP与UDP的比较[N].CSDN社区,2006年4月1日


商务咨询QQ
技术支持QQ
反馈意见