一文读懂 DNS:从域名解析到百度访问全流程

目录

前言

一、什么是 DNS?—— 互联网的 “地址簿”

为什么需要 DNS?

DNS 的核心参数

二、DNS 解析原理:递归与迭代的协作

1. 两种核心查询方式

2. 完整解析流程(以www.baidu.com为例)

缓存清理命令

三、DNS 服务器类型:分布式架构的分工

常用公共 DNS 推荐

四、实战:搭建 DNS 服务器(BIND 为例)

1. 安装软件包

2. 核心配置文件说明

3. 配置步骤

(1)修改全局配置(/etc/named.conf)

(2)定义区域(/etc/named.rfc1912.zones)

(3)创建区域数据文件(/var/named/benet.com.zone)

(4)启动服务并测试

4. 反向解析配置(可选)

五、从输入www.baidu.com到页面显示:全流程梳理

1. DNS 解析(获取 IP)

2. 建立 TCP 连接(三次握手)

3. SSL/TLS 握手(HTTPS 加密)

4. 发送 HTTP 请求与接收响应

5. 页面渲染与连接关闭

总结

前言

在互联网世界中,我们每天输入www.baidu.com就能打开百度首页,背后藏着一套精密的 “地址翻译与通信机制”。其中,DNS(域名系统)是整个流程的起点,它解决了 “人类记域名、电脑认 IP” 的核心矛盾。本文将从 DNS 基础讲起,详解解析原理,并完整梳理从输入域名到页面显示的全链路。

一、什么是 DNS?—— 互联网的 “地址簿”

DNS(Domain Name System,域名系统)本质是域名与 IP 地址的映射数据库,相当于互联网的 “114 查号台”。

为什么需要 DNS?

计算机之间的通信依赖唯一的 IP 地址(如180.101.50.242,类似 “门牌号”),但 IP 地址由数字组成,难以记忆。域名(如baidu.com)是 IP 的 “人性化别名”,DNS 的核心作用就是实现域名与 IP 的双向转换

  • 正向解析:域名→IP(最常用,如www.baidu.com180.101.50.242);
  • 反向解析:IP→域名(多用于邮件反垃圾验证等场景)。

DNS 的核心参数

  • 端口与协议:默认使用 53 端口,UDP 协议用于常规查询(速度快),TCP 协议用于主从服务器数据同步(可靠,适合大数据量);
  • 域名结构(FQDN):全限定域名,完整标识主机位置,格式为主机名.子域.二级域.顶级域.根域(根域.通常省略)。例如www.sina.com.cn,拆解后为:
    • 主机名:www(具体服务节点);
    • 子域:无;
    • 二级域:sina(企业 / 机构标识);
    • 顶级域:com.cn(国家顶级域 +.com 类别域)。

二、DNS 解析原理:递归与迭代的协作

DNS 解析不是 “一步到位”,而是本地缓存→多级服务器协作的过程,结合了两种查询方式:

1. 两种核心查询方式

查询方式应用场景特点通俗类比
递归查询客户端 ↔ 本地 DNS 服务器客户端只问一次,等待最终结果,中间过程由服务器代理“帮我查下百度的 IP,我只要结果”
迭代查询本地 DNS 服务器 ↔ 根 / 顶级 / 权威服务器上级服务器不直接返回结果,只给 “下一个查询地址”,需自行迭代“我不知道,你去问顶级域服务器吧”

2. 完整解析流程(以www.baidu.com为例)

  1. 本地缓存优先:浏览器先查自身缓存(如 Chrome 的 DNS 缓存),再查操作系统缓存(Windows 用ipconfig /displaydns查看)和hosts文件(手动绑定的域名 - IP 直接生效);
  2. 递归请求本地 DNS:若本地无缓存,电脑向本地 DNS 服务器(运营商提供或公共 DNS 如114.114.114.114)发送递归查询;
  3. 迭代查询根服务器:本地 DNS 无缓存时,先向根服务器(全球 13 组逻辑集群,管理顶级域)查询,根服务器返回.com顶级域服务器地址;
  4. 查询顶级域服务器:本地 DNS 向.com顶级域服务器查询,对方返回baidu.com权威服务器(百度自己的 DNS 服务器,如dns.baidu.com)地址;
  5. 查询权威服务器:本地 DNS 向百度权威服务器查询www.baidu.com,对方返回最终 IP(如180.101.50.242);
  6. 结果返回与缓存:本地 DNS 将 IP 返回给浏览器,并缓存该记录(缓存时长由域名的 TTL 值决定,通常几小时到几天),方便下次快速查询。

缓存清理命令

  • Windows:ipconfig /flushdns(清理缓存),ipconfig /displaydns(查看缓存);
  • Linux:需安装nscd服务,执行nscd -i hosts清理。

三、DNS 服务器类型:分布式架构的分工

全球 DNS 是庞大的分布式系统,不同服务器各司其职:

服务器类型核心职责举例
根 DNS 服务器管理根域,返回顶级域服务器地址全球 13 组逻辑根服务器(A-M),国内有镜像节点
顶级域 DNS 服务器管理特定顶级域(如.com.cn),返回权威服务器地址.com服务器、.cn服务器(由 CNNIC 管理)
权威 DNS 服务器管理具体域名(如baidu.com),存储域名 - IP 映射的最终数据ns1.baidu.comns2.baidu.com
缓存 DNS 服务器不管理区域数据,仅缓存查询结果,加速访问运营商本地 DNS、公共 DNS(8.8.8.8223.5.5.5

常用公共 DNS 推荐

  • 国内:114.114.114.114(稳定)、223.5.5.5/223.6.6.6(阿里云);
  • 国外:8.8.8.8/8.8.4.4(Google)、1.1.1.1(Cloudflare)。

四、实战:搭建 DNS 服务器(BIND 为例)

BIND(Berkeley Internet Name Domain)是最主流的 DNS 服务器软件,以下以 CentOS 为例,演示主服务器的正向 / 反向解析配置。

1. 安装软件包

yum install bind bind-chroot bind-utils -y
# bind:主程序;bind-chroot:安全隔离;bind-utils:包含nslookup/dig等测试工具

2. 核心配置文件说明

配置文件路径作用
/etc/named.conf全局配置(监听地址、允许查询网段等)
/etc/named.rfc1912.zones区域配置(定义负责的域名及数据文件)
/var/named/xxx.zone区域数据文件(存储域名 - IP 映射记录)

3. 配置步骤

(1)修改全局配置(/etc/named.conf
vim /etc/named.conf
options {listen-on port 53 { 192.168.10.23; };  # 监听本地服务IP# listen-on-v6 port 53 { ::1; };  # 禁用IPv6(按需)directory "/var/named";  # 区域数据文件存放路径allow-query { 192.168.10.0/24; };  # 允许查询的网段(按需调整)
};
zone "." IN {  # 根域配置(默认无需修改)type hint;file "named.ca";  # 根服务器地址列表
};
include "/etc/named.rfc1912.zones";  # 引入区域配置
(2)定义区域(/etc/named.rfc1912.zones

benet.com域名为例,添加正向解析区域:

vim /etc/named.rfc1912.zones
zone "benet.com." IN {type master;  # 主服务器file "benet.com.zone";  # 区域数据文件名allow-update { none; };
};
(3)创建区域数据文件(/var/named/benet.com.zone

复制模板文件并保留权限:

cd /var/named/
cp -p named.localhost benet.com.zone  # -p保留权限和属主

编辑数据文件,添加解析记录:

vim /var/named/benet.com.zone
$TTL 1D  # 缓存生存周期(1天)
@ IN SOA benet.com. admin.benet.com. (  # @代表当前域名,admin.benet.com是管理员邮箱0 ; serial  # 更新序列号(主从同步用,主需大于从)1D ; refresh  # 从服务器刷新间隔1H ; retry  # 刷新失败重试间隔1W ; expire  # 失效时间3H ) ; minimum  # 无效记录缓存时间NS benet.com.  # 本域DNS服务器A 192.168.10.23  # DNS服务器IP
IN MX 10 mail.benet.com.  # 邮件服务器(优先级10)
www IN A 192.168.10.23  # www.benet.com → 192.168.10.23
mail IN A 192.168.10.11  # mail.benet.com → 192.168.10.11
ftp IN CNAME www  # ftp是www的别名(ftp.benet.com指向www.benet.com)
* IN A 192.168.10.100  # 泛域名解析(任意前缀.benet.com都指向该IP)
(4)启动服务并测试
# 启动服务,关闭防火墙和SELinux
systemctl start named
systemctl stop firewalld
setenforce 0# 客户端配置DNS(/etc/resolv.conf)
echo "nameserver 192.168.10.23" > /etc/resolv.conf# 测试解析
nslookup www.benet.com  # 应返回192.168.10.23
host mail.benet.com     # 应返回192.168.10.11

五、从输入www.baidu.com到页面显示:全流程梳理

DNS 解析只是第一步,完整的访问过程涉及网络协议栈多层协作,共分 5 个阶段:

1. DNS 解析(获取 IP)

如前文所述,通过递归 + 迭代查询,得到www.baidu.com的 IP 地址(如180.101.50.242)。

2. 建立 TCP 连接(三次握手)

浏览器向百度服务器的 443 端口(HTTPS 默认端口)发起 TCP 连接:

  • 第一次:客户端发送 SYN(同步请求);
  • 第二次:服务器返回 SYN+ACK(同意连接);
  • 第三次:客户端发送 ACK(确认连接)。
    连接建立后,进入数据传输阶段。

3. SSL/TLS 握手(HTTPS 加密)

百度默认使用 HTTPS,需先建立加密通道:

  • 客户端发送支持的加密套件列表;
  • 服务器选择套件并返回证书(含公钥);
  • 客户端验证证书,生成会话密钥并用公钥加密发送给服务器;
  • 双方用会话密钥加密后续数据。

4. 发送 HTTP 请求与接收响应

  • 浏览器发送 HTTP 请求:GET /index.html HTTP/1.1,携带浏览器信息(User-Agent)、Cookie 等;
  • 百度服务器(如 Nginx)接收请求,调用后端服务(搜索数据库、动态页面生成器),生成 HTML 响应;
  • 服务器将 HTML、CSS、JS、图片等资源返回给浏览器。

5. 页面渲染与连接关闭

  • 浏览器解析 HTML 结构,加载 CSS 渲染样式,执行 JS 处理交互,最终显示百度首页;
  • 通信完成后,通过 “四次挥手” 关闭 TCP 连接(客户端发 FIN→服务器 ACK→服务器发 FIN→客户端 ACK)。

总结

DNS 是互联网的 “基础设施”,通过分布式架构和缓存机制实现了域名到 IP 的高效转换;而从输入域名到页面显示,是 DNS 解析、TCP 连接、HTTPS 加密、HTTP 通信、页面渲染的完整协同。理解这套流程,能帮我们更好地排查网络问题(如 DNS 缓存污染、连接超时等),也能更深入地认识互联网的运行逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96557.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初试Docker Desktop工具

文章目录1. 概述2. 下载3. 安装4. 注册5. 登录6. 启动7. 容器8. 运行容器8.1 运行容器的镜像8.2 获取示例应用8.3 验证Dockerfile文件8.4 拉取Alpine精简镜像8.5 创建镜像8.6 运行容器8.7 查看前端9. 访问静态资源9.1 本地静态资源9.2 创建服务器脚本9.3 修改Dockerfile文件9.4…

百度披露Q2财报:营收327亿,AI新业务收入首超百亿

8月20日,百度发布2025年第二季度财报,显示季度总营收327亿元,百度核心营收263亿元,归属百度核心净利润74亿元,同比增长35%。受AI驱动,涵盖智能云在内的AI新业务收入增长强劲,首次超过100亿元&am…

【字母异位分组】

思路 核心思路:使用排序后的字符串作为键,将原始字符串分组 键的选择:对于每个字符串,将其排序后得到标准形式作为键分组存储:使用哈希表,键是排序后的字符串,值是对应的原始字符串列表结果构建…

高防cdn如何缓存网页静态资源

为什么需要优化网页静态资源的缓存? 网页静态资源包括图片、CSS、JavaScript等文件,它们通常体积大、访问频繁。在网页访问过程中,如果每次都从源服务器请求这些静态资源,会导致网络延迟和带宽消耗。而优化网页静态资源的缓存&am…

使用Pandas进行缺失值处理和异常值检测——实战指南

目录 一、缺失值处理 1.1 缺失值的识别 1.2 删除缺失值 1.3 填充缺失值 二、异常值检测 2.1 异常值的定义 2.2 常用检测方法 IQR(四分位数间距)法 Z-score(标准分数)法 三、实战案例:基因表达数据预处理 四…

B.30.01.1-Java并发编程及电商场景应用

摘要 本文深入探讨了Java并发编程的核心概念及其在电商系统中的实际应用。从基础并发机制到高级并发工具,结合电商业务场景中的典型问题,如高并发秒杀、库存管理、订单处理等,提供了实用的解决方案和最佳实践。 1. Java并发编程基础 1.1 并发…

怎样避免游戏检测到云手机?

以下是一些可能避免游戏检测到云手机的方法:云手机可能会因网络配置等因素出现一些异常网络行为,如网络延迟的规律性变化等,在使用云手机玩游戏时,尽量保持网络行为的稳定性和自然性,避免短时间内频繁切换网络连接&…

文件上传 --- uploadlabs靶场

目录 1 前端和js校验 抓包改包 2 . 2.1 .htaccess(伪静态) 2.2 %00截断 (php5.2) 2.3 user_init_ 2.4 3 图片码防御 4 竞争型漏洞 思路: 容易出现的问题: 1 前端和js校验 关闭JS的代码,上传PHP…

汉化版本 k6 dashboard

目前官方提供的 dashboard 只有英文版本,国内使用不方便,因此 fork 了下官方仓库,添加了汉化版本 https://github.com/kinghard7/xk6-dashboardhttps://github.com/kinghard7/xk6-dashboard安装 xk6 构建程序:go install go.k6.i…

视觉识别:ffmpeg-python、ultralytics.YOLO、OpenCV-Python、标准RTSP地址格式

视觉识别:ffmpeg-python、ultralytics.YOLO、OpenCV-Python、标准RTSP地址格式 ffmpeg-python 核心概念 常用过滤器(Filters) 高级操作 视频截帧转换图片示例 参考 ultralytics.YOLO(You Only Look Once) 1. 模型加载 2. 训练模型 (`train()`) 标准YAML格式示例 3. 预测 (…

浙江龙庭翔新型建筑材料有限公司全屋定制:畅享品质生活新境界!

在消费升级的时代浪潮中,浙江龙庭翔新型建筑材料有限公司以卓越的产品质量和创新的服务理念,重新定义全屋定制的内涵,为追求高品质生活的消费者打造理想家居。公司秉承"匠心质造,乐享生活"的核心价值观,将环…

鹰角网络基于阿里云 EMR Serverless StarRocks 的实时分析工程实践

一、客户背景与业务挑战 1.1 客户介绍 鹰角网络(HYPERGRYPH) 成立于2017年,总部位于上海,是中国知名游戏研发与发行公司,代表产品包括现象级手游《明日方舟》及《泡姆泡姆》《来自星辰》《终末地》等。公司依托阿里云…

LWIP的IP 协议栈

IP 协议栈 下面的分析把上文对 IPv4 概念的说明与 lwIP 中的具体实现代码对应起来,便于将理论与实现对照理解。分析覆盖:输入处理、路由与转发、输出与报文构建、分片/重组、校验和与各种配置点(hook、选项、统计等)。目录&#x…

高并发短信网关平台建设方案概述

本方案涵盖了架构设计、技术选型、核心功能、高可用保障以及实施路径,旨在构建一个能够应对千万级日吞吐量、稳定、安全、可扩展的现代短信网关平台。 高并发短信网关平台建设方案 一、 项目概述与目标 1.1 项目背景 为满足公司业务(如用户注册、登录、交易验证、营销通知…

阿里云服务-开启对象存储服务及获取AccessKey教程

(1)阿里云OSS简介 (2)打开阿里云网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 点击“立即开通” (2)开通成功后,充值任意金额 顶栏选择“费用”|“充值…

[特殊字符] 高可用高并发微服务架构设计:Nginx 与 API Gateway 的协同实践

一、Nginx 和 Gateway 的关系:是替代还是协作? 不是替代关系,而是协作关系。 1. Nginx 的角色(通常在最外层) 反向代理 & 负载均衡:将前端请求分发到多个后端服务或网关实例。 静态资源服务&#xf…

解码LLM量化:深入剖析最常见8位与4位核心算法

解码LLM量化:深入剖析8位与4位核心算法 大型语言模型(LLM)的性能日益强大,但其庞大的体积和高昂的计算成本构成了部署的主要障碍。模型量化,作为一种将高精度浮点权重(如16位)映射到低位宽整数&…

提问:温度不改变 logits 与概率的排名,为何还会影响模型输出?

你此前围绕温度的核心困惑始终是:“温度不改变 logits 与概率的排名,为何还会影响模型输出?” 以下总结将紧扣这一困惑,并重点补充核采样(Top-p)在其中的作用,明确温度与核采样如何共同影响输出…

【文献阅读】Lossless data compression by large models

1. 中华人工智能研究中心,郑州。 2. 鹏程实验室,深圳。 3. 上海数学与交叉学科研究所,上海。 4. 中国科学院计算技术研究所,北京。 5. 宁波人工智能产业研究所,宁波。 6. 滑铁卢大学计算机科学学院,加拿大安…

注意力机制:捕获长距离依赖关系的革命性技术

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! ✨ 1. 注意力机制概述:为什么需要关注"长距离依赖&qu…