物联网网络通信

网络通信是当代物联网发展最重要的一环,它是将各种设备交流信息传递的媒介,物联网通信常用的架构是CS架构,如套接字socket就是为了C/S架构软件的开发。实现客户端client和服务器server的通信。

网络协议架构

在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。

json 物联网通讯 物联网通信流程_网络


具体怎么理解呢?首先从物理层开始。

物理层

我们如果想要和不同地方的人通信,比如发个微信什么的,需要通过互联网,不管是用网线还是wifi都需要一个物理连接,刚刚说的网线,WIFI什么的就是中间的物理连接,他们传输的是电信号,即一些二进制数据。显而易见的是一堆二进制信号如果没有规则,它也就是一些没有用的数字,那么有人就制定了规则,通过规则使得这些二进制数有意义,比如8位为一组,谁分?数据链路层分。

数据链路层

因为互联网早期公司众多,没有统一标准非常乱,后来互联网形成了统一标准即以太网协议Etherne。

它规定,一组电信号称为一个数据包,也叫做一帧,一帧分为报头head和数据data两部分。

json 物联网通讯 物联网通信流程_网络_02


在计算机通信里上述的源地址和目标地址就是Mac地址,这个东西是网卡地址,出厂就有,不能更改,除非换了(前六位是厂商编号,后六位是流水线号)。至此计算机也就可以在局域网通信了,因为每个计算机都有独特的Mac码。在报头里写上我是谁,我要找谁,我这是个啥,加上我要发的东西,这些东西打为数据包,在物理层以二进制的形式发出去,局域网内接收。至于怎么确认收到的那个就是我们想象中要接受的那个呢,这就是广播机制。我们把这个包发到局域网里,让它自己对应,比如要发给王二,就喊一声王二,王二听到了自己出来拿走,万一别人拿走了打开看了,但是看到是给王二的,那他拿走指定不合适,就不拿了还在那放着等王二拿。那么王二给别人传也一样,只是把源地址和目标地址变更一下。

到这里似乎已经可以让所有设备通信了,只要局域网足够大不就行了嘛,但是如果设备量很多,就好比我们的卧室来了300个人,别说找人说话,出卧室都难,这时,引入了网络层

网络层

还是王二,王二想给另一个屋子的张三发东西,把墙打烂肯定不是一个聪明的办法,此时肯定找个中间人通过中间人建立连接,所以王二就广播了一个数据包,让老二屋子的负责人听见了,王二屋子的负责人又去找张三屋子的负责人,张三屋子的负责人在他们屋子广播,张三听到了就建立起了联系,王二不用把墙打烂,干净又卫生何乐而不为。言归正传,这个负责人就是网关

json 物联网通讯 物联网通信流程_网络_03


Mac地址是那个人 IP地址是一个局域网 网关就是一个负责人

每次联网访问,计算机会判对我们是谁在哪个屋子,如果是局域网的那就直接基于Mac广播发包,如果不是就告诉网关来转发,IP和Mac地址包含了我们在互联网中的位置。数据链路层会把网络层的数据包继续封装,然后发给网关,网关再发给对方网关,对方网关再做广播。

json 物联网通讯 物联网通信流程_HTTP_04


当发送时需要通过ARP协议来获取对方Mac地址,在通信前首先需要知道对方的Mac地址,即我们的机器需要发送一个ARP包出去(广播)

在局域网中通过给此局域网内的ip发送ARP包即可返回对方的Mac地址,通过ip做为约束条件即可准确定位。此处FF FF FF FF FF FF是以一种功能,当目标IP解包后,这里就变成了对方的Mac值。

json 物联网通讯 物联网通信流程_HTTP_05

不在局域网中,通过IP(子网掩码)来进行判断,已经不在局域网,此时目标IP变成网关,网关返回自己的Mac地址,继续发包,以此类推,历经千辛万苦与对方建立通信。即使用户体会不到网关的存在,但是它也是在工作的。

json 物联网通讯 物联网通信流程_json 物联网通讯_06


json 物联网通讯 物联网通信流程_Mac_07

传输层

传输层会在下面提及,但是这里有个重要的东西就是端口,因为我们通过ip和Mac只可以定位到我们的位置,而主机的若干软件需要被识别,识别的认证就是端口,而传输层的功能就是建立从端口到端口的通信

端口范围0-65536 0-1023为系统占用端口

应用层

最上面的三层统称为应用层,大家都可以开发自己的应用程序,各种各样的数据,而它的作用就是规定应用程序的数据格式。

json 物联网通讯 物联网通信流程_HTTP_08


此图解释了数据封包的全部过程

知道了网络协议架构对其他只是的学习是一个大的基础,但是,选择什么样的物联网组网技术仍是一个难题,根据需求不同,以下列举了一些个组网技术,并分别列出其优缺点

TCP/UDP协议

TCP是一种面向连接的,可靠的,基于字节流传输层通信协议
UDP是一种无连接的传输协议 简单来说就是不管收没收到,反正发了。

TCP

UDP

可靠性

可靠

不可靠

连接性

面向连接

无连接

效率

效率低

效率高

功耗



UDP更适合对功耗要求低可靠性不高的场合,如收集数据,QQ聊天,即时通话等
TCP适合文件传输,接收邮件,远程登录等

HTTP协议

HTTP是基于C/S架构的模式,并且面连接的(TCP)之上,Hyper Text Transfer Protocol 超文本传输协议(超链接)典型的HTTP事务处理如下:

  • 客户端与服务器建立连接
  • 客户端对服务器发出请求
  • 服务器接受请求,根据其请求返回相应的文件作为应答
  • 客户端与服务器关闭连接

HTTP协议必须由客户端主动向服务器发送请求,服务器无法主动通知客户端,而且实现HTTP的硬件资源要求更高,成本大,不适合应用于物联网

MQTT和CoAP

MQTT是一个基于C/S架构的消息发布/订阅传输协议,是在TCP之上。
在设备与设备(M2M)通信和物联网(IoT)下应用广泛,现已经在医疗设备,智能家居,以及一些小型化设备中广泛使用。其优点有:

  • 适合网络代价昂贵,带宽低,不可靠的环境
  • 能在处理器和内存资源有限的嵌入式设备中运行
  • 使用发布、订阅消息模式,提供一对多的消息发布,解除应用程序耦合
  • 使用TCP/IP提供网络连接
  • 提供Last Will和Testament特性通知有关各方客户端异常中断机制

CoAP (Constrained Application Protocol)是一种在物联网世界的类web协议,名字翻译来就是“受限应用协议”。其优点有:

  • COAP协议网络传输层为UDP。
  • 它基于REST,server的资源地址和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化。
  • COAP是二进制格式的,HTTP是文本格式的,COAP比HTTP更加紧凑。
  • 轻量化,COAP最小长度仅仅4B,一个HTTP的头都几十个B了。
  • 支持可靠传输,数据重传,块传输。确保数据可靠到达。
  • 支持lP多播,即可以同时向多个设备发送请求。
  • 非长连接通信,适用于低功耗物联网场景。

CoAP

MQTT

通信机制

同步

异步

连接方式

UDP

TCP

使用场景

物联网

推送

功耗



支持平台

物联网平台:阿里云等云平台

通信平台:移动,电信等

反向控制

不支持

支持

MQTT是保持连接的,即时性很好
CoAP是无连接响应式通讯,不能不懂推送,等客户端访问才可以携带回去,即时性相对差。