TCP/IP-HTTPS
目录
TCP/IP
是什么
: 一系列协议组成的网络分层模型分层原因
: 网络会不稳定, 交给下层让下层去处理这些事情, 让下层去做失败重请求等操作
具体分层
客户端 | 传输 | 服务端 |
---|---|---|
应用层(HTTP/FTP/DNS…) | 应用层 | |
传输层(TCP: 失败重连/UDP: 不重连<直播>) | 传输层 | |
网络层(IP): 路由, 寻址 | 网络层 | |
数据链路层(物理层: 以太网/Wifi/光纤) | <————> | 数据链路层 |
连接
-
是什么
: 通信双方表明接受通信, 不将对方消息丢弃, 即为建立连接(使用端口)建立: 三次握手, 断开: 四次挥手(要双方都表明都无消息可发才会断开)
-
长连接
: 利用四次挥手的原理, 发送心跳包, 阻止TCP连接断开
HTTPS
-
定义
: HTTP (Secure / over SSL / over TLS)在 HTTP 之下增加一个安全层
-
原理
: 刚开始通过非对称加密协商出一套对称加密密钥, 之后采用对称加密达到加密传输 -
为什么不直接非对称加密: 非对称加密
性能差
TLS 建立过程
-
Client Hello
-
Server Hello
(包含加密套件<对称/非对称/hash> / 客户端随机数 / 服务端随机数) -
服务器证书
信任建立 为了保证公钥的可信性会进行以下验证:-
服务器公钥 (事实上还会包含 主机名/地区 等信息)
-
服务器公钥的签名
-
证书签发机构的公钥
-
证书签发机构的公钥的签名
-
证书签发机构的签发机构的公钥
-
证书签发机构的签发机构的公钥的签名
-
…..
-
根证书 (由系统自带)
-
-
Secret
使用随机数使用服务端公钥加密生成 Master secrect / 客户端加密密钥 / 服务端加密密钥 / 客户端 MAC secrect / 服务端 MAC secrect
-
为什么不直接用公钥加密
目的: 防止中间人拦截后多次发送给服务端
-
客户端用服务端密钥加密发给服务端, 服务端用客户端密钥加密发给客户端
目的: 防止中间人将消息直接扔回
-
-
客户端通知
:将使用加密通信 -
客户端发送
:Finished -
服务器通知
:将使用加密通信 -
服务器发送
:Finished