ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

局域网设备发现——mDNS协议

2021-10-12 18:03:36  阅读:1520  来源: 互联网

标签:协议 mDNS 主机 TCP 局域网 IP地址 设备


背景

在一次小程序开发需求中,需要开发投影仪设备遥控功能。为了提升用户的体验需要实现手机与投影仪设备之间的近场发现(类似于局域网之间的设备进行WIFI配对)。最初选型为局域网内的设备发现,后根据小程序文档得知 iOS 微信客户端 7.0.18 及以上版本无法使用 mDNS 相关接口,安卓版本不受影响。所以将使用蓝牙功能来补充局域网设备发现的部分缺陷。本篇幅不介绍蓝牙相关的能力开发。

 

介绍

通常我们做网络之间的通讯无论是 TCP、UDP或者是 HTTP等协议我们都需要知道对等方的 IP地址(域名)和端口号。但是在局域网环境下一般来说设备的IP地址都是由 DHCP进行动态分配,不能保证同一设备在同一局域网段内的 IP地址每次都相同。此时如果一台主机在局域网内建立了网络服务,作为客户端是无法得知服务的 IP地址的,也就无法建立网络通讯,此时我们就需要用到 mDNS协议。

 

mDNS

  • mDNS 基于 UDP 协议。

  • mDNS 一般作用在一个局域网内的,有特定的 IP 地址,也就是 224.0.0.251,有特定的端口 5353。

  • mDNS 的作用是实现局域网内的服务发现,查询,注册

 

每个进入局域网的主机,如果开启了 mDNS 服务的话,都会向局域网内的所有主机组播一个消息,核心内容是:我是谁,和我的IP地址是多少。

 

举个例子:

A 主机进入局域网,开启了 mDNS 服务,并向 mDNS 服务注册以下信息:我提供 TCP 服务,我的 IP 是 192.168.1.101,端口是 9504。当 B 主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 TCP 服务器,B主机的 mDNS 就会去局域网内向其他的 mDNS 询问,并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 9504 的主机,也就是 A 主机提供 TCP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。

 

上述这些就能对近场设备发现功能的实现提供一些思路,我们只需要让投影仪设备在 mDNS服务上注册一条提供 TCP服务的信息,此时手机端小程序调用mDNS接口发现投影仪设备给出的信息,再建立小程序与投影仪之间的 TCP连接,后面的内容实现起来就是常规操作了

 

调试工具

 

文档

标签:协议,mDNS,主机,TCP,局域网,IP地址,设备
来源: https://www.cnblogs.com/Taurus12C/p/mDNS.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有