查看原文
其他

这是我见过对DNS最通俗易懂的解释了

Fox PHP开发者 2022-09-07


亲爱的,我出去一趟。




你要去干嘛?

有事。




有什么事?

我跟同事讨论下网络方案。




讨论什么方案?

我跟你说了,你也不知道。




你说呀!你不说怎么知道我不知道。

那好吧,我给你讲一讲,看你能不能给我一点建议。最近有个局点需要配置 DNS 代理功能。




什么是 DNS?

DNS 就像是网络世界的地图,根据域名查找对应的 IP 地址,能够让用户更方便地上网。



DNS 是域名系统(Domain Name System)的简称,因特网上作为域名和 IP 地址相互映射的一个分布式数据库,能够使用户更方便地访问互联网,而不用去记住能够被机器直接读取的 IP 地址。


我上网的时候,会用到 DNS 吗?

我们上网都有用到它,例如访问某个网站,输入的是网址,实际机器访问的是 ip 地址。



以访问 www.163.com 为例,看下 DNS 会进行哪些操作:
  1. 首先查找电脑上的 DNS 缓存列表,如果有记录,那么直接返回对应 IP 地址,否则进行下一步;

  2. 查找电脑上的 HOST 文件的映射关系,如果有记录,那么返回对应 IP 地址,否则进行下一步;

  3. 查找互联网线路供应商的本地 DNS 服务器(即中国电信、中国移动或中国联通),本地 DNS 服务器先查找自己的缓存记录,如果有记录,那么返回对应 IP 地址,否则本地 DNS 服务器向根域名服务器发送请求;

  4. 根域名服务器收到请求后,查看是 .com 顶级域名,于是返回 .com 顶级域名服务器的 IP 地址给到本地 DNS 服务器;

  5. 本地 DNS 服务器收到回复后,向 .com 顶级域名服务器发起请求;

  6. .com 顶级域名服务器收到请求后,查看是 .163.com 次级域名,于是返回 .163.com 次级域名服务器的 IP 地址给 DNS 服务器;

  7. 本地 DNS 服务器收到回复后,向 .163.com 次级域名服务器发起请求;

  8. .163.com 次级域名服务器收到请求后,查看是自己管理的域名,于是查看域名和 IP 地址映射表,把 www.163.com 的 IP 地址返回给本地 DNS 服务器;

  9. 本地 DNS 服务器收到回复后,向电脑回复域名对应 IP 地址,并把记录写入本地 DNS 服务器的缓存里;

  10. 电脑收到回复后,使用 IP 地址访问网站,并把记录写入电脑 DNS 缓存中。


DNS 缓存可以提高查询效率,但是当域名和 IP 地址映射关系发生变化时,或者缓存的 IP 地址对应的服务器故障时,使用 DNS 缓存就不能正常访问网站了,因此 DNS 缓存默认也是有时间限制的。

那你说的 DNS 代理是干什么用的?

顾名思义,DNS 代理代替电脑跟 DNS 服务器进行请求和查询。作用是简化网络配置和集中管理。


DNS 代理用于在 DNS 客户端和 DNS 服务器间转发 DNS 请求和应答报文。局域网内的 DNS 客户端把 DNS 代理当作 DNS 服务器,将 DNS 请求报文发送给 DNS 代理。DNS 代理将该请求报文转发至 DNS 服务器,并将 DNS 服务器应答报文返回给 DNS 客户端,从而实现域名解析。
使用 DNS 代理功能后,当 DNS 服务器的地址发生变化时,只需改变 DNS 代理上的配置,无需改变局域网内每个 DNS 客户端配置,从而简化了网络管理。


上次我打开百度网站,却跳转到一个广告网站,这是怎么回事?

这个就是 DNS 劫持,把目标网站域名解析到错误的 IP 地址上。这时可以把 DNS 地址设置成运营商提供的 IP 地址,或者设置成公共 DNS 服务器 IP 地址。就像你买衣服一样的,去商场买名牌,尽量不去买质量和服务都不靠谱的地摊货。




说到买衣服,我的建议是陪我去逛街看看衣服吧。

这 ......



- EOF -

推荐阅读  点击标题可跳转

1、好家伙,你管这破玩意叫文件系统?

2、源代码从 300 行到 172,000 行,它用了 23 年

3、你管这破玩意叫 IO 多路复用?


看完本文有收获?请分享给更多人

推荐关注「PHP开发者」,提升PHP技能

点赞和在看就是最大的支持❤️

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存