1. 概述
本文以亚册SDLC-ETH协议转换器为例,描述HDLC、UDP协议转换应用。
SDLC-ETH提供2、4路高速多协议同异步串口,1路10/100/1000M自适应以太网口,实现串口与以太网之间的协议转换。
2. UDP基础
2.1 UDP Client & Server
不同于TCP协议,UDP协议不是以Client/Server模式工作,也没有Client端、Server端的说法。
UDP是一种无连接的协议,当HDLC协议转换器要发送UDP报文的时候,只需要知道对方计算机的IP地址和端口号就可以发送数据。
但是在工作中,为了便于理解和说明,我们往往把UDP接收方称为UDP Server,发送方称为UDP Client。按照这个说法,HDLC协议转换器充当了UDP Client的角色,计算机或服务器充当了UDP Server的角色。
作为UDP Server,并不需要知道Client的地址、甚至端口。
UDP Client必须配置UDP Server的地址或端口,即目的IP地址、目的UDP端口。
2.2 UDP报文结构
UDP报文由IP包承载,用户关心的是应用数据。
IP首部 |
UDP首部 |
应用数据 |
20~60字节 |
8字节 |
可变长 |
2.3 单播、广播与组播
2.3.1 单播
当目的IP地址为单播地址时,UDP数据采用点到点的方式传输,即只有IP地址与目的IP相符的计算机才能够收到数据。
UDP单播的优点:
● 可以跨越路由器和网关传送数据
● 非目标计算机收不到数据
单播的缺点是无法实现点到多点的数据传输。
2.4 广播
当目的IP地址为255.255.255.255,或者为所在网段的子网广播地址时(如192.168.1.255),本广播域内的所有设备,均能够收到协议转换器发出的UDP报文。
广播的优点:
● 是以最低的开销,实现一对多的数据传输
● 当目标计算机的IP地址调整修改时,协议转换器的目的IP地址一般不需要重新配置
UDP广播的缺点:
● 非目标计算机也能收到UDP报文
● UDP报文不能跨越网段(路由器)传输。
2.5 组播
如果目的IP为D类地址,即224.0.0.0至239.255.255.255之间的IP地址,加入该组播地址的计算机能够收到数据,能够比较好的实现一对多的传输。
除非经过特别的设置,组播同样不同跨越路由器传输。
3. HDLC帧结构
HDLC帧结构如下表所示,包括地址字段、控制字段、信息字段及CRC校验字段。
一般在行业通信应用中,HDLC基本用于点-点的透明传输,用户数据往往占用了地址字段、控制字段。
开始标志 Opening Flag |
地址字段 Address Field |
控制字段 Control Field |
信息字段 Information Field |
帧校验序列 FCS Field |
结束标志 Closing Flag |
0x7E |
1字节 |
1字节 |
可变长 |
CRC 2字节 |
0x7E |
0x7E |
用户数据 |
CRC 2字节 |
0x7E |
4. HDLC转UDP
4.1 应用框图
HDLC转UDP功能示意图如下,SDLC-ETH协议转换器通过同步串行接口,接收来自其他设备的HDLC帧,将其转换为UDP报文,通过以太网发送给计算机或服务器。
4.2 协议转换
为了确保用户数据的完整性,SDLC-ETH协议转换器,把完整的HDLC帧置于UDP应用数据中,转发给UDP Server。
4.3 发送UDP报文
4.3.1 UDP单播发送
SDLC-ETH协议转换器,能够提供多个转发项,把一个串口的数据转发至多个目的,从而实现一对多的传输。
SDLC-ETH单播配置示例如下,该配置能够把源自串口S1的数据转发至4个不同计算机:
UDP Server编程提示:
● 绑定目的UDP端口到接收以太网口
4.3.2 UDP广播发送
亚册SDLC-ETH协议转换器设备的广播配置示例如下:
UDP Server编程提示:
● 绑定目的UDP端口到接收以太网口
● 使能UDP广播接收选项
4.3.3 UDP组播发送
亚册SDLC-ETH协议转换器设备的组播配置示例如下:
UDP Server编程提示:
● 绑定目的UDP端口到接收以太网口
● 启动接收时,加入到组播地址对应的group
● 退出接收时,退出组播地址对应的group
4.4 UDP Server如何识别源串口
在很多应用中,例如空管自动化(ATC)应用,需要把源自多个不同串口的HDLC帧,转发给一台服务器或计算机,进行统一处理。
在这种情况下,需要有一种策略,让计算机能够知道所收的UDP报文,源自哪个串口。
4.4.1 根据目的UDP端口区分源串口
如下图所示,为每个串口设置不同的转发目的UDP端口。UDP Server计算机在不同的UDP端口接收数据,在8001端口所收报文来自串口S1,8004端口所收报文来自串口S4。
4.4.2 根据源UDP端口区分源串口
当采用目的UDP端口识别源串口方案的时候,UDP Server需要在多个UDP端口上监听和接收数据。当串口数量很多的时候,不仅UDP Server的端口资源占用过多,配置及编程的复杂度也提高不少。
为了简化UDP Server侧的实现,我们可以采用下例的配置,把每个转换都转发至UDP Server的同一端口。亚册HDLC协议转换器在转发时,会自动根据源串口调整UDP报文的源端口号,其中串口S1转发的UDP报文源端口为8001、串口S2的为8002,以下逐渐递增。
这样,UDP Server仅需在一个端口(下例为8000)监听和接收数据,然后根据源UDP端口区分源串口。如果存在多台协议转换器,UDP Server可以通过源IP区分源设备。
5. UDP转HDLC
5.1 应用框图
借助于亚册HDLC协议转换器、网关产品,计算机或服务器能够实现同步HDLC串口发送功能。
典型的应用如下图所示。计算机作为UDP Client通过以太网接口发送UDP报文,协议转换器将收到的UDP报文转换为HDLC帧,然后从同步串口发送出去。
5.2 协议转换-CRC使能
最典型的UDP转HDLC应用如下图所示,协议转换器把UDP的应用数据装入HDLC帧的用户数据区,然后计算CRC并填充FCS字段,形成一个完整的HDLC帧进行发送。
为了减轻计算机的计算负荷、降低用户编程的复杂性,一般情况下,UDP报文中不包含HDLC的FCS字段,该字段由HDLC协议转换器计算填充。
5.3 协议转换-CRC关闭
在有些情况下,用户不需要协议转换器进行CRC计算,仅需要组装为HDLC帧发送。
此时,串口的HDLC配置,需要关闭CRC功能。
5.4 UDP报文接收
5.4.1 接收单播报文
如果计算机发出的UDP报文,目的地址为协议转换器的IP地址,则为单播传输方式。
单播实现点-点的数据传输,UDP报文能够跨越路由器。
配置示例如下,使能从UDP端口8001收到的报文,转发至串口S1:
5.4.2 接收广播报文
亚册HDLC协议转换器,不需要特别的配置,能够接收广播UDP报文。
5.4.3 接收组播报文
当计算机采用组播发送UDP报文时,协议转换器需要配置该组播地址,从而能加入该group,并收到相应的组播报文。
如下图所示,UDP接收的组播地址为224.10.10.10: