Skip to content

第七章 从输入网址到页面显示:一次完整的请求


1. 为什么要有这一章

前六章把网络切成一层层单独讲,这是学习的需要;但真实世界里,你在浏览器敲下 www.example.com 回车的那一瞬间,所有层、所有协议是同时协作的。"从输入网址到页面显示发生了什么"也因此成为面试和考试的经典综合题——它一道题就能检查你整个知识体系有没有连成网。

这一章就以这次回车为主线,把 DHCP、DNS、ARP、TCP、TLS、HTTP 全部串起来。每一步都标注:它属于哪一层,用到第几章的知识

先看全程总图,后面逐段拆解:

2. 阶段零:DHCP——上网资格是怎么来的(应用层,第五章)

故事其实在你回车之前就开始了。设备刚连上 WiFi 时一无所有:没有 IP 地址,不知道网关是谁,也不知道 DNS 服务器在哪。它靠 DHCP 四步广播对话取得"上网套餐":

  1. 发现:设备广播"有没有 DHCP 服务器?"(此时没有 IP,只能广播,源地址填 0.0.0.0)。
  2. 提供:DHCP 服务器(通常就是家用路由器)回应"我这有个 192.168.1.100 你要不要"。
  3. 请求:设备广播"我要这个地址"。
  4. 确认:服务器确认,并附赠三样关键配置——子网掩码、默认网关地址、DNS 服务器地址

这四样东西正好对应后面每一步:掩码用来判断目标在不在本网段(第三章),网关是出网的必经之门(第三章),DNS 地址马上就要用(第五章)。DHCP 基于 UDP(第四章:还没有 IP 时谈不上建立连接)。

为什么第三步还要广播?因为局域网里可能有多台 DHCP 服务器同时给出提供,设备广播"我选了某台的地址",既通知被选中的服务器确认,也让落选的服务器收回各自的候选地址。地址是来的(有租期),到期前设备要续租——所以叫"发牌",不叫"卖断"。

3. 第一步:DNS 解析——把域名换成 IP(应用层,第五章)

浏览器拿到 www.example.com,但 IP 分组的目的地址栏只认数字。查询按"就近原则"层层升级:

  1. 先查浏览器和操作系统的缓存,命中就结束。
  2. 没有,则向 DHCP 告知的本地 DNS 服务器发起递归查询(UDP,53 端口)。
  3. 本地服务器缓存也没有,就代替你做迭代查询:问根服务器 → 被指向 com 顶级域服务器 → 被指向 example.com 权威服务器 → 拿到最终答案。
  4. 结果 93.184.216.34 逐级缓存并返回浏览器。

层次归属:DNS 是应用层协议,但它是为网络层(IP 地址)服务的"前置翻译"。

4. 第二步:判断网段与 ARP——找到出门的路(网络层+链路层,第二、三章)

拿到目标 IP 后,本机用第三章的方法做判断:把目标 IP 和自己的 IP 分别与子网掩码相与93.184.216.34 显然和 192.168.1.100/24 不同网段,结论:这个分组必须交给默认网关

于是问题从"IP 层的远方"落到"链路层的眼前":把帧发给网关,需要网关的 MAC 地址。本机查 ARP 缓存,没有就发 ARP 广播"谁是 192.168.1.1",路由器单播回应自己的 MAC(第三章)。

现在可以完成第一跳的封装(第一章的封装过程实战):

填写内容关键点
网络层 IP 首部源 192.168.1.100,目的 93.184.216.34目的 IP 是最终服务器,全程基本不变
链路层帧头源 本机 MAC,目的 网关的 MAC目的 MAC 是下一跳,每过一跳换一次

这就是全篇最重要的一个对比:IP 地址端到端不变,MAC 地址逐跳更换。分组每到一台路由器,路由器拆掉旧帧、查路由表做最长前缀匹配、TTL 减 1,再用下一跳的 MAC 封一个新帧发出去(第三章)。出家门时,路由器还会做 NAT,把私有源地址改写成公网地址(第三章)。

变式:如果目标就在同一局域网

考题常出的对照场景:访问的是隔壁工位的打印机(同网段)而不是远方服务器。流程立刻简化:

对比项目标在本网段目标在外网
掩码相与判断网络地址相同网络地址不同
ARP 询问对象目标主机本身的 MAC默认网关的 MAC
帧的目的 MAC目标主机网关
是否经过路由器
是否发生 NAT通常是

一句话总结:掩码相与的结果,决定了 ARP 去问谁——这是把第三章两个知识点拧在一起的枢纽。

5. 第三步:TCP 三次握手——先接通再说话(传输层,第四章)

IP 只保证"尽力送",网页传输不容许缺斤短两,所以用 TCP(第一章端到端原则:可靠性放在两端)。浏览器随机选一个临时端口,向服务器的 443 端口(HTTPS)发起三次握手:

  1. 客户端发 SYN,带上自己的起始序号。
  2. 服务器回 SYN+ACK,确认客户端序号并送出自己的序号。
  3. 客户端回 ACK,连接建立。

三个来回后,双方都确认了"对方在线、序号已同步、可以开始计数每一个字节"(第四章)。此后传输中的丢包靠序号、确认与超时重传兜底,速度由滑动窗口、流量控制和拥塞控制共同调节——刚建立的连接正处在慢启动阶段,窗口从小到大指数爬升。

6. 第四步:TLS 握手——把通道升级成加密的(第六章)

网址是 https 开头,所以 HTTP 报文发出之前,先在 TCP 连接之上完成 TLS 握手:

  1. 双方交换随机数,协商加密算法。
  2. 服务器出示数字证书,浏览器沿信任链验到预装的根 CA,确认"对面真是 example.com"(第六章:身份认证)。
  3. 浏览器用证书里的服务器公钥加密密钥材料发过去,双方各自算出相同的对称会话密钥(第六章:非对称送钥匙)。
  4. 此后所有数据用会话密钥对称加密(第六章:对称传数据)。

7. 第五步:HTTP 请求与响应——正题只占一瞬(应用层,第五章)

万事俱备,浏览器终于发出那条真正的请求:

GET / HTTP/1.1
Host: www.example.com

服务器返回 200 OK 与 HTML 正文。浏览器边解析边发现页面里还引用了 CSS、JS、图片,于是复用连接(HTTP/1.1 持久连接或 HTTP/2 多路复用)继续请求这些资源(第五章)。若返回 301/302 则跳转新地址重来,404 则显示资源不存在。

8. 第六步:浏览器渲染——网络的终点(本机行为)

浏览器把 HTML 解析成文档树,结合 CSS 计算样式与布局,执行 JS,最终把像素画上屏幕。这一步已不属于网络协议的范畴,但考试偶尔会考顺序:解析 HTML 的过程中才会发现并加载外部资源,所以一个页面通常触发几十次 HTTP 请求。用户关闭页面后,TCP 连接经四次挥手关闭,主动关闭方进入 TIME_WAIT(第四章)。

9. 效率视角:缓存无处不在,往返能省则省

把整条链路再走一遍,你会发现设计者在每一段都埋了"抄近道"的机制,这也是一类考点:

缓存/优化省掉了什么所在章节
浏览器与系统的 DNS 缓存重复的域名解析第五章
本地 DNS 服务器缓存到根和顶级服务器的迭代查询第五章
ARP 缓存每次发帧前的广播询问第三章
HTTP 持久连接与多路复用反复的 TCP 三次握手第五章
浏览器 HTTP 缓存与 304重复下载没变化的资源第五章
TLS 会话复用重复的完整 TLS 握手第六章

它们共同的思想只有一句话:网络最贵的开销是"往返",凡是问过的就记下来,凡是建好的连接就复用。第一次访问一个网站要经历完整流程,第二次访问快得多,就是这些缓存集体生效的结果。

反过来这也解释了首次打开页面前的"白屏时间"花在哪里:DNS 一个来回、TCP 握手一个来回、TLS 握手一到两个来回,真正的 HTTP 请求发出之前就已经消耗了三四个 RTT——第一章讲的传播时延在这里被成倍放大,这正是 HTTP/3 用 QUIC 压缩握手次数的动机。

10. 总复习大表:层—协议—设备—地址—数据单元

这张表把七章内容压缩成一屏,考前最后过一遍:

层次本章故事里做的事协议典型设备地址/标识数据单元
应用层讨要配置、翻译域名、请求网页、加密协商DHCP、DNS、HTTP、TLS域名、URL报文
传输层三次握手、可靠传输、拥塞控制TCP、UDP端口号(16 位)段 / 数据报
网络层判网段、NAT、逐跳选路、TTLIP、ICMP、ARP、OSPF/BGP路由器IP 地址(32 位)分组 / 包
数据链路层ARP 问 MAC、封帧、交换机转发以太网、WiFi交换机、网桥MAC 地址(48 位)
物理层比特变电信号光信号电磁波各类介质规范集线器、中继器比特

11. 这条主线上的常见考法归纳

  1. 排序题:给出"DNS 解析、TCP 握手、发送 HTTP 请求、ARP 解析、浏览器渲染",要求排先后。正确主线:(DHCP 已就绪)→ DNS → ARP/逐跳转发 → TCP 握手 → (TLS)→ HTTP → 渲染。注意 ARP 发生在"把帧发给网关"之时,与 DNS 之后的首个分组发送相伴。
  2. 地址变化题:分组穿越多台路由器,"源/目的 IP 是否变化、源/目的 MAC 是否变化"。答案:IP 端到端不变(NAT 场景除外),MAC 逐跳都换。
  3. 层次归属题:DNS/HTTP/DHCP 属应用层,TCP/UDP 属传输层,IP/ICMP 属网络层,ARP 介于网络层与链路层之间(教材多归入网络层),交换机链路层、路由器网络层。
  4. 协议配对题:这次访问用到 UDP 的有 DHCP 和 DNS,用到 TCP 的有 HTTP/HTTPS;"网页浏览全程只用 TCP"是错的——前置的 DNS 查询走 UDP。
  5. 故障定位题:ping IP 通但访问域名失败 → 大概率 DNS 问题;同网段通、跨网段不通 → 检查网关配置;能建 TCP 连接但页面报 404/500 → 网络没问题,是应用层的事。
  6. 综合简答:"输入网址后发生了什么"按本章六步作答:DHCP 前置 → DNS 解析 → ARP 与逐跳路由 → TCP 三次握手 → TLS 握手 → HTTP 请求响应 → 渲染,每步点出所在层次即可拿满要点分。

12. 例题演练

例题一:主机 A 访问网站过程中,下列事件的正确先后顺序是?① 建立 TCP 连接 ② 域名解析 ③ 发送 HTTP 请求 ④ 浏览器解析渲染页面。

解析:没有 IP 无法握手,所以 ② 最先;连接是发请求的前提,① 在 ③ 前;渲染最后。顺序为 ② ① ③ ④。若选项再混入"ARP 解析网关 MAC",把它放在 ② 之后、首个分组发出之时即可。

例题二:判断:"数据包每经过一台路由器,其源 IP 地址和目的 IP 地址都会被修改。"

解析错误。常规转发中路由器只修改帧头(源目的 MAC 换成本跳与下一跳)并将 TTL 减 1,IP 首部的源目的地址保持不变;只有 NAT 设备才改写 IP 地址。这是"IP 端到端、MAC 逐跳换"结论的直接应用。

例题三:用户能用 ping 93.184.216.34 连通服务器,但在浏览器输入 www.example.com 无法打开页面。最可能的原因是?

解析:IP 直连可达,说明物理链路、路由、服务器主机都正常,问题出在"域名到 IP"这一环——DNS 解析故障(本地 DNS 配置错误或 DNS 服务器不可用)。这类"分层排除法"故障题,按物理连通 → IP 连通 → 域名解析 → 应用服务的顺序逐层检查。

例题四:一次 HTTPS 网页访问中,下列协议与传输层承载的对应关系哪个是错的?A. DNS 查询使用 UDP B. HTTP 报文承载于 TCP C. DHCP 使用 TCP D. TLS 建立在 TCP 之上。

解析C 错。DHCP 工作时客户端尚无 IP 地址,不可能建立 TCP 连接,它基于 UDP 广播完成;A、B、D 均正确。

本章要点回顾

步骤层次关键动作回看章节
DHCP 取配置应用层(UDP)广播四步拿到 IP、掩码、网关、DNS第三、五章
DNS 解析应用层(UDP 53)缓存 → 递归问本地 → 本地迭代问根/顶级/权威第五章
判网段 + ARP网络层 + 链路层掩码相与判跨网,ARP 广播求网关 MAC第二、三章
逐跳路由网络层最长前缀匹配、TTL 减 1、NAT、MAC 逐跳换第三章
TCP 握手传输层三次握手同步序号,慢启动起步第四章
TLS 握手应用层/表示层验证书、非对称换钥匙、对称传数据第六章
HTTP 收发应用层(TCP 443)GET 请求、状态码、持久连接复用第五章
渲染与关闭本机 + 传输层解析渲染;四次挥手,TIME_WAIT第四章

做题提醒

  1. 顺序题记牢主线:DNS 在 TCP 握手之前(没有 IP 无法握手),TLS 在 TCP 之后 HTTP 之前,渲染永远最后。
  2. "分组经过路由器时源目的 IP 都会改变"是错误表述——常规转发只改 MAC 与 TTL;仅 NAT 会改 IP,答题看清有没有提 NAT。
  3. ARP 只在同一局域网内解析下一跳的 MAC,主机不会也不需要拿到远端服务器的 MAC 地址。
  4. 一次网页访问同时用到 UDP(DHCP、DNS)和 TCP(HTTP、HTTPS),"只用其一"的选项判错。
  5. TTL 每过一台路由器减 1,减到 0 丢弃并回 ICMP——这既是防环机制也是 traceroute 的原理,两个考点常互相引出。
  6. 层次归属混搭是综合题最大陷阱:看到"交换机根据 IP 转发""路由器根据 MAC 寻路""HTTP 工作在传输层"直接排除。