其他分享
首页 > 其他分享> > ESP mdns 学习

ESP mdns 学习

作者:互联网

文章目录

1 概述

mDNS 是一种多播 UDP 服务,用来提供本地网络服务和主机发现,mDNS 协议发布为 rfc6762

在没有任何传统单播 DNS 服务器的情况下,多播 DNS (mDNS) 提供了在本地连接上执行类似 DNS 的操作的能力。 此外,多播 DNS 指定一部分 DNS 命名空间供本地免费使用,而无需支付任何年费,也无需设置授权或以其他方式配置传统 DNS 服务器来回答这些名称。

绝大多数的操作系统默认都会安装 mDNS 服务,或者提供单独的安装包。

在这里插入图片描述
当 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 协议里规定了一些保留地址,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