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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
.cn 域名,1个 12个月
简介: 我们平时在浏览器输入一个网址 或者 搜索,那么网络世界会发生什么?

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 节点的样式。
  • 创建布局树,并计算元素的布局信息。
  • 对布局树进行分层,并生成分层树。
  • 为每个图层生成绘制列表,并将其提交到合成线程。合成线程将图层分图块,并栅格化将图块转换成位图。
  • 合成线程发送绘制图块命令给浏览器进程。浏览器进程根据指令生成页面,并显示到显示器上。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
缓存 网络协议 前端开发
一步步揭秘:浏览器输入URL后的那些事儿
大家好,我是小米!你有没有好奇过,当你在浏览器输入一个网址并按下回车键后,到底发生了什么神奇的过程?从DNS解析到TCP连接,从发送HTTP请求到浏览器渲染,本文将带你深入了解这个复杂而又迷人的过程,让我们一起探索吧!
52 2
|
3月前
|
缓存 JavaScript 前端开发
|
3天前
|
缓存 网络协议 JavaScript
浏览器输入url之后最后网页渲染出来经过了什么
【10月更文挑战第31天】从浏览器输入 URL 到网页渲染出来是一个涉及多个环节和技术的复杂过程,每个环节都对最终的网页显示效果和用户体验有着重要的影响。
14 3
|
6天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
8天前
|
域名解析 缓存 网络协议
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
浏览器中输入URL返回页面过程(超级详细)、DNS域名解析服务,TCP三次握手、四次挥手
|
1月前
|
缓存 网络协议 前端开发
浏览器输入一个URL后,发生了什么?
浏览器输入一个URL后,发生了什么?
25 1
|
23天前
|
域名解析 缓存 网络协议
浏览器输入 URL 回车后会经历哪些步骤?
本文首发于微信公众号“前端徐徐”,详细解析了从在浏览器中输入URL到页面完全呈现的全过程,涵盖检查缓存、URL解析、DNS解析、TCP连接、HTTP请求、服务器响应、浏览器处理响应、页面解析与渲染、关闭TCP连接等关键步骤。通过这些步骤,帮助读者深入了解互联网的工作原理,提升网站性能和用户体验。
12 0
|
3月前
|
网络协议 前端开发 JavaScript
浏览器加载网页的幕后之旅:从URL到页面展示详解
【8月更文挑战第31天】当在浏览器地址栏输入URL并回车后,一系列复杂过程随即启动,包括DNS解析、TCP连接建立、HTTP请求发送、服务器请求处理及响应返回,最后是浏览器页面渲染。这一流程涉及网络通信、服务器处理和客户端渲染等多个环节。通过示例代码,本文详细解释了每个步骤,帮助读者深入理解Web应用程序的工作机制,从而在开发过程中作出更优决策。
55 5
|
4月前
|
缓存 网络协议 Java
(六)网络编程之化身一个请求感受浏览器输入URL后奇妙的网络之旅!
在浏览器上输入一个URL后发生了什么? 这也是面试中老生常谈的话题,包括网上也有大量关于这块的内容。
121 2
|
3月前
|
存储 API 网络架构
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度

热门文章

最新文章