IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 基础知识积累1:浏览器输入url到页面渲染过程1 -> 正文阅读

[网络协议]基础知识积累1:浏览器输入url到页面渲染过程1

毕业后一直在写业务代码
没有好好研究一下浏览器的渲染机制
偶然看到掘金里面的文章有提到了这个
我就开始查阅资料
并进行一些个人总结把

整个从浏览器输入url到页面渲染过程
主要是有三个阶段:
1、浏览器解析URL的过程
2、浏览器发送请求与服务器交互的过程
3、浏览器对接收到的html页面渲染的过程

浏览器解析URL的过程

关键字:本地域名服务器LDNS,root service,主域名服务器(gTLD),Name Server域名服务器

这一步是把域名解析成 IP 地址
(这个过程有点像是你提供一个城市名字,然后经过查询告诉你这个城市的邮政编码一样。)

下面的过程只是一个简化的流程,实际情况会更复杂

  1. 通常情况下,我们在浏览器中写入url,浏览器会检查缓存(浏览器缓存,系统缓存)中有没有该域名解析对应的ip地址,如果有,即使用这个IP地址,当然这个缓存是具有时效性的。

  2. 如果在各级缓存中找不到记录,浏览器便会先请求 本地域名服务器(LDNS) 来获取该域名对应的ip地址

  3. 如果在LDNS中还是没找到,会跳到根root service域名服务器,根域名服务器返回给本地域名服务器所查询的主域名服务器(.com/cn),本地服务器再发请求到主域名服务器(gTLD)

  4. 主域名服务器收到请求再返回Name Service 地址 ,这个Name Service就是网站注册的域名服务器。根据映射表找到Name Service 对应的ip地址返回给本地域名服务器。这个域名解析任务由这个域名提供商的服务器来完成。

  5. Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器。

  6. 返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制。

  7. 把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。

浏览器发送请求与服务器交互

关键字:http,TCP,TCP/IP,三次握手,四次挥手

在上一步我们拿到了服务器的ip,那咱们浏览器端(client)当然迫不及待地想和服务器(sever)交互了,这个交互的过程如下:

  1. client与sever建立TCP链接(三次握手)

    在这里插入图片描述

简单描述:
准备:sever端初始状态为Listen
第一次握手:client向sever发送 SYN请求信号,和seq顺序码 seq = n 等
第二次握手:sever收到后向client返回ACK确认包、Ack =n+1 和seq 顺序码 seq = m
第三次握手:sever收到后发生ACK确认 和 Ack = m+1

细节可以参考大佬的文章:
tcp连接全过程各种状态详解

  1. client发送 HTTP 请求,sever处理请求并返回 HTTP 报文

client端与sever端建立了TCP连接后,client与sever便可以使用http协议来通讯。
http协议是通过TCP/IP协议进行传输数据的
http请求包含三部分:请求行(构建请求阶段)、请求头、请求体。
sever端接收到client的请求,将作出处理并返回相应数据,包含响应行、响应头、响应体。
http是一种短连接,在client端获得sever端的响应报文后,即是完成了一次通讯,TCP连接会关闭。

参考资料:
基于浏览器一次完整的http请求流程

  1. 断开连接TCP连接( 四次挥手)

TCP关闭过程(四次握手)
准备:client端首先调用close,成为主动关闭端

第一次挥手:client端发送FIN分节,表示数据发送完毕,此时client端状态FIN_WAIT_1

第二次挥手:server收到连接释放报文段后即发出确认报文段,server 进入 CLOSE-WAIT(关闭等待)状态,此时的 TCP 处于半关闭状态,client 到 server 的连接释放

第三次挥手:server 已经没有要向 client 发出的数据了,server 发出连接释放报文段,server 进入 LAST-ACK(最后确认)状态,等待 client 的确认

第四次挥手:client 收到 server 的连接释放报文段后,对此发出确认报文段,client 进入 TIME-WAIT(时间等待)状态。此时 TCP 未释放掉,需要经过时间等待计时器设置的时间 2MSL 后,client 才进入 CLOSED 状态。

参考资料:
浏览器解析URL

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:48:48  更:2021-08-21 15:49:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 5:03:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计