<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnCH579M" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
DNS是什么
![](https://img2020.cnblogs.com/blog/819239/202106/819239-20210621025758042-1379356513.png)
最开始的网络都是直接一个IP地址访问,后来呢出现了域名访问,比如baidu.com
然后记住哈,咱使用域名访问,其实网络设备会先根据这个域名找到对应的IP地址
然后再通过IP地址访问.
怎么通过域名找到IP地址呢? 就是访问DNS服务器.
DNS服务器上记录了所有域名对应的IP地址,访问方式呢是UDP方式.端口号默认是53
![](https://img2020.cnblogs.com/blog/819239/202106/819239-20210621025837822-420820731.png)
假设我使用上面阿里的DNS服务器,我想知道域名 mnif.cn对应的IP地址是多少
我就把mnif.cn这个字符串封装成DNS协议数据,然后通过UDP把数据发送到223.5.5.5 端口:53
然后服务器找到对应的IP并返回.
协议啥的自己去百度下.
测试本节代码
1.把这节的程序下载到开发板
![](https://img2020.cnblogs.com/blog/819239/202112/819239-20211228103446945-739683990.png)
2.连接路由器或者交换机
![](https://img2020.cnblogs.com/blog/819239/202110/819239-20211014103949967-1566753841.png)
注意哈,连接的是 LAN端口
![](https://img2018.cnblogs.com/blog/819239/201908/819239-20190805054715733-1856936083.png)
3.查看串口打印的日志
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109133518495-377203550.png)
程序说明
1.为便于大家移植使用,我封装了下
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109133638172-1639690908.png)
2.移植的话把下面的文件放到自己的工程里面
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109133731806-1591044224.png)
3.把超时检测函数放到1ms定时器里面轮行执行
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109133825890-1621960327.png)
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109133900966-476625970.png)
4.把网络接收的数据丢给 net_dns_socket_data 函数
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109134009716-1951161066.png)
5.假设要解析 mnif.cn这个域名
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109134233149-667163830.png)
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109134247975-1597409168.png)
其它
如果要更改其它设置
![](https://img2020.cnblogs.com/blog/819239/202201/819239-20220109134546991-1355459273.png)