HTTP协议:
HTTP是应用层的一个协议,运行在TCP(传输层协议)之上,是一个基于请求-响应的形式交互数据的无状态协议。发送一个HTTP请求到服务器,然后服务器返回一个响应信息给客户端。
HTTP支持非持久连接和持久连接两种连接方式,在非持久连接中,客户端与服务器的交互大致有如下步骤:
1.浏览器首先初始化与运行HTTP服务器的主机(下简称“网站”)的TCP连接,使用URL中指定的端口,默认为80;
2.然后,浏览器通过与TCP连接相关联的本地套接字发出一个HTTP请求消息。这个消息我们将稍后介绍;
3.网站接收到请求后,解析并处理请求,然后通过同一个套接字发出响应消息;
4.网站通知TCP需要关闭连接(浏览器收到刚才的响应消息之后才会真正终止这个连接);
5.浏览器接收到响应消息后,TCP连接终止。
而持久连接则没有关闭连接这一步,网站响应后会继续让TCP连接保持打开状态。
HTTP协议在设计时并未考虑信息的加密和验证,因此HTTP面临着数据的明文传送和缺乏对消息完整性的验证机制两个问题。攻击HTTP协议的数据传输过程时,只要攻击者能够控制到受害者网络,便可以轻易地嗅探、修改HTTP传输的内容。另外,HTTP协议在传输客户端请求和服务器响应时,仅仅在报文头部包含了传输的数据的长度,而且没有任何校验数据完整性的机制(因为数据长度这一栏也可以被攻击者随意修改)。这使得它极容易受到攻击者的篡改。
HTTPS协议:
HTTP协议和HTTPS协议同属于应用层(OSI模型的最高层),HTTPS并不是应用层的新协议,它只是对工作在加密连接(TLS或SSL)上的常规HTTP协议的称呼。通常HTTP直接和TCP通信,而使用SSL时,则变成先和SSL通信,再由SSL和TCP通信。所以HTTPS本质仍是HTTP,只不过多带了一层SSL。
![20194d8564f5e5bbf0115c61ab83b074.png](https://i-blog.csdnimg.cn/blog_migrate/503df3cfc9e23d080d2b49664164b141.png)