通过域名来访问服务器,但是对于网络层来说,其无法识别域名,所以需要将域名先转换成IP地址,
而DNS协议就是完成域名到IP地址的映射。
自建本地DNS工作原理
一次完整的查询请求经过的流程:
客户端Client -->客户端Client dns缓存-->操作系统dns缓存hosts文件 -->本地dns服务器-->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS
自建本地DNS截获访问域名,修改操作系统网卡dns或路由器dns指向自建本地DNS,从而使请求数据经过自建本地DNS。
主机host优先级:dns缓存>hosts文件>dns服务
本地DNS
本地DNS是指你电脑上网时IPv4或者IPv6设置中填写的那个DNS。这个可以手工指定。具体如下:
当客户端向本地 DNS 服务器发出请求后,本地 DNS 服务器查询本机缓存
step 1. 先把路由器或本机的本地DNS 修改为我们的程序
1.2.1.修改本机的DNS
windos系统网卡本地连接里面有一个DNS设置
1.2.2.修改路由的DNS
https://www.cnblogs.com/leiblog/p/10716959.html
C#中利用System.Net.DNS类进行DNS编程,包括同步方法GetHostName()、GetHostByName()、GetHostByAddress()和Resolve()的使用,以及异步方法的应用示例,帮助开发者实现DNS解析和主机信息获取
port 53 筛选端口(DNS服务的端口为53)
在C#中实现一个简单的DNS服务器,需要理解DNS查询和响应的工作流程。服务器端通常会监听UDP端口53,接收客户端发送的DNS请求,解析请求报文,查找相应的记录,然后构造响应报文并返回
useful links
C#的DNS协议完整实现代码
https://download.csdn.net/download/cc1072027237/9387454
wireshark dns域名解析抓包实验分析
https://www.cnblogs.com/mggahui/p/13899888.html