mDNS协议

1,这个项目主要使用go的原生net包和github.com/miekg/dns这个dns工具包来实现mdns的。我们需要实现mdns的服务端和客户端的代码,可以从开源项目里找过来用的。

数据包主要用到了网络层的icmp差错控制协议来返回响应数据包的,它里面携带了一个mdns响应数据包。这里可以实现icmp协议ping/ping.c · rogerbowu/iputils - Gitee.com

ControlMessage结构体中有一个叫 IfIndex int // interface index, must be 1 <= value when specifying 的参数,它从1开始计数,是linux中网卡设备的编号。



2,如何解析dns协议的报文格式。
mdns 即多播DNS(Multicast DNS),MDNS主要实现了在没有传统DNS服务器的情况下使局域网内的主机实现相互发现和通信,使用的端口为5353,遵从dns协议,
使用现有的DNS信息结构、名语法和资源记录类型。并且没有指定新的操作代码或响应代码。所以解析mdns协议数据包就是解析dns协议数据包。我们根据协议报文规定的
字段和选项,就可以构建和解析到我们想要的数据字段。

等到client端解析收到的mdns响应信息,解析完成后就是这样:


想要了解应用层的dns协议,不如自己手动写一个demo,按照dns协议的报文格式填充请求数据包,发送,再把dns响应数据包按照协议格式解析出来。


和windows上的差不多就对了



和抓包结果符合

ps:

阮一峰老师的dns协议:http://www.ruanyifeng.com/blog/2016/06/dns.html

mdns介绍:https://blog.csdn.net/u013258415/article/details/77947610

dns报文解析:https://www.pianshen.com/article/37201216095/

linux dns编程:https://blog.csdn.net/qq_21539375/article/details/123457623,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值