前言:首先使用开发者工具中的网络可以看到几个不同颜色的阶段:

image-20230120002636901

开头瞬间:初始链接阶段 即TCP三次握手阶段

紫色部分(htpps协议时):SSL(Secure Sockets Layer)加密阶段 //Q:emm..话说b站怎么也没见到有?

绿色部分:服务器准备阶段

蓝色部分:资源下载阶段

一、浏览器与网站建立连接

要建立连接,得先找到网站的服务器,即DNS先把域名解析到服务器,寻求域名解析的索引顺序:

本地缓存(hosts)→ 路由器电信服务器的DNS服务 → 网站域名服务商的DNS服务

接着按照不同的协议进行不同的会话过程:

HTTP协议:是客户端和服务器请求的应答标准(TCP),未加密。采用80端口。

HTTPS协议:服务器持有密钥,客户端持有公钥,规定了加密方式,且每次都有协商时间。使用了SSL+TCP,访问慢于http。采用443端口。

image-20230120004510185

三次握手运用到网站中即

image-20230120011746037

SYN为数据包标识,seq为序列号,listen为侦听端口,ACK为确认码

同样的,建立TCP连接时需要三次握手,终止时需要四次挥手:

image-20230120011445558

运用到网站中即

image-20230120012351722

Q:HTTPS数据传输的详细流程?

A:浏览器访问网站服务器建立SSL连接→服务器返回一份包含公钥的证书信息给浏览器→浏览器协商SSL连接的安全等级并建立会话密钥→浏览器利用公钥将会话密钥加密传到网站服务器→服务器利用自己的私钥解密出会话密钥→服务器再用会话密钥加密通信过程

A:此过程包含了一对非对称的公钥私钥,以及一对对称的会话密钥

img

二、从网站下载资源到本地网页

不论是http还是https,只要建立连接之后就可以下载网站资源呈现到网页了,但也会有失败的几种情况,可根据不同的状态码查看失败原因。

在开发者模式中的网络选项下,选择网站就可以看到状态码:

200-299:一切正常
300-399:重定向 //301是永久重定向 302临时重定向 304带参数的重定向
400-499:我的错 //经典404代表网站输入错误
500-599:网站的错 //经典502代表网站服务器错误

三、总结

输入一个网址按下回车依次发生如下五个部分的内容,其中需要重点掌握的原理为第二三部分:

Step1、DNS解析域名对应的ip

Step2、三次握手进入初始化链接阶段

Step3、进入SSL加密协议握手

Step4、链接成功 服务器准备内容

Step5、浏览器下载并呈现内容


2023年1月20日01:46:27 妈呀,晚上写博客真是个上头且费肝的事儿,明天一定一定一定12点半前睡觉,呼!