通信协议是一种分层结构的,根据ISO的7层模型通信协议分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。用户通过以太网透明传输协议实现串口数据和以太网数据的转发,应用模型如图1所示。
图1. 以太网透明传输演示图
所谓以太网网络透明传输协议(简称为“以太网透传”)是指网络协议的应用层数据和串口协议的用户数据完全一致,不存在格式转化问题,形象地比喻为“透明传输”。比如网络数据应用层数据内容为字符“a”,那么串口协议的用户层数据也是“a”,用户电路板收到的数据也是字符“a”。
那么用户数据是如何从计算机传给用户串口板的呢?这首先需要了解网络协议和串口协议的区别。
1.网络(TCP/IP)协议分为以太网层、IP层、TCP或UDP层、用户数据层。以太网层表示了网络通信介质,例如光纤、无线、有线以太网线。IP层中的关键点是包含了IP地址,IP地址是每个网络设备的地址。TCP或者UDP层的关键点是端口,端口用于区分一个IP地址下的多个应用程序。用户数据层携带用户需要传输的数据。
2.相对而言串口协议,没有IP层和TCP层这两层。
这里有两个问题:
1.串口协议如何弥补网络协议缺失的IP层和TCP层?实际上在模块中已经保存了IP层、TCP层的关键点——IP地址和端口。每个模块都具有一个可以设定的IP地址,同时也有一个TCP或者UDP的端口,这样计算机就可以通过这个“IP+端口”将网络数据发送给模块。同样地模块也保存了目的计算机的IP和端口,这样也可以将数据发送给计算机。联网模块内部保存的IP和端口解决了串口协议中没有IP和端口的问题。
2.如何使用透明传输协议?
2.1调用Socket API函数send()和recv()即可发送网络层数据,例如执行send("a")就可以将字符“a”发送到串口电路板。调用recv(buf)即可将串口电路板发送的数据接收到缓冲区buf中。
2.2另外也可以使用网络调试工具——SocketDlgTest。通过该工具可以类似串口调试工具,进行发送和接受应用层数据。
2.3更为简单的方式是用户可以使用虚拟串口技术将网络端也模拟为一个串口,计算机还是用串口进行收发。
楼主最近还看过