云计算百科
云计算领域专业知识百科平台

【八股文】从浏览器输入一个url到服务器的流程

1.url解析与DNS解析

浏览器解析用户输入的URL,提取协议(HTTP\\HTTPS)、域名、端口及路径等信息

浏览器首先检查本地DNS缓存和系统DNS缓存,若未命中,查询本地hosts文件

最后递归查询向本地DNS服务器发起请求,获取域名对应的IP地址

这里我想插入一段,讲讲本地DNS缓存、系统DNS缓存、Hosts文件、DNS服务器几者之间的关系

首先,不要觉得很复杂,其实本质就是为了根据域名拿IP地址,只是好几个地方缓存了,先这么简单理解。然后继续往下看。

本地DNS缓存是浏览器缓存,浏览器缓存会缓存最近访问的域名与IP的映射关系,来减少重复查询的延迟

但本地DNS缓存时间较短,比如chrome默认只有1分钟

用户输入URL后,浏览器首先检查自身缓存,若命中就直接使用IP地址


系统DNS缓存是操作系统缓存,操作系统也维护了独立的DNS缓存,用于存储域名解析结果,避免重复请求DNS服务器

若浏览器缓存未命中,操作系统会检查自身缓存,若命中直接返回IP地址


Hosts文件是本地手动配置的域名与IP的映射文件,路径一般为C:\\Windows\\System32\\drivers\\etc\\hosts

修改后会强制清空操作系统DNS缓存

浏览器缓存和系统缓存均未命中时,操作系统会检查hosts文件,若命中,直接使用配置的IP地址


当本地、系统缓存及Hosts文件均未命中时,操作系统就会向配置的本地DNS服务器发起递归查询

2.TCP连接建立

三次握手:通过TCP协议与服务器建立可靠连接

连接复用:HTTP 1.1默认支持keep-alive, 复用TCP连接以减少握手开销

3.发送HTTP请求

浏览器构造HTTP请求,包含请求行(方法、URI、协议)、请求头(user-Agent、Host、Cookie)、请求体

4.服务器处理请求

如果是静态资源,直接返回文件

如果是动态资源,调用后端服务生成响应内容

构建响应内容,包含状态行(http/1.1 200 ok)、响应头(Content-type、重定向地址、缓存策略)、响应体

5.浏览器接收与渲染

浏览器解析响应头,根据状态码决定后续操作

浏览器进行资源加载和页面渲染

6.连接关闭与缓存

四次挥手关闭连接

DNS缓存,减少后续解析延迟

浏览器对静态资源副本进行缓存,通过ETag或last-Modified验证资源是否更新

讲讲协商缓存ETag和Last-Modified

浏览器在发送请求的时候,首先会检查强制缓存,如果缓存命中,则不需要发送请求。直接从缓存中获取资源数据,若强缓存失效,则发送请求进去协商缓存,服务器通过请求头Last-Modified或Etag字段进行检查,若200表示资源有更新,304则表示资源没变,直接取缓存即可。

若同时存在ETag和Last-Modified,服务器优先验证ETag。

ETag是基于资源内容hash,精确到字节级别,适用于对内容变化敏感的资源(比如JSON、js文件)

Last-Modified是基于修改时间,精确到秒级别,适用于文件、图片等不频繁更新的静态资源

总结

从浏览器输入一个url到服务器的流程如下:

  • url解析与DNS解析
  • TCP连接建立
  • 发送HTTP请求
  • 服务器处理请求
  • 浏览器接收与渲染
  • 连接关闭与缓存

 

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【八股文】从浏览器输入一个url到服务器的流程
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!