刚开始接触PROFINET的时候,还不知道从哪里入手,东瞧瞧,西看看,Zui终觉得还是从协议入手,可是那个时候的我也是刚刚入职不久,说实话,协议是什么不是很懂。胶片和手册中都提到PROFINET协议和TCP协议可以并存,里面也提到和TCP协议做对比,还提到建立通信连接是通过UDP协议的,而PNIORT通信是不需要TCP和UDP协议的,当时看到这样的话,也是一头雾水,到底PN和TCP/UDP协议到底有什么关联呢?两者到底是怎样工作在PN通信中的?带着这样的疑问,我想刚刚使用VB通过Socket来编写TCP协议与TDC通信,还是先了解一下TCP/IP协议吧,毕竟我还是觉得自己更加的熟悉(就自以为是了,哈哈!),却陷入了TCP/IP的陷阱,这是一个比PN难百倍的协议。经历在技术支持工作超过15年,我也不敢说我精通TCP/IP协议,我只能说略懂,嗯,对,略懂而已!
手册和胶片中常常说TCP的协议特点,如下:
遵循RFC793,是开放式协议
可靠的,面向连接的,字节流的点对点通讯协议
IP即网际协议,负责将消息从一个主机传送到另一个主机。在传送的过程中可能被分割成一个个的小包
在接收端收到后再根据顺序号将其正确地还原,保证了数据包在传送中准确无误
数据包正确的到达后,发送方得到这些分段的一个应答
错误,重复以及丢失会重新发送数据
通过“滑动窗口”进行流量控制
通过端口号可实现多路复用
下面我就通过对TCP/IP略懂的知识,给大家介绍一下,TCP/IP协议是怎样的一种协议。
作为开放式协议,显而易见,你也可以用,我也可以用,无论是西门子还是第三方设备,只要支持TCP/IP都遵循RFC793,即都可以相互通信。对比S7协议,这是西门子自己独有的协议,只有西门子自己支持自己产品间的通信,不是开放式的协议。
面向连接,指的是TCP/IP通信是要先建立连接的,才能数据交换,建立连接的方式就是我们常常听到的所谓的三次握手。字节流的通信,大家会觉得这三个字很简单,其它协议交换的数据信息都可以以字节为单位,那么关键在于“流”这个字眼。看到这个字,大家的脑海里闪现的肯定是液体,或者想到的是水,那么TCP/IP似水一样的流动,向接收端发送字节流,既然像水,接收端就像一个容器,接收这些水,那么你会区别这里面的水,哪些是先倒入的,哪些是后倒入的?显而易见,你无法区分,才会有你在TCP/IP通信的时候,处理可变数据长度时的尴尬。
对于IP协议,这个TCP协议为啥还要关联IP协议,总是凑成TCP/IP协议呢?这个IP协议的作用是大的很呢,可以说法力无边!这要从ISO/OSI参考模型的第三层说起,第三层IP的主要作用有两点,第一点是选路,也就是我们常说的路由,帮助IP数据从一个网段路由到另一个网段,这时IP地址就有用了。第二点就是分片,作为工控工程师,我们在做以太网通信时,应该知道以太网帧数据的长度是46-1500Bytes,这是由以太网的物理特性决定的,通常1500Bytes被称为数据链路层的Zui大传输单元,即MTU。IP的数据报文从理论上Zui大可以传输64KB数据,在以太网上的传输数据长度却不能,IP数据报大于1500B时,即大于MTU,发送方的IP报文即会被分解成若干片,这样每一片都小于或等于MTU的大小。而接收方则对这些报文的分片进行重组。由于可能网络中各种状况的出现,例如其中一片丢失,整个IP报就不能完成重组,整个IP报就会丢弃,IP报是不可靠的传输协议。