ESP32入门基础之mDNS服务
Posted while(1)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP32入门基础之mDNS服务相关的知识,希望对你有一定的参考价值。
1 mDNS简介
参考资料:
1.1 什么是DNS
域名系统DNS(Domain Name System) 是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。用户与互联网上某台主机通信时, 必须要知道对方的IP地址。 但在应用层为了便于用户记忆各种网络应用, 连接在互联网上的主机不仅有IP地址, 而且还有便于用户记忆的主机名字。 域名系统DNS能够把互联网上的主机名字转换为IP地址。域名命名方式如下:
参考资料:《计算机网络(第7版)-谢希仁》
1.2 什么是mDNS
- mDNS 是一种组播 UDP 服务,用来提供本地网络服务和主机发现。
- mdns 即多播dns(Multicast DNS),mDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353,遵从dns协议,使用现有的DNS信息结构、名语法和资源记录类型。
工作原理举例:
比如,A 主机进入局域网,开启了 mDNS 服务,并向A主机的 mDNS 服务注册以下信息:我提供 FTP 服务,我的 IP 是192.168.1.101,端口是 21。当 B 主机进入局域网,并向 B 主机的 mDNS 服务请求,我要找局域网内 FTP 服务器,B主机的 mDNS 就会去局域网内向其他主机的 mDNS 询问(即多播),并且最终告诉你,有一个IP地址为 192.168.1.101,端口号是 21 的主机,也就是 A 主机提供 FTP 服务,所以 B 主机就知道了 A 主机的 IP 地址和端口号了。
2 应用举例
参考官方例程:mDNS example
根据官方例程,修改相应的参数,烧录高开发板,串口打印数据入下,部分截图
mDNS 属性
- hostname:设备会去响应的主机名,如果没有设置,会根据设备的网络接口名定义 hostname 。例如,my-esp32 会被解析为 my-esp32.local。
- default_instance:默认实例名(即易记的设备名),例如 Jhon’s ESP32 Thing。如果没有设置,将会使用 hostname。
mDNS 服务
mDNS 可以广播设备能够提供的网络服务的相关信息,每个服务会由以下属性构成。
- instance_name:实例名(即易记的服务名),例如 Jhon’s ESP32 Web Server。如果没有定义,会使用 default_instance。
- service_type:(必需)服务类型,以下划线为前缀,这里 列出了常见的类型。
- proto:(必需)服务运行所依赖的协议,以下划线为前缀,例如 _tcp 或者 _udp。
- port:(必需)服务运行所用的端口号。
- txt:形如 {var, val} 的字符串数组,用于定义服务的属性。
以上是关于ESP32入门基础之mDNS服务的主要内容,如果未能解决你的问题,请参考以下文章
ESP32入门基础之ESP WebSocket Client