上传时间:2011-12-21 来源:北京华源格林科技有限公司

  UDP和TCP机制

  在工业以太网应用中,网络互连层和传输层协议共同构成了整个系统的通信栈。不同的工业以太网方案在通信栈的构成方式、应用模型上有一定的差别,这种差别也是我们讨论的重点。其中最为典型的一个问题就是:传输层使用TCP还是使用UDP的问题

  首先我们看一下TCP/IP协议中关于TCP/UDP的说明:

  TCP&UDP分别是TransmissionControlProtocol和UserDatagramProtocol的英文缩写。关于两者之间最广为人知的区别就是:是否面向连接。而从工业以太网的角度,事实上,这种区别所造成的对网络性能的影响才是一个关键。具体说来:

  TCP作为基于连接的协议,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。而且为确保正确地接收数据,TCP会为每个封包都加上一个顺序码,并且要求在目标计算机成功收到数据时发回一个确认(即ACK)。如果在某个时限内未收到相应的ACK,将重新传送数据包。如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。

  以上的连接、包计数、接收确认握手等机制确实能使TCP协议做到为应用程序提供可靠的通信连接,使一台网络终端发出的字节流无差错地发往网络上的其他终端。但是这些操作却影响到了网络在速度上的性能。

  而UDP是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!它也没有TCP的封包所具有顺序码,接收端亦不会有响应产生及进行检查以确认是否收到重复或遗失的封包。这些都决定了UDP是作为一种不可靠的协议存在的。但是UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。

  从工业以太网的角度出发,应当从数据通信的需求上对UDP或TCP的选择问题做一个结论。首先我们来看一看在工业环境中,网络上传输的数据具有的特性。

  工业环境中待传输的信息类型包括实时过程控制数据、设备状态、监控数据、系统故障诊断数据、报警数据等。这些数据通常在量上并不大。这个特点在以往的现场总线体系中有充分的体现,例如,LonWorks现场总线的数据包长度只有12个bit,EIB现场总线数据包长度只有22个bit,等等。

  而这些数据对实时的传输的要求也不尽相同。具体说来,I/O数据对实时性要求最高。而组态、参数设置、诊断等则不太要求过高的实时性而更偏向可靠的数据传输。

  对数据传输的要求不同决定了协议的选择,在工业以太网的方案中,可以采取的方式是:

  对于对实时性要求较高的实时I/O数据,采用UDP/IP协议来传送,这时可以获得UDP的如下几个好处:

  (1)数据发送前不用建立连接,减少了开销和延迟,这一点控制系统来说是非常重要的。

  (2)UDP没有采用可靠交付,数据收发双方不用维护很多的用于记录连接状态的表。

  (3)UDP数据报首部很短,只有8字节,处理方便。

  (4)UDP取消了拥塞控制,所以发送方不会降低发送速度,这点在实时应用上非常重要。

  工业以太网而对实时性要求不太高的显式信息则采用TCP/IP来传送。这样减少了UDP方式的传输负担,也更容易实现。