当前位置: 首页 > news >正文

浏览器解析网址的过程

问题

浏览器解析网址的过程

我的回答

当你在浏览器地址栏输入一个URL(比如www.example.com)并按下回车后,会发生以下一系列步骤:

首先,浏览器会解析URL结构,确定要访问的协议、域名和路径。如果你没有输入协议部分,浏览器会自动添加"http://"或"https://",现在大多数浏览器默认是HTTPS。

接下来是DNS解析阶段。浏览器需要把域名转换成IP地址才能建立连接。这个过程会按顺序查询浏览器缓存、操作系统缓存、本地hosts文件,如果都没找到,就会向DNS服务器发起请求。DNS查询过程可能会经过多级服务器,比如,解析www.example.com可能会先查询根域名服务器,然后是.com服务器,最后是example.com的权威DNS服务器,最终得到IP地址,比如"93.184.216.34"。

获得IP地址后,浏览器会与服务器建立TCP连接,这就是著名的"三次握手"过程:客户端发送SYN包,服务器回应SYN-ACK包,客户端发送ACK包确认

如果是HTTPS网站,在TCP连接建立后还需要进行TLS握手,这个过程包括:客户端发送支持的加密算法列表和随机数,服务器选择加密算法,发送证书和另一个随机数,客户端验证证书,生成预主密钥并加密发送给服务器,双方根据交换的信息生成会话密钥,确认加密通信可以开始

连接建立后,浏览器会发送HTTP请求到服务器,包括请求方法(如GET)、路径、HTTP版本、各种请求头等信息。

服务器处理请求后返回HTTP响应,包含状态码(如200 OK)、响应头和响应体(通常是HTML内容)。

浏览器收到HTML后开始解析渲染过程:解析HTML构建DOM树,解析CSS构建CSSOM树,将DOM和CSSOM合并成渲染树,计算元素位置和大小(布局/回流),将页面绘制到屏幕上

在解析HTML的过程中,如果遇到外部资源(如CSS、JavaScript、图片等),浏览器会发起新的请求来获取这些资源。JavaScript可能会阻塞渲染,这也是为什么我们通常建议将JS放在底部或使用async/defer属性。

页面交互完成后,当浏览器或服务器决定关闭连接时,会进行TCP的"四次挥手"来终止连接:发起方发送FIN包,接收方发送ACK确认,接收方发送FIN包,发起方发送ACK确认

http://www.xdnf.cn/news/1349605.html

相关文章:

  • 倍福下的EC-A10020-P2-24电机调试说明
  • 【JVM】JVM的内存结构是怎样的?
  • mysql为什么使用b+树不使用红黑树
  • Elasticsearch Ruby 客户端 Bulk Scroll Helpers 实战指南
  • TopK问题(堆排序)-- go
  • MySQL存储过程入门
  • 中农具身导航赋能智慧农业!AgriVLN:农业机器人的视觉语言导航
  • PostgreSQL15——查询详解
  • Python 十进制转二进制
  • 【每天一个知识点】AIOps 与自动化管理
  • 使用隧道(Tunnel)连接PostgreSQL数据库(解决防火墙问题)(含Java实现代码)
  • AI实验管理神器:WandB全功能解析
  • 【文献阅读】Advances and Challenges in Large Model Compression: A Survey
  • `strncasecmp` 字符串比较函数
  • Unreal Engine IWYU Include What You Use
  • Vue 插槽(Slots)全解析2
  • ubuntu - 终端工具 KConsole安装
  • AI + 教育:个性化学习如何落地?教师角色转变与技术伦理的双重考验
  • SymPy 中抽象函数的推导与具体函数代入
  • Spring Ai 1.0.1中存在的问题:使用MessageChatMemoryAdvisor导致System未被正确的放在首位
  • c++最新进展
  • fdisk工具源码编译生成
  • DAY14-新世纪DL(DeepLearning/深度学习)战士:破(优化算法)2
  • 多线程下为什么用ConcurrentHashMap而不是HashMap
  • 【Android】 连接wifi时,强制应用使用流量
  • 【从零开始java学习|第九篇】方法的相关知识与练习
  • 【微服务的数据一致性分发问题】究极解决方案
  • 日志的配置
  • 一键部署openGauss6.0.2轻量版单节点
  • Spring原理