DNS 究竟查了啥?从输入网址到打开页面发生了什么前言
点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。
作者:神的孩子都在歌唱
你在浏览器里敲下 www.baidu.com,页面“嗖”地一下打开了,看起来轻松又理所当然。可其实在这短短一两秒里,背后发生了一整套“网络魔法”。
一. 一切的开始:你按下了回车假设你打开浏览器,输入 www.example.com,然后按下了回车。
这个时候,操作系统第一反应不是“去访问网页”,而是:
“我得先知道这个域名对应的 IP 地址 才行。”
毕竟浏览器、系统和网卡这些底层组件只认 IP 地址,不认人类可读的域名。
于是它启动了第一步流程:DNS 查询。
神的孩子都在歌唱二. DNS 查询到底查了啥?DNS,全称 Domain Name System,简单来说就是把人类记得住的网址翻译成计算机能理解的 IP 地址的一个系统。查询步骤大致如下:
2.1 查本地缓存系统先看看:我是不是最近刚查过 www.example.com?如果缓存里就有 IP 地址,直接拿来用,省事。
2.2 查浏览器或操作系统缓存比如 Chrome、Firefox 都会自己维护一个 DNS 缓存池,避免每次都打 DNS 请求。
2.3 查 hosts 文件如果你电脑里手动配了 hosts 文件(比如改过 127.0.0.1 www.baidu.com 来屏蔽广告),系统会优先使用这个文件中的解析。
2.4 问“本地 DNS 服务器”前几步都没找到,那就得发一个 DNS 请求,去问网络提供商的 DNS 服务器(通常是你路由器的上级,或者你手动设的如 8.8.8.8)。
这一步是关键:
“嘿,我要访问 www.example.com,请问它的 IP 地址是多少?”
三. DNS 是怎么回答你的?如果你的本地 DNS 服务器(比如电信的)也不知道答案,它就会帮你一步步问上去:
• 根 DNS(.) → 顶级域名服务器(.com) → 权威 DNS(example.com) → 最终 IP这叫做 递归查询。最终拿到一条信息,比如:
代码语言:javascript代码运行次数:0运行复制www.example.com -> 93.184.216.34
TTL: 300 秒意思是:这个域名对应的 IP 是 93.184.216.34,缓存有效期是 300 秒。
拿到这个 IP 后,DNS 查询这步就结束了。
四. 有了 IP,接下来发生了什么?拿到 IP 地址后,浏览器才真正开始进入访问流程。接下来是:
4.1 建立 TCP 连接浏览器发起 TCP 三次握手,准备和目标 IP 建立连接。一般是连到对方服务器的 80(HTTP)或 443(HTTPS)端口。
image-202504032129361634.2 TLS 握手(如果是 HTTPS)如果是加密连接,还得走一套 TLS 握手流程(验证证书、公钥协商、对称密钥协商等)。
神的孩子都在歌唱4.3 发起 HTTP 请求这时候浏览器才会发送这样的内容:
代码语言:javascript代码运行次数:0运行复制GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0...服务器收到请求后,返回 HTML 内容、JS、图片、CSS 等。
4.4 渲染页面浏览器拿到内容,开始解析 HTML → 加载资源 → 执行 JS → 渲染页面。
这一整个过程,用户看到的是“页面打开了”。
五. 为什么 DNS 那一步经常被忽略?因为它快,通常只有几十毫秒,有时候甚至是 0(本地缓存命中)。但你一旦遇到:
• 网站打不开• 明明能 ping IP 却打不开网页• 有些域名解析错了• 网络偶尔卡一下很可能就是 DNS 出了问题。
常见 DNS 故障表现:
• 域名解析超时(运营商 DNS 挂了)• 被污染(返回错误的 IP,常见于某些国际域名)• 被拦截(指向运营商广告页)• 缓存错误(曾经改过 hosts 忘了)这也是为什么很多人喜欢把 DNS 手动换成:
• 8.8.8.8(Google)• 1.1.1.1(Cloudflare)• 223.5.5.5(阿里)更快、更稳定、更干净。
六. 总结一下• 你敲域名后,第一步其实是在“问路”,找 IP。• DNS 就是互联网的“通讯录”系统,把人类语言翻译成 IP。• 大部分上不了网页的问题,不是网坏了,是“名字找不到”。下次网页打不开,别急着重启电脑,先试试:
代码语言:javascript代码运行次数:0运行复制ping www.baidu.com
nslookup www.baidu.com你可能一眼就看出问题出在哪了。
关注 公众号 神的孩子都在歌唱 可领取 几十G的 python ,java, 计算机基础,算法,网络等学习资料
作者:神的孩子都在歌唱
本人博客:https://blog.csdn.net/weixin_46654114
转载说明:务必注明来源,附带本人博客链接