TCP/IP协议是网络通信的基础,日常在对TCP/IP协议设置时会涉及到IP地址,子网掩码,默认网关和DNS这几个参数。这里咱们主要谈下IP地址和DNS这两个参数之间的关系。浏览器
首先计算机在网络中进行通信时只能识别“101.86.134.121”之类的IP地址,那么为何咱们平时在访问网站时只在浏览器地址栏中输入“www.baidu.com”之类的域名就能看到所须要的页面呢?这是由于DNS服务器在起到一个翻译的做用。这么作的缘由其实很容易理解,由于IP地址没有规律,很难记,可是访问网站必需要事先知道对方服务器的IP地址,那么就选择了像www.baidu.com,www.163.com这些有意义的字符串(域名)代替了IP地址,同时发明了DNS服务器对这些域名进行解析,DNS服务器知道全部域名对应的IP地址,当咱们访问www.baidu.com的时候,计算机会去向DNS服务器查询这个域名对应的IP地址,当计算机拿到IP地址后就能够访问该网站了。缓存
DNS 查询的过程以下:服务器
使用浏览器请求网站,经过Wireshark抓包分析DNS数据包以下所示:DNS为应用层协议,在传输层UDP协议基础上实现,DNS目的端口(Dst Port)是53,域名为www.baidu.com,DNS服务器的IP地址是(172.20.1.2 在网络链接中配置)。做为DNS服务器,能够经过监听网卡53端口号的数据来得到DNS数据包,对应DNS协议格式进行解析。网络
接下来说述下LwIP协议栈对DNS服务的支持。LwIP是应用于嵌入式领域的轻量级开源以太网协议栈, 它使用C语言实现很是方便移植,并且支持socket接口,所以使用十分普遍。LwIP协议栈中涉及到DNS服务的代码为dns.c文件,主要功能是完成ipv4的客户端域名解析,不涉及复杂的服务器端的处理过程。客户端调用API接口能够实现DNS查询请求,解析DNS响应,创建本地缓存。socket