浏览器输入URL后发生了什么

简介: 我们平时在浏览器输入一个网址 或者 搜索,那么网络世界会发生什么?

1. 合成URL

用户输入URL后浏览器根据输入的信息判断是搜索还是跳转网址,如果是搜索内容则将搜索内容 + 默认的搜索引擎组合成新的URL,如果用户数据的URL是合法网址则直接跳转至输入的URL网址。

2. DNS域名解析

浏览器通过DNS域名解析服务器将输入的域名 解析 为对应服务的IP地址,这样才能访问到域名指定的服务器。

本地DNS服务器查询

本地DNS服务器之间递归查询,在任意一步查询到域名时就会终止递归,返回域名对应的IP地址。
本地DNS解析流程

根域名服务器、顶级域名服务器、权威域名服务器

  • 根DNS服务器负责 返回顶级域 DNS 服务器的 IP 地址,顶级域 DNS 服务器负责 返回权威 DNS 服务器的 IP 地址,权威 DNS 服务器负责 返回相应主机的 IP 地址
  • 如果本地的DNS服务器无法查询,则迭代到根域名服务器、顶级域名服务器、权威域名服务器 查询。

3. 建立 TCP 连接

首先判断请求是否是https的,如果是则在http的基础上套上一层ssl/tls外壳,用于加密通信,每次传输的都是加密后的数据。
TCP三次握手连接:

  • 第一次握手:建立连接,客户端发送连接请求报文,将SYN位置为1,seq为X,然后客户端进入SYN_SEND状态,等待服务器的确认。
  • 第二次握手:服务器收到SYN报文段,服务器收到客户端的SYN报文段,就知道这是一个要建立连接的请求,然后服务器也回复一个SYN的报文段(seq为y),

并且附带ACK(ACK置为X+1)信息用于确认收到了第一次握手请求的信息。发送后服务端进入SYN_RECV状态。

  • 第三次握手:客户端收到了服务器的SYN+ACK信息后,也返回一个ACK(ACK置为y+1)的确认报文。此后客户端和服务端都进入ESTABLISHED状态,完成三次握手。

SSL握手连接

  • 第一阶段 :客户端向服务器发送握手请求,包括所支持的TLS版本和密码组合以供服务器选择,还有一个"client random" 随机字符串
  • 第二阶段 :服务器对客户端进行回应,包括数据证书,服务器选择的密码组合和"server random" 随机字符串
  • 第三阶段 :客户端对服务器发来的证书进行验证,确保对方的合法身份,验证过程具体为(1)检查数字签名(2)验证证书链(3)检查证书有效期(4)检查证书的撤回状态
  • 第四阶段 :客户端向服务器发送另一个随机字符串"premaster secret"(预主密钥),这个字符串经过服务的公钥加密,只有服务器的私钥才能解密。
  • 第五阶段 :服务器使用私钥解密 "premaster secret" 字符串
  • 第六阶段 :生成共享密钥,客户端和服务器均使用 client random、server random、premaster secret,并使用相同的算法生成相同的共享密钥KEY。
  • 第七阶段 : 客户端发送经过共享密钥 KEY 加密过的 "finished" 信号。
  • 第八阶段 : 服务器发送经过共享密钥 KEY 加密过的 "finished" 信号。
  • 第九阶段 :握手完成,之后双方通信使用 共享密钥 KEY 对称加密 安全通信。

4. 发送HTTP请求,服务器处理并返回请求

TCP连接建立后,浏览器就可以利用HTTP/HTTPS协议向服务器发送请求了。服务器接受到请求,就解析请求头,如果头部有缓存相关信息如if-none-match与if-modified-since,则验证缓存是否有效,若有效测返回状态码304,若无效则重新返回资源,状态码为200.

5. 关闭TCP连接

TCP四次挥手

  • 第一次挥手 :客户端(也可以是服务器端)发送一个FIN报文段给服务器,然后客户端进入FIN_WAIT_1状态
  • 第二次挥手 :服务器端收到了客户端发送的FIN报文段,向客户端回一个ACK确认报文,客户端进入FIN_WAIT_2状态
  • 第三次挥手 : 服务器端向客户端发送FIN报文表示这是一个要关闭连接的请求,同事服务端进入LAST_ACL状态。
  • 第四次挥手 :客户端收到服务器端发送的FIN报文,向服务端发送ACK确认报文,然后客户端进入TIME_WAIT状态,服务端收到ACK确认报文后关闭连接,客户端等待1-2MS后关闭连接。

6. 浏览器渲染

  • 渲染进程将 HTML 内容转换为能够读懂DOM 树结构。
  • 渲染引擎将 CSS 样式表转化为浏览器可以理解的styleSheets,计算出 DOM 节点的样式。
  • 创建布局树,并计算元素的布局信息。
  • 对布局树进行分层,并生成分层树。
  • 为每个图层生成绘制列表,并将其提交到合成线程。合成线程将图层分图块,并栅格化将图块转换成位图。
  • 合成线程发送绘制图块命令给浏览器进程。浏览器进程根据指令生成页面,并显示到显示器上。
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
缓存 JavaScript 前端开发
浏览器对地址栏中输入的URL的处理过程
【8月更文挑战第20天】
409 0
|
8月前
|
缓存 网络协议 JavaScript
浏览器输入 URL 后的那些事儿
本文介绍了浏览器输入URL后到页面展示的完整过程,涵盖DNS解析、TCP三次握手、HTTP请求与响应、以及浏览器渲染等关键步骤。首先,浏览器通过DNS解析将域名转换为IP地址;接着,通过TCP三次握手建立连接;随后发送HTTP请求获取网页内容;最后,浏览器解析HTML、CSS并构建渲染树,完成页面渲染。整个过程涉及网络协议和浏览器内部机制的协同工作。
241 13
|
10月前
|
缓存 网络协议 JavaScript
浏览器输入url之后最后网页渲染出来经过了什么
【10月更文挑战第31天】从浏览器输入 URL 到网页渲染出来是一个涉及多个环节和技术的复杂过程,每个环节都对最终的网页显示效果和用户体验有着重要的影响。
116 3
|
9月前
|
缓存 网络协议 JavaScript
第八问:在浏览器中输入URL后发生了什么?
当在浏览器中输入URL并按下回车键时,会经历一系列复杂的过程:1. 用户输入URL;2. DNS解析域名;3. 建立TCP连接;4. 发送HTTP/HTTPS请求;5. 服务器处理请求;6. 浏览器渲染页面;7. 页面展示。每个步骤涉及不同的技术和协议,确保数据的准确传输和页面的正确显示。
371 0
|
10月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
10月前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
11月前
|
缓存 网络协议 前端开发
浏览器输入一个URL后,发生了什么?
浏览器输入一个URL后,发生了什么?
253 1
|
11月前
|
域名解析 缓存 网络协议
浏览器输入 URL 回车后会经历哪些步骤?
本文首发于微信公众号“前端徐徐”,详细解析了从在浏览器中输入URL到页面完全呈现的全过程,涵盖检查缓存、URL解析、DNS解析、TCP连接、HTTP请求、服务器响应、浏览器处理响应、页面解析与渲染、关闭TCP连接等关键步骤。通过这些步骤,帮助读者深入了解互联网的工作原理,提升网站性能和用户体验。
253 0
|
网络协议 前端开发 JavaScript
浏览器加载网页的幕后之旅:从URL到页面展示详解
【8月更文挑战第31天】当在浏览器地址栏输入URL并回车后,一系列复杂过程随即启动,包括DNS解析、TCP连接建立、HTTP请求发送、服务器请求处理及响应返回,最后是浏览器页面渲染。这一流程涉及网络通信、服务器处理和客户端渲染等多个环节。通过示例代码,本文详细解释了每个步骤,帮助读者深入理解Web应用程序的工作机制,从而在开发过程中作出更优决策。
298 5
|
存储 API 网络架构
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
155 0

热门文章

最新文章