ESP32:mdns协议
mdns
(即多播dns
,Multicast DNS
)主要实现了在没有传统DNS
服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353
,遵从dns
协议,使用现有的DNS
信息结构、语法和资源记录类型,并且没有指定新的操作代码或响应代码。
在局域网中,设备和设备之前相互通信需要知道对方的ip
地址等信息,大多数情况,设备的ip
不是静态的,而是通过dhcp
协议动态分配的,如何发现设备彼此间的服务呢?现在物联网设备和app
之间的通信,要么通过广播,要么通过组播,发一些特定信息,感兴趣的设备应答,实现局域网设备的发现,当然mdns
比这强大的多。
mdns
使用组播地址为224.0.0.251
(ipv6
:FF02::FB
),端口为5353
。mdns
是用于局域网内部的,并且主机的域名以.local
结尾,每个进入局域网的主机,如果开启了mDNS
服务的话,都会向局域网内的所有主机组播一个消息——我是谁(域名)和IP
地址是多少。然后其它有mdns
服务的主机就会响应,也会告诉你——它是谁(域名)和IP
地址是多少。当然设备需要服务时,就是使用mdns
查询域名对对应的ip
地址,对应的设备收到该报文后同样通过组播方式应答,此时其它主机设备也是可以收到该应答报文,其它主机也会记录域名和ip
以及ttl
等,更新缓存。
比如,A
主机进入局域网,开启了mDNS
服务,并向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
地址和端口号了。
ESP32:mdns协议的更多相关文章
- mDNS知识
1.域名系统(Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP端口53. ...
- iOS- Apple零配置网络协议Bonjour的使用?
1.前言 这段时间为了解决公司App的网络离线需求,做了个Apple推出的零配置网络协议Bonjour的Test,主要是为了解决iOS设备的IP获取,之前是可以使用socket的广播来实现,但是使用A ...
- mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少
MDNS协议介绍 mDNS multicast DNS , 使用5353端口,组播地址 224.0.0.251.在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口.包格 ...
- [转帖]mDNS原理的简单理解
mDNS原理的简单理解 https://binkery.com/archives/318.html 发现还有avahi-daemon mdns 设置ip地址 等等事项 网络部分 自己学习的还是不够多 ...
- mdns
mdns mdns_百度百科 https://baike.baidu.com/item/mdns 在计算机网络中 , 多播DNS ( mDNS )协议将主机名解析为不包含本地名称服务器的小型网络中的I ...
- Google物联网操作系统协同框架Weave深度解析
1. Google Weave框架 在2015年的Google I/O大会上,负责Android业务的桑达.皮查伊(SundarPichai)宣布了Google最新的物联网战略.这包括一个 ...
- Oracle-11g-R2 RAC 环境下 GPnP Profile 文件
GPnP Profile 文件的作用: GPnP Profile 文件是一个保存于 $GRID_HOME/gpnp/<hostname>/profiles/peer 目录下的小型 XML ...
- STM32实现Airplay音乐播放器
AirPlay是苹果公司推出的一套无线音乐解决方案,我们手里的iPhone.iPad甚至是Apple Watch等设备还有电脑上的iTunes都支持AirPlay,但是支持AirPlay功能的音响设备 ...
- ESP8266开发之旅 网络篇⑫ 域名服务——ESP8266mDNS库
1. 前言 前面的博文中,无论是作为client端还是server端,它们之间的通信都是通过具体的IP地址来寻址.通过IP地址来寻址,本身就是一个弊端,用户怎么会去记住这些魔法数字呢?那么有没 ...
随机推荐
- #WEB安全基础:HTML/CSS | 0x0 我的第一个网页
#WEB安全基础:HTML/CSS系列,本系列采用第二人称以免你不知道我在对着你说话,以朋友的视角和你交流 HTML的中文名叫做超文本标记语言,CSS叫做层叠样式表 用HTML设计你的第一个网页,你需 ...
- 2018-01-02 JavaScript实现ZLOGO: 用语法树实现多层循环
原址: https://zhuanlan.zhihu.com/p/32571516 照例先上演示弱效果图. 演示地址照旧: 代码如下: 开始 循环4次 循环4次 前进50 左转90度 到此为止 右转9 ...
- 如何理解MVC?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范. 那么MVC框架究竟干了些什么:用一种业务逻辑. ...
- iOS ----------关于动画
这个网址上的内容很不错.https://github.com/ameizi/DevArticles/issues/91
- MySQL 性能优化-数据库死锁监控
MySQL性能优化-数据库死锁监控 by:授客 QQ:1033553122 1)表锁定 通过检查 table_locks_waited 和 table_locks_immediate 状态变量来分析表 ...
- Android 应用程序崩溃日志捕捉
程序崩溃是应用迭代中不可避免的问题,即使有着5年或者10年经验的程序猿也无法完全保证自己的代码没有任何的bug导致崩溃,现在有一些第三方平台可以帮助我们搜集应用程序的崩溃,比如友盟,详情如下图 虽然能 ...
- Android sdk下载找不到support library
没有android support library下载项. 找了很多资料,发现 android support library 被Google废弃了,不推荐使用.代替使用的是 android supp ...
- leetcode-58.最后一个单词的长度
leetcode-58.最后一个单词的长度 题意 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但 ...
- Python __init__.py文件的作用
我们经常在python的模块目录中会看到 "__init__.py" 这个文件,那么它到底有什么作用呢? 1. 模块包(module package)标识 如果你是使用pytho ...
- 【PHPStorm使用手册】php interpreter is not configured
php interpreter is not configured 未配置php解析器 第一步: 引入下载好的php.exe 打开窗口 file -> settings -> Langua ...