HTTP和HTTPS
概念
HTTP:即超文本传输协议。是互联网上应用最广泛的一种网络协议,它用于客户端和服务器端之间的通信,规定了如何从网站服务器传输超文本到本地浏览器,是客户端和服务端请求和应答的标准。是一种无状态的协议,即HTTP自身不保存之前发送过的请求或响应。
HTTPS: 是HTTP的安全版,HTTPS使用SSL(安全套接层)建立安全通信线路,是身披SSL外壳的HTTP。
报文: 在HTTP请求和响应的过程中传递的数据块就叫做报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。
报文包括请求报文和响应报文。
区别
- HTTP通信使用明文不加密,内容可能会被窃听;HTTPS使用SSL协议将通信加密,防止被窃听。
- HTTP不验证通信方身份,有可能遭遇伪装,也就是说,接收到请求的服务器可能不是URI真正指定的主机,收到返回响应的可能不是提出请求的客户端,也无法判定请求来自何方,出自谁手。在HTTP协议通信时,任何人都可以向服务器发送请求,而服务器只要接收到请求,不管对方是谁都会返回一个响应,所以无法确定正在通信的双方是否具备访问权限,即使是无意义的请求也会照单全收,无法阻止海量请求下的DoS攻击(Denial of Service,拒绝服务攻击);而HTTPS使用SSL协议,不仅可以将通信加密,还使用了一种被称为证书的手段,可用于确定通信方(客户端或服务端)。证书由值得信赖的第三方机构颁发,用以证明客户端和服务器是实际存在的。例如:客户端在开始通信之前会先确认服务器的证书,通过使用证书,也减少了个人信息泄漏的危险性。
- HTTP无法证明报文的完整性,内容可能已遭篡改。也就是说,无法确认发出的请求/响应 和接收到的请求/响应是前后相同的,中途有可能被篡改。HTTPS使用SSL后就拥有了完整性保护的功能。
- 和HTTP相比,HTTPS要做服务器端、客户端双方加密及解密处理,大量消耗CPU及内存等资源,导致处理速度变慢;要进行SSL通信,要处理的通信量增加导致通信速度慢。
- HTTPS采用对称密钥加密(共享密钥加密)和不对称密钥加密(公开密钥加密),需要使用证明公开密钥(不对称密钥)正确性的CA证书,费用较高;HTTP则不用。
- HTTP和HTTPS使用的端口号不同,HTTP协议的端口号为80,HTTPS的端口号为443。