首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DNS 究竟查了啥?从输入网址到打开页面发生了什么

DNS 究竟查了啥?从输入网址到打开页面发生了什么

作者头像
神的孩子都在歌唱
发布2025-06-30 09:36:05
发布2025-06-30 09:36:05
22500
代码可运行
举报
运行总次数:0
代码可运行

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-20250403212936163
image-20250403212936163

4.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 转载说明:务必注明来源,附带本人博客链接

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 神的孩子都在歌唱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DNS 究竟查了啥?从输入网址到打开页面发生了什么
    • 一. 一切的开始:你按下了回车
    • 二. DNS 查询到底查了啥?
    • 三. DNS 是怎么回答你的?
    • 四. 有了 IP,接下来发生了什么?
      • 4.1 建立 TCP 连接
      • 4.2 TLS 握手(如果是 HTTPS)
      • 4.3 发起 HTTP 请求
      • 4.4 渲染页面
    • 五. 为什么 DNS 那一步经常被忽略?
    • 六. 总结一下
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档