HTTP协议和TCP协议简单分析

HTTP版本

HTTP/1.01996年传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令正式作为标准
HTTP/1.11997年持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码2015年前使用最广泛
HTTP/22015年多路复用、服务器推送、头信息压缩、二进制协议等逐渐覆盖市场

HTTPS

S是SSL/TLS建立全信道,加密数据包。

TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分

1、客户端向服务器请求公钥,

2、服务端会用CA的私钥对公钥加密然后和CA证书一起发给客户端,

3、客户端拿到加密后的公钥和证书(利用CA的公钥解密出实际的公钥),客户端TLS还会验证是否证书合法,

4、客户端生成一个随机的对称的密钥(一个随机数,基于RSA签名),来加密要发送的报文数据

5、生成的对称密钥会用接受的公钥进行加密,发给服务器,让服务端用私钥解密,获得这个对称密钥

6、客户端就可以用这个对称密钥来加密数据进行通信传输。

https 每次请求都会加密吗

不会,非对称加密是比较耗时的,每次都会对称加密请求

对称加密和非对称加密

对称指的是加密和解密用同一个密钥

非对称是加密和解密用不同的密钥。公钥和私钥两把钥匙

对比

HTTP特点:

  1. 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
  2. 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
  3. 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
  4. 简单快速、灵活
  5. 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性

HTTPS特点:

基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护

  1. 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  2. 验证身份:通过证书认证客户端访问的是自己的服务器
  3. 保护数据完整性:防止传输的内容被中间人冒充或者篡改

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。

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2hbrzsnywpgko