基础
TCP/IP网络模型

- 应用层:专注于为用户提供应用能力,如HTTP、DNS、SMTP, 报文
- 传输层:TCP UDP 源端口、目的端口、窗口大小、控制标志位、段
- 网络层:IP 源ip 目的ip、包
- 数据链路层:MAC ARP、帧
LRU过程
- http:解析url
- DNS:真实地址查询 本地-根-顶级-权威
- 协议栈:浏览器调用Socket委托协议栈工作

- 可靠传输:TCP

MTU:一个网络包的最大长度,以太网中一般为 1500 字节。
MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。 - IP:远程定位

- MAC:两点传输
ARP广播,缓存 - 网卡:出口,数字信号转换为电信号,通过网线发出去
- 交换机:送别者 交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口。
- 路由器:出境大门。网络包经过交换机之后,现在到达了路由器,并在此被转发到下一个路由器或目标设备。路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址;交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址。
HTTP
HTTP和HTTPS有哪些区别,HTTPS解决了HTTP中的哪些风险
- http: 超文本传输协议,明文传输。TCP三次握手之后即可进行传输。80端口。
- https: 在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文加密传输。TCP握手后还需要进行SSL/TLS握手。443端口。需要向CA(证书权威机构)申请数字证书,进行身份验证。
- 窃听风险:信息加密,用户隐私信息不盗取。
- 篡改风险:校验机制,摘要算法为数据生成独一无二的指纹,用于校验数据的完整性。
- 冒充风险:将服务器公钥放入到数字证书中,解决了冒充的风险。
数字证书

数字签名 :用来让客户端验证服务器身份。
服务器用自己的私钥利用摘要(最好是不可逆转的,因为每个人都可以利用公钥获得摘要,所以最好无法通过摘要推断出原始数据)生成数字签名,客户端用公钥进行解密验证服务器身份。
数字证书:为了防止公钥不被篡改,在通信建立之初,由证书持有者(如服务器、客户端)主动向对方发送。

- 证书主体(Subject):证书持有者的身份信息(如服务器域名、公司名称、设备 ID);
- 主体公钥(Subject Public Key):证书持有者的公钥(后续加密 / 签名用);
- 颁发者(Issuer):签发该证书的 CA 机构信息(如 Let's Encrypt 的名称、公钥标识);
- 签名算法(Signature Algorithm):CA 签发时用的算法(如 SHA-256+RSA、ECDSA-SHA256);
- CA 签名(Signature Value):CA 用自己的私钥对 "证书核心内容" 加密后的结果;
- 有效期(Not Before / Not After):证书的生效时间和过期时间;
- 扩展字段:如 DNS 名称(证书绑定的域名)、CRL 分布点(证书吊销列表地址)、OCSP 服务器地址(在线证书状态查询)。
提取 CA 的公钥:
若当前证书是 "服务器终端证书",其颁发者是 "中间 CA",需先找到中间 CA 的证书(由服务器一起传递的证书链中获取);
若当前证书是 "中间 CA 证书",其颁发者是 "根 CA",从本地预装的根 CA 列表中找到对应根 CA 的公钥(如 Let's Encrypt 的根 CA 公钥)。
重新计算证书的哈希摘要:
用证书中指定的哈希算法(如 SHA-256),对 "证书主体 + 主体公钥 + 颁发者 + 有效期" 等核心内容(排除 CA 签名字段本身)重新计算,得到摘要 H1。
解密 CA 签名,得到原始摘要:
用步骤 1 找到的 CA 公钥,解密证书中的 "CA 签名(Signature Value)",得到 CA 在签发证书时计算的原始摘要 H2(因为 CA 签名是用自己的私钥对 H2 加密的,只有对应的公钥能解密)。
对比 H1 和 H2:
若 H1 == H2:证书内容未被篡改,且确实是该 CA 签发的(只有 CA 的私钥能生成可被其公钥解密的有效签名);
若 H1 != H2:证书被篡改(如公钥被替换、域名被修改)或签名伪造,直接判定证书无效。

SSL/TLS握手

- ClientHello:客户端向服务端发起加密通信请求,客户端支持的TLS版本、客户端产生的随机数、支持的密码套件(加密算法)
- SeverHello:服务器回应客户端,确认TLS版本、服务器产生的随机数、确认密码套件、数字证书
- 客户端回应:验证数字证书、取出服务器公钥加密发送:一个随机数、通知随后的信息都将用「会话秘钥」加密通信、客户端握手完成。
- 服务器最后的回应:
加密方法
对称加密是指加密和解密时使用同一个密钥。
非对称加密是指加密和解密使用不同的密钥,这两个密钥分别叫做「公钥」、「私钥」。公钥是可以公开给所有人的,而私钥需要自己保密的。公钥加密的数据只能用私钥解密。(耗时)
「私钥签名,公钥验签」
HTTPS一定安全可靠吗
HTTPS协议本身是没有漏洞的。
如果有一个中间人将自己的证书发给客户端那么浏览器也会给出安全提醒的,但是用户如果接受有风险的证书那么消息就会被监听。
或者有病毒篡改了客户端的CA根证书。