HTTP与HTTPS
HTTP(Hyper Text Transfer Protocol)
HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应用层的协议,基于TCP/IP协议传输数据,是互联网上应用最为广泛的一种网络协议,所有的www文件都必须遵守这个标准。
最初设计HTTP协议的目的是提供一种发布和接收HTML页面的方法
HTTP经过多年的发展,产生了多个版本:
HTTP/0.9---------1991年
HTTP/1.0---------1996年
HTTP/1.1---------1997年
HTTP/2------------2015年
目前,使用最广泛的是HTTP/1.1版本
HTTP协议一般用于B/S架构(即Browser/Server),浏览器作为HTTP客户端通过URL向HTTP服务端(即Web服务器)发送请求
无状态
指协议对事务的处理没有记忆能力,后面如果需要前面的信息,则还需要重传
无连接
服务器处理完请求并收到客户端的应答后,就会断开连接,不利于客户端和服务端保持会话连接。为了弥补这种不足,产生了两个记录HTTP状态的技术:Cookie和Session
HTTP原理
1、客户端(浏览器)和服务端(服务器)建立TCP连接(三次握手)
2、浏览器向服务器发送HTTP请求
3、服务器向浏览器发送HTTP响应
4、服务器关闭TCP连接(四次挥手)
5、浏览器将响应得到的HTML代码放到前端给用户
HTTP报文
1、请求报文构成
1)请求行
包括请求方法、URL、协议/版本
2)请求头
3)请求正文
2、响应报文构成
1)状态行
2)响应头
3)响应正文
请求方法
常用的请求方法有:
get、post、put、delete
HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)
HTTPS是HTTP的安全版。
由于HTTP是以明文的方式传输内容,攻击者如果截取了报文就可以直接读取其中的信息,为了解决这一问题,在HTTP协议的基础上加入了SSL/TLS协议,依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密
HTTPS原理
1、客户使用https的URL访问Web服务器,与Web服务器建立SSL连接。
2、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
3、客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5、Web服务器利用自己的私钥解密出会话密钥。
6、Web服务器利用会话密钥加密与客户端之间的通信。
流程:
1、客户端向服务端发送https连接请求
2、服务端返回证书(公钥)
3、客户端产生随机密钥(对称)
4、客户端使用公钥对对称密钥进行加密
5、客户端向服务端发送加密后的对称密钥
6、服务端使用自己的私钥进行解密,得到对称密钥
7、客户端与服务端通过使用对称密钥加密后的密文进行通信
HTTPS的缺点
1、相比于HTTP,会增加数据开销,速度也更慢
2、SSL证书需要money,功能越强大,费用越高