一、Socket:用于和OPC UA客户端通信
1、Socket和OPC UA的定义
1>Socket:只是一个API,提供了一个使用 TCP(以及其他协议)的方式,用于在同一台计算机上的进程之间或不同计算机之间的进程通信
- 一个API
Socket 是一种应用程序编程接口(API),它提供了一系列函数、类或方法,允许开发者编写代码来执行特定的任务。在这个上下文中,任务是实现进程间的通信。
Socket 不仅限于跨网络的远程通信,也可以用于同一台计算机上运行的不同进程之间的本地通信。
- 提供了一个使用 TCP(以及其他协议)的方式
通过 Socket API,开发者可以利用多种网络传输协议(如TCP、UDP等)进行数据交换。TCP(传输控制协议)是一个面向连接的、可靠的协议,确保数据包按顺序到达并且没有丢失;而其他协议(例如UDP)则提供了不同的特性组合。
2>OPC UA:机器对机器(M2M)通信和物联网(IoT)应用
OPC UA (Open Platform Communications Unified Architecture) 是一种工业通信协议,用于安全可靠地交换数据。它被广泛应用于制造业和过程控制行业中,以实现机器对机器(M2M)通信和物联网(IoT)应用。OPC UA 提供了一个服务导向架构,允许客户端通过网络与服务器进行交互,获取实时数据、历史数据以及配置信息等。
OPC UA 使用 TCP 作为其底层传输机制。OPC UA 的消息格式被封装在 TCP 数据包中进行发送和接收。这种方式提供了可靠的数据传输,并且适用于大多数工业自动化场景。
2、具体理解Socket
socket到底是什么?_哔哩哔哩_bilibili
1>为什么说Socket只是一个API?
如下图,在此项目中,服务端就是上图的Web,客户端就是上图的OPC Client。
使用IP+端口来定位:
1》对于 TCP、UDP网络协议
可以把socket想象成打电话,电话号码就是IP地址,打电话找谁就是端口号,协议就像是你说的是方言还是普通话。
TCP就像是你每说一句话,对方都要说一声:"清楚明白"!
UDP就是,什么都不管,只管说就行了,也不管对方是否明白!
2》把上述所有协议公用的逻辑部分抽象成一个数据结构。socket是最基础的结构,维护任何协议都有可能会用到的。
INet_Sock是网络传输功能的Sock,在Socket的基础上还加入了TTL、IP地址、端口这些网络传输相关的字段信息。
3》【Socket只是一个API的原因】Socket变成了一个特殊的文件,用户可以在用户空间使用句柄fd来操作内核Sock的网络传输能力。【类似前后端分离架构】
Socket起源于Unix,而Unix/Linux基木哲学之一就是“一切皆文件”,都可以用“打开/Open”→“读写/write/read”→“关闭/close”的模式来操作。
创建sock同时也创建一个文件,文件有个句柄FD(即文件系统里的身份证号码,通过它可以唯一确定是哪个sock)。
将FD句柄暴露给用户之后,用户操作这个句柄文件,系统就会将操作指向内核sock结构。
所以这部分就可以抽象理解为一个简单的API接口。让用户更方便的实现特定的网络编程功能。
2>Socket怎么实现网络通信功能?——以最常用的TCP协议为例,分为两阶段:建立连接、数据传输
通过sock结构主动发起3次握手,至此连接就算准备好了。