我不认为你可以dns-sd
用来浏览顶级域。(如果你真的可以 -我不确定这一点! - 那么你的命令是正确的。它只是找不到该 TLD 的任何结果。请参阅我的进一步回答......)
此外,在某个域中浏览 _http._tcp 只会显示结果,前提是该域中确实存在通过 DNS-SD宣布的 HTTP 服务。
1.dns-sd
首先是local.
域名
为了测试它,你可以dns-sd -R
在一个终端中运行来宣布一个虚假的 HTTP 服务:
dns-sd \
-R "A Fake Announcement to Register a Dummy HTTP Server" \
_http._tcp,_universal \
. \
8081
然后检查公告是否出现在本地浏览列表中:
dns-sd -B _http._tcp
2.dns-sd
也适用于远程域......在某些条件下
要检查远程域中已宣布的服务,请尝试:
dns-sd -B _ftp._tcp dns-sd.org.
你应该看到类似的东西
浏览 _ftp._tcp.dns-sd.org。
日期:---2016 年 5 月 19 日星期四---
17:40:02.111 ...开始...
如果域服务类型实例名称,则时间戳 A/R 标志
17:40:02.112 添加 3 0 dns-sd.org。_ftp._tcp。苹果 QuickTime 文件
17:40:02.112 添加 3 0 dns-sd.org。_ftp._tcp。微软开发者文件
17:40:02.112 添加 2 0 dns-sd.org。_ftp._tcp。仅限受限制的注册用户
^C
然后,您可以通过运行另一个命令来解析特定实例:
dns-sd -L“微软开发者文件”_ftp._tcp dns-sd.org。
查找 Microsoft Developer Files._ftp._tcp.dns-sd.org。
日期:---2016 年 5 月 19 日星期四---
17:40:43.972 ...开始...
17:40:44.365 Microsoft\032Developer\032Files._ftp._tcp.dns-sd.org。可通过 ftp.microsoft.com.:21(接口 0)访问
txtvers=1
路径=/开发者
^C
3. 那么为什么浏览远程dns-sd.org.
域会起作用呢?
这是因为“发明”DNS-SD 并运行dns-sd.org域的 Stuart Cheshire 确实在他的标准 DNS 服务器设置中以适当的方式在他自己的域中注册了 FTP 服务。
4. 那么为什么dns-sd.org
返回有关 Microsoft 控制的 FTP 服务的记录?
这是因为 Stuart Chesire 将该 FTP 服务注册为“代理广告” ......
5. 为什么您对fffh.
顶级域的查询不起作用?
主要是因为该域很可能没有在标准 DNS 服务器中注册其域内托管的所有 HTTP 服务。
也许它甚至根本没有在其域内运行 DNS 服务器。
您只会通过 发现这些 HTTP 服务器dns-sd -B _http._tcp local.
,前提是此类服务器的每个网站管理员都...
- ...在后台运行适当的
dns-sd -R ...
命令(如果他有 Mac),或者
- ...运行模拟
avahi-publish -s ...
命令(如果他有 Linux)
6. 附加信息
顺便说一句,如果您在常规 DNS 配置中将远程域添加为“浏览域”,则无需指定远程域名即可浏览和发现远程服务。请参阅我dns-sd.org
在 MacBook 上添加的屏幕截图:

在这种情况下,您可以简单地运行
dns-sd -B _http._tcp
还可以列出远程 HTTP 服务(以及本地服务)而不是运行
dns-sd -B _http._tcp dns-sd.org
.