输入URL到页面显示的过程和https加密

输入URL到页面显示的过程

  • URL解析:浏览器解析输入的URL,提取出协议、主机、端口、路径等信息。
  • DNS解析:浏览器使用主机名查询DNS服务器,获取对应的IP地址。
  • 建立TCP连接:浏览器使用获取到的IP地址和端口号,与服务器建立TCP连接。这涉及到三次握手的过程。
  • 发送HTTP请求:一旦TCP连接建立,浏览器向服务器发送HTTP请求。请求的内容包括请求方法、请求头和请求体。
  • 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,根据请求的路径和参数,处理请求并准备响应。
  • 服务器返回响应:服务器根据请求的处理结果,生成相应的HTTP响应。响应的内容包括响应状态码、响应头和响应体。
  • 接收响应:浏览器接收到服务器返回的HTTP响应。
  • 渲染页面:浏览器开始解析接收到的响应内容,构建DOM树、CSSOM树和渲染树。然后进行布局和绘制,最终将页面呈现在屏幕上。
  • 页面展示:页面渲染完成后,浏览器将页面展示给用户,用户可以看到页面内容并与页面进行交互。

具体过程

URL解析

获取协议(http/https)域名路径等信息

URL:统一资源定位符,https://www.google.com/search?q=URL:访问Google的搜索页面,并使用查询参数q=URL进行搜索,这里使用的是HTTPS协议
URL包含:

  • 协议:定义了客户端应该使用哪种协议来访问资源。常见的协议有HTTP、HTTPS、FTP等。
  • 主机名:指定了资源所在的服务器的域名或IP地址。
  • 端口:可选部分,指定了服务器上用于通信的网络端口。HTTP默认端口是80,HTTPS默认端口是443。
  • 路径:指定了资源在服务器上的具体位置。
  • 查询参数:可选部分,以键值对的形式提供,通常用于向服务器传递额外的信息,如搜索查询或过滤器。

如果输入的不是网址或者协议不合法的话,那么搜索引擎会合成新的带搜索关键字的URL,准备进行搜索

DNS解析——域名解析为IP地址

当我们输入一个网址时,浏览器会先将域名(如google.com)转换为IP地址(如192.168.1.1),然后连接到相应的服务器。这个过程叫做域名解析或DNS查询。

先在客户端进行查询有没有解析的记录,也就是 DNS 缓存
如果 DNS 缓存中没有解析的记录,则查询 DNS 服务器得到 ip 地址(本地DNS服务器->跟服务器->权威域名服务器)

TCP连接

浏览器获取了IP和端口号,发起TCP连接,三次握手

HTTPS安全验证

HTTPS(Hypertext Transfer Protocol Secure)在建立TCP连接之后,会进行一个额外的安全验证过程,这个过程称为SSL/TLS握手。

  1. 客户端(浏览器)向服务器发起HTTPS连接请求:浏览器向服务器发送一个名为“ClientHello”的消息,包含支持的SSL/TLS版本、加密算法、压缩算法等信息。
  2. 服务器响应客户端的请求:服务器会向客户端发送一个ServerHello消息,包含确认的SSL/TLS版本、加密算法、压缩算法等信息。同时,服务器会发送一个数字证书(Certificate),证明服务器的身份。
  3. 客户端验证数字证书:浏览器会验证数字证书的有效性,包括证书的颁发机构、证书的有效期等。如果验证通过,浏览器会生成一个随机数(Pre-master secret),并使用证书中的公钥对其进行加密,发送给服务器。
  4. 服务器私钥解密:服务器使用自己的私钥解密浏览器发送的随机数(Pre-master secret)。
  5. 生成对称密钥:客户端和服务器使用随机数、证书中的公钥、服务器的私钥等信息,生成一个对称密钥(Session Key),用于对数据进行加密和解密。
  6. 数据加密和解密:在整个HTTPS会话中,客户端和服务器使用对称密钥对数据进行加密和解密,确保数据传输过程中的安全性。
  7. 握手结束:客户端和服务器会发送一个Finished消息,确认SSL/TLS握手过程结束。

客户端发送HTTP请求

浏览器在SSL/TLS握手完成后发送HTTP请求,这时发送HTTP请求会加密

http请求报文一共包括三个部分:
请求行:指定http请求的方法、url、http协议版本等
请求头:描述浏览器的相关信息,语言、编码等。
请求体:当发送POST, PUT等请求时,通常需要向服务器传递数据。这些数据就储存在请求正文中。

服务器处理请求

服务器接收到浏览器发送的HTTP请求后,会进行相应的处理。这可能包括读取数据库、处理业务逻辑、生成动态内容等。

返回HTTP响应

服务器发送HTTP响应给浏览器,响应报文中包含状态码、响应头和响应体等信息。
常见的状态码有200表示成功,404表示资源未找到,500表示服务器内部错误等。
如果返回的响应报文的状态为3xx,就需要重定向到其他URL,然后从头开始

渲染

由于渲染机制很复杂,需要执行的任务很多,所以渲染过程被分成了很多子阶段,然后开始一边解析一边渲染,过程是这样的:
1)首先要构建DOM树,将html转为浏览器认识的结构。在dom树构建的过程中如果遇到js脚本或者外部js连接,则会停止构建dom树来执行和下载相应的代码,这样会造成阻塞,这就是为什么推荐js代码应该放在html后面
2)然后根据外部样式、内联样式等来构建一个CSS对象模型树,也就是CSSOM树。
3)结合DOM树和CSSOM树,生成一个渲染树(render tree),这个过程被称为attachment
4)生成布局(flow),浏览器在屏幕上“画出”渲染树中所有的节点
5)将布局绘制(paint)在屏幕上,显示出整个页面

https安全超文本传输协议

在这里插入图片描述

过程

  1. 客户端(浏览器)向服务器发起HTTPS连接请求:浏览器向服务器发送一个名为“ClientHello”的消息,包含支持的SSL/TLS版本、加密算法、压缩算法等信息。

  2. 服务器响应客户端的请求:服务器会向客户端发送一个ServerHello消息,包含确认的SSL/TLS版本、加密算法、压缩算法等信息。同时,服务器会发送一个数字证书(Certificate),证明服务器的身份。

  3. 客户端验证数字证书:浏览器会验证数字证书的有效性,包括证书的颁发机构、证书的有效期等。如果验证通过,浏览器会生成一个随机数(Pre-master secret),并使用证书中的公钥对其进行加密,发送给服务器。

  4. 服务器私钥解密:服务器使用自己的私钥解密浏览器发送的随机数(Pre-master secret)。

  5. 生成对称密钥:客户端和服务器使用随机数、证书中的公钥、服务器的私钥等信息,生成一个对称密钥(Session Key),用于对数据进行加密和解密。

  6. 数据加密和解密:在整个HTTPS会话中,客户端和服务器使用对称密钥对数据进行加密和解密,确保数据传输过程中的安全性。

  7. 握手结束:客户端和服务器会发送一个Finished消息,确认SSL/TLS握手过程结束。

session和cookie有什么关系

Session 和 Cookie 之间的关系主要体现在 Session ID 的传递上。服务器在用户登录后生成一个 Session ID,并将其存储在 Cookie 中发送给用户的浏览器。

用户的浏览器在后续的请求中会自动将包含 Session ID 的 Cookie 发送回服务器,服务器通过这个 Session ID 来识别用户并恢复其会话状态。

通过这种方式,即使用户关闭并重新打开浏览器,只要 Cookie 中的 Session ID 仍然有效,服务器就能够恢复用户的会话状态。

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
URL页面显示中间会经历以下过程: 1. 解析URL:浏览器首先会解析输入URL,包括协议(例如HTTPHTTPS)、域名、端口号和路径等信息。 2. 域名解析:浏览器将域名发送给DNS(域名系统)服务器进行解析,以获取对应的IP地址。DNS服务器将返回一个或多个IP地址,浏览器将使用其中一个IP地址来建立与服务器的连接。 3. 建立连接:浏览器使用HTTPHTTPS协议与服务器建立连接。对于HTTP,浏览器将发送一个包含请求的报文给服务器;对于HTTPS,还需要进行SSL/TLS握手过程来建立加密通信。 4. 发送请求:浏览器向服务器发送HTTP请求,请求可以包含HTTP方法(如GET、POST等)、请求头、请求体信息。请求头中包含了一些元数据,例如用户代理、Accept-Language等。 5. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,开始处理请求。这可能涉及动态生成页面内容、从数据库中获取数据、处理业务逻辑等。 6. 返回响应:服务器生成HTTP响应,并将其发送回浏览器。响应包含状态码、响应头和响应体等信息。状态码表示请求的处理结果,如200表示成功,404表示未找到页面等。 7. 浏览器渲染:浏览器收到服务器返回的响应后,开始解析响应。它会根据响应头中的内容类型确定如何处理响应体,例如渲染HTML页面、执行JavaScript脚本、加载CSS样式等。 8. 页面显示:浏览器根据解析和渲染的结果,将页面显示给用户。这包括显示文本、图片、视频、表单等内容,并且可能触发一些交互行为,如点击链接、提交表单等。 总结起来,URL页面显示过程包括解析URL、域名解析、建立连接、发送请求、服务器处理请求、返回响应、浏览器渲染和页面显示等步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值