HTTP:(超文本传输协议) 默认工作在 TCP 协议的80端口 采用明文传输,安全系数差,不提供如何方式的数据加密,不适合传输敏感信息,比如密码、卡号
HTTPS:(超文本传输安全协议)默认工作在 TCP 协议443端口,透过计算机网络进行安全通信的传输协议,HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,安全性较好。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS 的工作流程:
1.TCP 三次同步握手
2.客户端验证服务器数字证书
3.DH 算法协商对称加密算法的密钥、hash 算法的密钥
4.SSL 安全加密隧道协商完成
5.网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
HTTP 和 HTTPS 的区别
- HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
- 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
- HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
TCP 三次握手:
第一次握手:客户端主动尝试连接服务器,向服务器发送 SYN 包(ack=j),客户端进入 SYN_SEND状态等待服务器确认。
第二次握手:服务器接收客户端 SYN 包并确认 (ack=j+1),同时向客户端发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态
第三次握手:第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。
网络状态
?
200 ? ? 成功处理了请求,一般情况下都是返回此状态码; 301? ?(永久移动)??请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。? 302? ?(临时移动)??服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 400 ? ?服务器不理解请求的语法。? 401 ? 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。? 403 ? 服务器拒绝请求。? 404 ? 服务器找不到请求的网页。 500? ?(服务器内部错误)??服务器遇到错误,无法完成请求。? 501? ?(尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。? 502? ?(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。? 503? ?(服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。? ?
|