一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。
TCP/IP
TCP/IP协议族
一系列协议所组成的一个网络分层模型
分层的原因
网络的不稳定性
分层
-
Application Layer 应用层
HTTP、FTP、DNS
-
Transport Layer 传输层
TCP、UDP
-
Internet Layer 网络层
IP
-
Link Layer 数据链路层
以太网、Wi-Fi
TCP连接
连接
通信双方建立确认[可以通信],不会将对方的消息丢弃,即为[建立连接]。
连接的建立
三次握手
连接的关闭
四次挥手
长连接
存在的原因
因为移动网络并不在Internet中,而是运营商的内网,并不具有真正的公网IP,因此当某个TCP连接在一段时间不通信之后,网关出于网络性能考虑而关闭这条TCP连接和公网的连接通道,导致这个TCP端口不能继续接收外部通信消息,即TCP连接被关闭。
实现方式
心跳。即在一定间隔时间内,使用TCP连接发送超短无意义消息,让网关不能将自己定义为空闲连接,从而防止网关将自己的连接关闭。
HTTPS
定义
-
HTTPS
HTTP over SSL(又或者HTTP over TLS)的简称,即工作在SSL(或TLS)上的HTTP。说白了就是加密通信的HTTP。
-
SSL
Secure Socket Layer
-
TLS
Transport Layer Security
工作原理
在客户端和服务器之间协商出一套对称密钥,每次发送消息之前将内容加密,收到消息之后解密,达到内容的加密传输。
常见问题:为什么不直接使用非对称加密?
非对称加密由于使用了复杂的数学原理,计算相当复杂,如果完全使用非对称加密来加密通信内容,会严重影响网络通信的性能。
HTTPS连接建立的过程
-
Client Hello
-
可选的TLS版本
-
可选的加密套件
- 可选的对称加密算法
- 可选的非对称加密算法
- 可选的hash算法
-
客户端随机数
-
-
Server Hello
-
TLS版本
-
加密套件
- 对称加密算法
- 非对称加密算法
- hash算法
-
客户端随机数
-
服务器随机数
-
-
服务器证书 信任建立
- 服务器公钥
- 服务器主机名
- 服务器地区
- 服务器证书的签名
- 证书签发机构的公钥
- 证书签发机构的名字
- 证书签发机构的地区
- 证书签发机构的证书的签名
- 根证书机构的公钥
- 根证书机构的名字
- 根证书机构的地区
-
Pre-master Secret
Master secret
-
客户端加密密钥
-
服务端加密密钥
-
客户端 MAC secret
-
服务端 MAC secret
HMAC
hash-based message authenticate code -
-
客户端同志:将使用加密通信
-
客户端发送:Finished
1-5的数据,使用客户端加密密钥加密后,发出去
-
服务器通知:将使用加密通信
-
服务器发送:Finished
\