一.通信协议概述:
1.定义:
通信设备双方通过共同遵从一组约定,从而使数据可在网络上进行相互传输。
打个比方,不同国家不同母语的两个人,如果要实现交流,就必须以大家都熟悉的一种通用语言来交流,比如英语。同样数据的格式只有一致,通信双方才能正常传输。
2.通信协议层次划分:
国际上通用的划分有tcp/ip四层模型和osi七层模型两种,TCP/UDP协议在两种模型中对应如下:
osi七层模型
TCP/IP四层模型
二、TCP/UDP通信协议
1.概念
TCP、UDP是最常用的传输协议,同属于传输层,不同之处在于:
TCP(Transmission Control Protocol传输控制协议):是一种面向连接的、可靠的、基于字节流的通信协议;主要传输数据较大、可靠性要求较高的;
UDP(User Datagram Protocol用户数据报协议)是一种无连接的通信,不能保证数据包被发送到目标地址;主要是传输少量数据;
打个比方:TCP连接就像打电话,用户拨特定的号码,对方在线并拿起电话,然后双方进行通话,通话完毕之后再挂断,整个过程是一个相互联系缺一不可的过程;
而UDP连接就像发短信,用户要发送短信给对方,只要输入对方的手机号码即可发送,并不需要先连接对方。
2.三次握手
TCP作为一个可靠连接需要经过3次“对话”,即我们常说的“三次握手”:
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
完成三次握手,客户端与服务器开始传送数据
UDP是面向非连接的,所以在服务端与客户端通信之前,不需要经过三次握手这个过程。
3.TCP/UDP对比
二.蓝狮在线相关产品通信模式的选择
蓝狮在线提供的无线工业级无线DTU和工业级无线路由器作为透传产品,支持TCP、UDP、MODBUS、MQTT等主流常用的协议,本章节通过实测重点对比TCP、UDP两种传输协议在DTU、路由器上传输时数据格式的差异性,对于如何实现连接以及可靠性不做对比测试。
蓝狮工业级无线DTU传输模式支持TCP、UDP协议:
1)TCP:包括FTCP、HTCP、CTCP、TCPSVR;
2)UDP:包括NUDP、HUDP、CUDP、UDPSVR;
其中:CTCP 、CUDP属于数据纯透传,即不带任何心跳包和注册包,如果要带,必须自定义设置。其余都带有心跳包和注册包。
以蓝狮BMD100-A为例,将GPRS工作模式设置成FTCP,连接上服务器,可以观察到服务器收到了BMD100发送的心跳包和数据包123。如下图所示:
同样以蓝狮BMD100-A为例,将GPRS工作模式设置成CTCP,连接上服务器,可以观察到服务器只收到BMD100发送的数据123,而没有心跳包。如下图所示:
同样以蓝狮BMD100-A为例,将GPRS工作模式设置成NUDP,连接上服务器,可以观察到服务器收到了BMD100发送的心跳包和数据。