热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TCP/IP协议和工业以太网传输控制方法及通信模式比较1

TCPIP协议TransmissionControlProtocolInternetProtocol的简写,中译名为传输控制协议因特网互联协议,又名网络通讯协议,是Interne

 TCP/IP协议

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。OSI(Open System Interconnect)传统的开放式系统互连参考模型。《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》

《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》

《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》

数据格式

数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)
IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)
《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》

   传统的TCP/IP参考模型被分为四个层次:应用层、传输层、网络互连层和主机到网络层。各个层次上均有相应的标准协议。这些协议的结合使用构成了整个基于TCP/IP模型的网络应用。

        由于传输机制和通信模式的问题主要关联到OSI网络模型的第四层——网络传输层,所以本文重点讨论在传输层中几种以太网的差异。

  UDP和TCP机制
  在工业以太网应用中,网络互连层和传输层协议共同构成了整个系统的通信栈。不同的工业以太网方案在通信栈的构成方式、应用模型上有一定的差别,这种差别也是我们讨论的重点。其中最为典型的一个问题就是:传输层使用TCP还是使用UDP的问题
  首先我们看一下TCP/IP协议中关于TCP/UDP的说明:
  TCP&UDP分别是Transmission Control Protocol和User Datagram Protocol的英文缩写。关于两者之间最广为人知的区别就是:是否面向连接。而从工业以太网的角度,事实上,这种区别所造成的对网络性能的影响才是一个关键。具体说来:

  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方式的传输负担,也更容易实现。

  TCP和UDP选择的通信模式
  在工业以太网的关键任务——实时数据传输上,依靠的或者是传输可靠的TCP或者是传输迅速的UDP。基本上比较侧重于其中一者。对具体某一种工业以太网方案而言,在选择TCP还是UDP的问题上,还有一个重要的原因是其方案中所提供的通信模式。
  网络通信模式大体上有以下几种:
  1.Client/Server(客户端/服务器) 模式;
  2.master/slave(主/从)模式;
  3.peer to peer(点对点)模式;
  4.produce r/consumer(生产者/消费者)模式;
  5.Publish/subscribe(发布者/预定者)模式。

  基于TCP的工业以太网
  正是基于TCP/IP协议的可靠和稳定性,大多数工业以太网协议,如:Modbus/TCP、PROFInet、INTERBUS、MMS TCP/IP及.NET for Manufacturing等都选择了TCP/IP。由于篇幅有限,下面仅就Modbus/TCP、PROFInet做简单介绍如(图1)。

(1)Modbus/TCP
  回到对于工业以太网数据传输的特点和需求上,我们可以看到并不是所有的工业环境都需要达到微秒级别的时间要求,类似于IDA所采用的RTPS模式虽然能使工业以太网的传输层性能达到相当的标准,但同时又增加了过多的成本。另一方面,某些看上去似乎需要UDP协议来体现其高速性能的场合,其实可以通过在物理层和链路层的优化的基础上(如采用星型交换机等),结合工业以太网数据量小的特点,采用传统方式的TCP协议来实现。这样即省去了在使用UDP协议时必须做增强开发来构造通信的确定性方面所付出的高额代价(TCP本身就是确定性的

 

),又可以实现工业以太网的实时性要求。这方面的一个典型就是施耐德公司的一个相对价格低廉的工业以太网方案——Modbus/TCP协议。

  Modbus/TCP协议是在Modbus协议的基础上发展而来的。为了尽量地使用已有成果,Modbus/ TCP协议的实现是在不改变原有Modbus协议的基础上,只是将它的传输层协议简单的移植到TCP/IP上。因此在TCP/IP网络中Modbus/TCP使用传输控制协议(TCP)进行Modbus应用协议的数据传输。参数和数据使用封装的方法嵌入到TCP报文的用户数据容器中进行传送。另外地址和校验在Modbus/TCP中也由底层的TCP协议来完成。由于传输层以上遵循Modbus协议,所以采用C/S结构,在数据传输前进行之前,需要在客户和服务器之间建立一个TCP/IP连接。服务器使用端口502作为Modbus/TCP连接的端口。连接的建立通常由TCP/IP的Socket接口的软件协议自动实现的,因此对应用完全透明。

  一旦客户和服务器之间的TCP/IP连接建立,同样的连接可以根据要求的方向用来传输任意数量的用户数据。客户和服务器还可以同时建立多个TCP/IP连接,最大的连接数量取决于TCP/IP接口的规范。在输入输出数据循环传输的情况下,永久的连接通常维持在客户和服务器之间,只有在发生特殊事件而有必要传送参数和诊断报文时,连接才能在每一次数据传送后被关闭,需要时再次建立。这也是Modbus/TCP在工业以太网中采用TCP做为传输层协议而不采用速度更快的UDP协议的原因所在。

  虽然Modbus/TCP由于在传输层采用TCP协议,而使其不得不在传输层协议以下的诸层采取更有效的实时性策略。但与PROFINet,Ethemet/IP和IDA等方案相比,Modbus/TCP在其开放性、简单和稳定的性能上具有优势,是一个具有较高的性能价格比的工业以太网方案。

《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》

(2)ProfiNet 
  事实上,在工业以太网应用中,网络互连层和传输层协议并非仅仅局限在TCP/IP之上。在由Profibus Internationa(PI)组织提出的基于以太网的自动化标准——PROFINET实时以太网中,就采用了独立的实时通道来扩展系统的实时性能。  

《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》
《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》图2

  PROFINET通信模型如(图2)。可以看到,在PROFINET应用中,其标准参数(如设备参数、组态和读取的诊断数据)是由传统的TCP/UDP+IP+以太网来传送的。与之对就的是非实时的数据传输标准通道。但其实时数据则由PROFINET提供的两类实时通信通道RT和IRT完成。实时通道RT是软实时SRT(Software RT)方案,主要用于过程数据的高性能循环传输、事件控制的信号与报警信号等。它位于旁路第3层和第4层,可以提供精确通信能力。为进一步优化通信功能,PROFINET根据IEEE802.1p定义了报文的优先级,最多可用7级。而实时通道IRT采用了IRT(isochronous realtime)等时同步实时的ASIC芯片解决方案,以进一步缩短通信栈软件的处理时间,特别适用于高性能传输、过程数据的等时同步传输、以及快速的时钟同步运动控制,其可以在1毫秒时间周期内,实现对100多个轴的控制,而抖动不足1微秒。

应用层

向用户提供一组常用的应用程序,比如
电子邮件、文件传输访问、
远程登录等。远程登录
TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用
FTP协议来提供网络内机器间的文件拷贝功能。 应用层协议主要包括如下几个:FTP、TELNET、DNS、SMTP、NFS、HTTP。
FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。

《TCP/IP协议和工业以太网传输控制方法 及通信模式比较1》


推荐阅读
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • 本文详细解析了高性能通信库 NanoMsg 的框架及其应用场景。其中,BUS模式支持多对多的简单通信方式,消息会传递给所有直接连接的节点。REQREP模式则适用于构建无状态的服务集群,用于处理用户的请求,每个请求都需要一个相应的响应。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本章介绍了TCP/IP协议族中的链路层,其主要功能是为IP模块发送和接收IP数据报。链路层还支持一些辅助性协议,如ARP。此外,本文详细探讨了不同类型的链路层技术及其应用。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
author-avatar
慕容盼烟迎曼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有