TCP/UDP通信协议详解

  • 时间 :2018-09-02
  • 作者 :蓝狮在线
  • 浏览数 :4882

一.通信协议概述:

1.定义:

通信设备双方通过共同遵从一组约定,从而使数据可在网络上进行相互传输。

打个比方,不同国家不同母语的两个人,如果要实现交流,就必须以大家都熟悉的一种通用语言来交流,比如英语。同样数据的格式只有一致,通信双方才能正常传输。


2.通信协议层次划分:

国际上通用的划分有tcp/ip四层模型和osi七层模型两种,TCP/UDP协议在两种模型中对应如下:

osi七层模型


通信协议层次划分.png


TCP/IP四层模型


TCP四层模型.png


二、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状态,完成三次握手.

完成三次握手,客户端与服务器开始传送数据


三次握手.png


UDP是面向非连接的,所以在服务端与客户端通信之前,不需要经过三次握手这个过程。


3.TCP/UDP对比

TCP和UDP对比.png


二.蓝狮在线相关产品通信模式的选择

蓝狮在线提供的无线工业级无线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属于数据纯透传,即不带任何心跳包和注册包,如果要带,必须自定义设置。其余都带有心跳包和注册包。


GPRS工作模式设置成FTCP.png


以蓝狮BMD100-A为例,将GPRS工作模式设置成FTCP,连接上服务器,可以观察到服务器收到了BMD100发送的心跳包和数据包123。如下图所示:


BMD100发送的心跳包和数据包.png


同样以蓝狮BMD100-A为例,将GPRS工作模式设置成CTCP,连接上服务器,可以观察到服务器只收到BMD100发送的数据123,而没有心跳包。如下图所示:

将GPRS工作模式设置成CTCP.png


同样以蓝狮BMD100-A为例,将GPRS工作模式设置成NUDP,连接上服务器,可以观察到服务器收到了BMD100发送的心跳包和数据。


联系我们
联系我们

蓝狮在线,集M2M产品研发、IoT平台服务、国际化运营于一体,让我们联接,共创未来