首页 > 技术发展 > UDP协议通信需要建立连接吗?

UDP协议通信需要建立连接吗?

时间:2020-06-25 来源:方正智芯 浏览:

在西门子PLC的开放式以太网通信(Open User Communication)中,无论是使用TCP协议还是UDP协议,首先都需要使用函数TCON来建立连接。善于思考的小伙伴们肯定会提出一个问题:UDP协议不是面向非连接的协议吗?为什么还需要使用TCON来建立通信连接呢?今天这篇文章,我们就来回答这个问题。

我们把TCP协议和UDP协议做个对比,首先明确结论:TCP是面向连接的协议;UDP是面向非连接的协议。这里的“连接”,是指通信双方在协议层上建立的一条专用的数据传输通道。

TCP协议是有真实的数据传输通道的,它的执行跟打电话的过程很类似。一个人要想给另一个人打电话,首先要拨号,一旦对方接起电话,两人之间就建立了一条专用的通信信道。如果出现断线,则需要重新拨号,再次建立连接才能继续通话。TCP的传输过程也是类似的,通信的发起方必须和接收方建立连接,才能进行通信。一旦连接中断,则需要重新请求建立连接。TCP的传输具有确认机制,是可靠的、安全的。当然,相对慢些。

UDP协议则不同,它不需要在两个通信伙伴之间建立真实的通信信道,其执行过程跟写信很类似。寄信人将收信人的名称和地址写到信封上,然后把信投到邮箱。至于这封信是顺利到达收信人的手中还是在中途遗失了,它完全不管。UDP协议没有确认重传机制,不需要在通信伙伴之间建立通信连接,因此把它称作是“面向非连接”的协议。其优点是传输速度较快。

好了,那么问题来了。既然UDP是面向非连接的协议,为什么在西门子PLC的开放式以太网通信(Open User Communication)中,在使用UDP传输前,要调用TCON函数来建立“连接”?

其实,TCON函数即可用于TCP传输的连接,也可用于UDP传输的连接。用于TCP通信时,它是真实在通信伙伴之间建立连接;而用于UDP通信时,它只是用来配置通信的参数(比如,通信伙伴的IP地址和端口号)。用户程序通过调用TCON函数把UDP的通信参数交给PLC的操作系统,之后它就不管了。操作系统负责把这些信息以UDP报文的形式发送出去。因此,在UDP通信时,TCON函数是在用户程序和操作系统之间建立了“连接”,而不是与通信伙伴建立连接,此“连接”非彼“连接”。

下面这张图,是博途(Portal)环境下TCON函数的方框图:

好了,关于西门子PLC开放式以太网通信的连接函数TCON就介绍到这里。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐