化身“请求”感受一段奇妙的网络之旅
2022-07-25 17:44:53 7 举报
当我们在浏览器地址栏中输入后,敲下回车时究竟发生了什么?这里则会从浏览器输入后开始,切身感受整个请求执行的全过程。
作者其他创作
大纲/内容
返回比特流数据,方便在介质上传输
本地是否有DNS缓存
client-random、支持的TLS版本、支持的密码套件列表
重绘(repaint)
无
请求行
继续使用缓存
渲染数据
渲染/加载网页
传输头
关闭连接
API转发
...
空行
执行
ECDHE密钥交换算法的参数信息
time-wait
数据加密
正常执行链路
拼接SQL
domainName
告知服务端已切换到对称加密传输
③
分布式缓存
读取缓存
TLS/1.2四次握手阶段
节点列表
查询数据库
CSS规则树
向服务器请求
介质传输
Change Cipher Spec
响应数据
Server Hello
SQL执行结果
获取数据库地址
MyBatis
scheme
得到域名
传输请求报文
返回查询出的IP
路由规则
请求头
计算预主密钥
colse
解析URL
连接正常,数据传输
渲染树
浏览器
本地DNS服务器
established
HTML
Certificate Request
Tomcat
执行SQL
有
LVS调度器
服务查询
读取配置文件
计算主密钥
否
Gateway网关
查询是否有缓存
返回缓存
server-random、选定的TLS版本、密码套件等
作为查询条件
①
地址栏输入内容
资源是否更新
请求报文
分发请求
DispatcherServlet
URL构成
验证会话密钥
参数信息
Nacos注册中心
Client Hello
?query1=value1
验证会话的对称加密密钥
④
要求客户端上传证书(可选项)
Map容器
调度器
请求落库
网络头
准备发送请求
是否已过期
请求建立连接
获取数据库连接
Server Hello Done
close-walt
⑥
得到具体的IP地址
请求
准备发送网络请求
Nginx服务器
生成URL
调度算法
是否有缓存
接收服务端信息
请求的资源路径
客户端
Encrypted Handshake Message
MySQL
判断本地是否有缓存
回流(reflow)
fin-wait-2
定位
告知客户端已切换到对称加密传输
连接建立成功,数据开始传输
Client Key Exchange
服务端
提供客户端密钥交换算法、premaster-secret
发送客户端信息
&query2=value2 ....
详细过程
建立安全连接
封装请求报文其实是在建立连接之后才做的工作,这里为了方便画图就先画了封装报文。
://
⑦
链路尾
服务端消息发送完成
链路头
Certificate
后端服务器
显示
用户
允许建立连接
根DNS服务器
0101110100100101(比特流数据).........
获取
HandlerMapping
确认建立连接
请求返回
CSS
/path
网络进程
Server Key Exchange
封装请求报文
DOM结构树
last-ack
返回304
授权DNS服务器
数据
没有
请求主体
Java方法
处理客户端信息
本地DNS缓存
响应结果
fin-wait-1
查询缓存
顶级DNS服务器
网站证书
将结果写入缓存
数据仍在传输
⑧
②
经历网络模型层层封装
会话密钥
TCP与TLS握手
TCP三次握手阶段
线程执行
先查询缓存,没有再走DNS
迭代查询
携带缓存相关标识(If-xx...)
处理信息
⑤
服务器响应200,返回结果
是
定位WEB进程
效验证书
0 条评论
下一页