ESP mdns 学习
作者:互联网
文章目录
1 概述
mDNS 是一种多播 UDP 服务,用来提供本地网络服务和主机发现,mDNS 协议发布为 rfc6762。
在没有任何传统单播 DNS 服务器的情况下,多播 DNS (mDNS) 提供了在本地连接上执行类似 DNS 的操作的能力。 此外,多播 DNS 指定一部分 DNS 命名空间供本地免费使用,而无需支付任何年费,也无需设置授权或以其他方式配置传统 DNS 服务器来回答这些名称。
绝大多数的操作系统默认都会安装 mDNS 服务,或者提供单独的安装包。
- Mac OS: 默认会安装名为 Bonjour 的服务(该服务基于 mDNS)
- Windows: Bonjour Print Services for Windows, mDNS 已在Windows 10 中实现
- Linux: mDNS 服务由 avahi 提供,通常会被默认安装。
当 mDNS 客户端需要解析主机名时,它会发送一个 IP 多播查询消息,要求具有该名称的主机标识自己,接着该目标机器多播包含其 IP 地址的消息。该子网中的所有计算机都可以使用该信息来更新其 mDNS 高速缓存。任何主机都可以通过发送生存时间(TTL)等于零的响应数据包来放弃其对名称的声明。
默认情况下,mDNS 仅限并且专门解析以 .local 顶级域(TLD)结尾的主机名。
2 linux avahi
1.安装 avahi
sudo apt-get install avahi-daemon avahi-utils
➜ avahi tree
.
├── avahi-autoipd.action
├── avahi-daemon.conf
├── hosts
└── services
2.设置主机名
➜ avahi sudo avahi-set-host-name -v mali-ubuntu
Server version: avahi 0.7; Host name: esp32.local
Host name successfully changed to mali-ubuntu.local
➜ avahi ifconfig
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.31.39 netmask 255.255.255.0 broadcast 192.168.31.255
inet6 fe80::892c:5025:2488:6e7a prefixlen 64 scopeid 0x20<link>
ether c8:f7:50:f3:dd:24 txqueuelen 1000 (Ethernet)
RX packets 14389259 bytes 4173612440 (4.1 GB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 15641862 bytes 2426946077 (2.4 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
3.添加服务
创建一个用于描述服务的 XML 配置文件,该文件将放入 /etc/avahi/services/ 。 例如,下面的服务配置文件 ftp.service 定义了从 tcp 21 端口提供的 FTP 服务。
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name>FTP file sharing</name>
<service>
<type>_ftp._tcp</type>
<port>21</port>
</service>
</service-group>
4.使用 avahi 发现服务
➜ avahi avahi-browse -a
+ enp1s0 IPv6 FTP file sharing FTP File Transfer local
+ enp1s0 IPv4 FTP file sharing FTP File Transfer local
+ lo IPv4 FTP file sharing FTP File Transfer local
+ enp1s0 IPv6 ESP32-WebServer Web Site local
+ enp1s0 IPv4 ESP32-WebServer Web Site local
+ enp1s0 IPv6 UBUNTU Microsoft Windows Network local
+ enp1s0 IPv4 UBUNTU Microsoft Windows Network local
+ lo IPv4 UBUNTU Microsoft Windows Network local
3 ESP32 mdns
测试例程:protocols/mdns
- mDNS 服务
- mDNS 查询
mdns 数据包
mDNS 协议里规定了一些保留地址,IPv4 链路本地组播地址为 224.0.0.251,IPv6 多播地址 FF02::FB。
mDNS 协议规定了端口为 5353,而 DNS 的端口是 53。
mDNS 基于 UDP 协议,DNS 一般也是基于 UDP 协议的,但是也可以使用 TCP 协议。
4 参考资料
ESP32 mDNS 服务
https://www.lucadentella.it/en/2017/04/29/esp32-15-mdns/
linux avahi
ubuntu安装局域网域名解析服务
使用 Avahi 命令行程序发现服务
标签:FTP,mdns,ESP,mDNS,学习,DNS,enp1s0,avahi,local 来源: https://blog.csdn.net/Marchtwentytwo/article/details/122770716