首先,一些背景: avahid在我的嵌入式Linux设备上给我带来了问题(它有崩溃的bug,看起来不太可能在短期内修复),而我只需要极小的mDNS功能(也就是只需要足够让Mac或PC上的人可以做一个"ping6 mydevicename.local“)。并且将主机名解析到我的设备上),所以我编写了我自己的极简mDNS服务器(用C语言),它基本上只是监听多播DNS数据包,并使用必要的mDNS记录对它们进行响应。
这主要是有效的--特别是,从Mac上执行上述的ping6测试会立即解决问题,而且效果非常好。
然而,我注意到,如果我从Linux盒中执行ping6,那么它只是一种工作。特别是:
…
RECEIVED 90 IPv6 BYTES FROM [fe80::21c:abff:fe00:a60] on s6#2 (sock=6)
--- Received IPv6 Data (90 bytes): -------------------------------------
0000: .............3.2 [00 00 00 00 00 01 00 00 00 00 00 00 01 33 01 32]
0016: .6.4.2.0.e.f.f.f [01 36 01 34 01 32 01 30 01 65 01 66 01 66 01 66]
0032: .b.2.0.6.2.0.0.0 [01 62 01 32 01 30 01 36 01 32 01 30 01 30 01 30]
0048: .0.0.0.0.0.0.0.0 [01 30 01 30 01 30 01 30 01 30 01 30 01 30 01 30]
0064: .0.0.0.8.e.f.ip6 [01 30 01 30 01 30 01 38 01 65 01 66 03 69 70 36]
0080: .arpa..... [04 61 72 70 61 00 00 0c 00 01]
HandlemDNSRequest: transID=0 flags=0 numQuestions=1 numAnswers=0 numAuthorityRRs=0 numAdditionalRRs=0
Ooh, a reverse-mDNS request for [3.2.6.4.2.0.e.f.f.f.b.2.0.6.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa] scope=3所以我的问题是:
发布于 2014-04-22 22:18:03
通过使用nTap设备和WireShark来捕获由Avahid和我自己的程序生成的mDNS流量,我终于能够搞清楚出了什么问题。由于avahid并没有产生这个问题,因此可以推测,avahid产生的响应就是Linux正在寻找的响应。我更新了我的程序,以产生类似的反应,这使5秒的延迟消失了。
特别是,avahid生成的反向mDNS响应只包含0个查询和1个答案(主机名类型),如所附的wireshark屏幕截图所示。

https://stackoverflow.com/questions/23165071
复制相似问题