简介
这里无网通信指的是没有互联网的通信方式,之前在区块链公司是做这块,现在怕自己以后忘了写一遍,之前搞工业机器人实在太忙,整个博客停了,也不搞移动了,现在离职了,创业也败了,该恢复一下之前的技术调整心态继续找工作了。
所谓无网通信其实是不同设备互相发现然后连接进行通信,而互相发现的方式可以归纳成三种
- 两个设备连接在同一个WIFI
- 两个设备通过WLAN创建点对点连接
- 两个设备通过蓝牙BLE创建点对点连接
而前两种是最稳定的方式,可以使用Wifi Direct实现,而蓝牙BLE的方式就比较鸡肋了距离有限制大小也有限制,能Wifi直连肯定不用蓝牙。然而蓝牙的发现连接标准其实各个设备基本都遵循的是一套,但Wifi Direct则是实现方式多种多样像UPnP、Bonjour、DLNA、SLP抑或是其他技术都能实现。iOS用的自家Bonjour,而Android4.0后开始支持直接就叫Wifi Direct,不同设备直连基本都会遇到问题。这里以Android和iOS为例实现的基本逻辑其实都由MDNS与DNS-SD演化而来。
确定了Wifi Direct以后又会发现一个问题就是这解决的是设备与设备的通信,也就是一对一,而理想的无网通信是多对多,信息流之间希望有多跳的能力也就是Mesh,这个最终我们也没完美解决,虽然Android和iOS里有一定的解决方案(创建群组实现多对多)但也有不同系统无法互通的问题和群组上限问题,但当时我们选择了更简单的方式就是由路由器去Mesh其他路由器,而设备加入到路由器的网络里直接用MDNS去发现然后链接通信,专业设备做专业事,Mesh组网和设备通信分摊到两个地方。
MDNS(Multicast DNS)与DNS-SD(DNS Service Discovery)
简介里介绍完基本就确定了技术点就是Wifi Direct,而这项技术则是由MDNS(Multicast DNS)与DNS-SD(DNS Service Discovery)演化而来。
首先MDNS和DNS-SD是DNS协议的两个扩展。MDNS扩展了域名服务系统,在链路本地多播上运行。DNS-SD添加了通过DNS发现网络服务的支持。MDNS原理就是在基于udp加入网络后向所有主机组播一个消息。
基本流程就是基于某个自定义域名发布服务,发现设备,连接设备
more >>