HTTP
http是超文本传输协议(Hyper Text Transfer Protocol)
它是一个用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议, 基于TCP/IP通信协议。
HTTP 工作原理
HTTP协议工作于客户端-服务端架构上。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
HTTP三点注意事项:
- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
- HTTP是无状态:
无状态是指协议对于事务处理没有记忆能力。
缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
HTTPS
HTTPS 全称 Hyper Text Transfer Protocol over SecureSocket Layer,
它是在HTTP基础上加上了一层数据加密及身份认证, 又称以安全为目标的 HTTP 通道。
为什么使用HTTPS?
说到为什么要使用HTTPS, 我们就要先说下HTTP的缺点。
HTTP的缺点主要是其数据通过明文传送以及缺乏消息完整性检测。
这两点对于网络安全要求较高的网络支付及交易等相关场景时最忌讳的。
所以为了满足这一网络安全需求,HTTPS应运而生。
HTTPS原理
-
首先客户端发送
HTTPS请求到服务端的443端口,服务端返回证书,作为身份凭证,实现身份验证。证书内容包含颁发机构与过期时间等。 -
客户端解析证书:
- 如果证书过期,客户端弹出警告框,提示证书存在问题。
- 如果证书不存在任何问题后,客户端生成一个
随机数,也就是等会作为机密传输的私钥,并用该证书对此随机数进行加密,传输给服务端。
-
服务端利用对应的
私钥对该加密数据进行解密,得到该随机数具体的数值。 -
在以后数据传输中,客户端与服务端利用此随机数对传输数据进行对称加密,实现加密传输。
HTTP与HTTPS区别
- 默认端口
- HTTP协议默认采用80端口
- HTTPS采用443端口
- 安全性
- HTTP数据以明文传输,容易被黑客盗用,安全性低
- HTTPS采用ssl/tls层对数据进行加密,安全性更高
- 连接效率
- HTTP因为没有ssl/tls层对数据进行加密, 除了tcp连接慢外,没有其他因素可以导致其连接速度慢
- HTTPS除了tcp连接外,ssl/tls层对数据加密的过程中还需要耗费一定的时间,故连接效率更低
- 使用成本
- HTTP 不需要购买ssl证书, 使用成本低
- HTTPS需要购买SSL证书,功能越强大的证书,费用越高, 故使用成本高