从输入 URL 到浏览器接收的过程中发生了什么事情?
2024-10-18 23:32:57
What really happens when you navigate to a URL
上面两篇文章都解读的很好,值得阅读。
接下来在总结一下这个过程:
1、首先,会查询缓存,如果缓存存在的话则直接响应,否则继续下面过程;
2、当发送一个URL请求时,不管这个URL是Web页面的URL还是Web页面上每个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询。这能使浏览器获得请求对应的IP地址。DNS查找过程如下:浏览器缓存 、系统缓存、路由器缓存、ISP DNS 缓存、递归搜索
3、浏览器与远程`Web`服务器通过`TCP`三次握手协商来建立一个`TCP/IP`连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。
4、一旦`TCP/IP`连接建立,浏览器会通过该连接向远程服务器发送`HTTP`的`GET`请求。远程服务器找到资源并使用HTTP响应返回该资源,值为200的HTTP响应状态表示一个正确的响应。
5、此时,`Web`服务器提供资源服务,客户端开始下载资源。如果资源可缓存则存入缓存。
6、响应返回后,便进入了我们关注的前端模块,浏览器决定如何处理这些响应(例如,它是HTML页面,一张图片,一段音乐)。简单来说,浏览器会解析`HTML`生成`DOM Tree`,其次会根据CSS生成CSS Rule Tree,而`javascript`又可以根据`DOM API`操作`DOM`
最新文章
- C# 对sharepoint 列表的一些基本操作,包括添加/删除/查询/上传文件给sharepoint list添加数据
- SQL SERVER连接、合并查询
- C/C++代码中的笔误
- java和python根据对象某一个属性排序
- <;一>;SQL优化1-4
- InnoDB关键特性之doublewrite
- Response.Redirect(";";);Server.Transfer(";";)跳转页面的区别
- 存储过程中“Select Top 变量”的问题如何解决
- 求解:C#.Net 远程方法调用失败 (Exception from HRESULT: 0x800706BE)
- jQuery Easy UI Droppable(放置)组件
- Spring之AOP术语
- python库termcolor用法
- 撸一撸Spring Cloud Ribbon的原理
- JS闭包作用域解析
- 理解Linux文件权限
- 在docker宿主机上查找指定容器内运行的所有进程的PID
- python3 中对arrow库的总结(转发)
- android设置主mic/副mic录音
- Databases: MySQL tRIGger--chinese character-set php
- ASE加解密算法详细介绍