局域网内的设备搜索

31 May 2016

大部分局域网设备搜索都是通过UDP广播实现的,原理很简单:

  1. 设备监听某个端口
  2. 搜索软件发送UDP广播到此端口
  3. 设备回复一个确认包

因为UDP协议是基于IP协议的,所以可以得到设备的IP地址。

在实际使用中会遇到一些其他问题,比如:

  1. 如果有其他设备也监听了同样的端口,如何区分不同的设备?
  2. 如何防止被其他软件搜索到?
  3. 假如设备出厂的时候是固定IP的(比如192.168.0.100),并且和局域网的网段(比如10.10.0.0/16)并不匹配,是否可以正常工作?

第一个问题好解决,可以在返回的确认包中约定特定的格式
第二个问题也好解决,可以在搜索消息中用密钥对消息进行签名消息防止伪造
第三个问题很有意思,经过试验,广播包是可以收到的,但是非广播包是无法收到的

因此在设备回复确认报的时候,并不可以直接用remote address作为目标地址,而是也同样 需要发送一个广播包才能实现通讯。这种情况下的通讯都是两边各自监听一个约定好的端口,然后互相发送UDP包来实现通讯的。



Back