HTTP协议和TCP协议简单分析
HTTP版本
HTTP/1.0 | 1996年 | 传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令 | 正式作为标准 |
---|---|---|---|
HTTP/1.1 | 1997年 | 持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码 | 2015年前使用最广泛 |
HTTP/2 | 2015年 | 多路复用、服务器推送、头信息压缩、二进制协议等 | 逐渐覆盖市场 |
HTTPS
S是SSL/TLS建立全信道,加密数据包。
TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分
1、客户端向服务器请求公钥,
2、服务端会用CA的私钥对公钥加密然后和CA证书一起发给客户端,
3、客户端拿到加密后的公钥和证书(利用CA的公钥解密出实际的公钥),客户端TLS还会验证是否证书合法,
4、客户端生成一个随机的对称的密钥(一个随机数,基于RSA签名),来加密要发送的报文数据
5、生成的对称密钥会用接受的公钥进行加密,发给服务器,让服务端用私钥解密,获得这个对称密钥
6、客户端就可以用这个对称密钥来加密数据进行通信传输。
https 每次请求都会加密吗
不会,非对称加密是比较耗时的,每次都会对称加密请求
对称加密和非对称加密
对称指的是加密和解密用同一个密钥
非对称是加密和解密用不同的密钥。公钥和私钥两把钥匙
对比
HTTP特点:
- 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
- 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
- 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
- 简单快速、灵活
- 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
TCP
三次握手
(1)客户端发送syn包(seq=x)到服务端,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers)
(2)服务端收到syn包,必须确认客户端的SYN(ack=j 1),同时自己也发送一个SYN包(seq=k),即SYN ACK包
(3)客户端收到服务端的SYN ACK包,向服务端发送确认包ACK(ack=k 1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手
四次挥手
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1,然后等待2msl后关闭连接
等待2msl的目的是防止服务端没有收到,会重试请求给客户端。这段时间正好是2msl。
版权属于:dingzhenhua
本文链接:https://cloud.tencent.com/developer/article/2019356
转载时须注明出处及本声明