简单了解HTTP和HTTPS

之前遇到一个问题是:HTTP和socket通信的区别是什么?

答:HTTP:无状态。所以有时候会自动断开连接;socket会一直保持连接状态,除非关闭socket,才会断开连接,更稳定。

HTTP缺点:

1.通信明文,容易被窃听。

    HTTP -> 明文方式传送。

    TCP/IP协议的通信机制:内容在所有通信线路上可能被窥视。

    ------------------------------------------------------------------------------

    (1)通信的加密:HTTP + SSL (Secure Socket Layer)安全套接层  

                                 或   

                                 HTTP + TLS (Transport layer Security) 安全层传输协议

    (2)内容的加密:

                客户端对请求报文加密处理后传输,前提客户端和服务端都具有加密和解密机制(主要在web服务中)

2.不验证同新方的身份,可能遭遇伪装

    HTTP协议中请求和响应,不会对通信地址进行通信;“服务器是否是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”

    若发送端ip和端口号没有被web服务器设定限制访问的前提下 -> 服务器只要接收到请求,不管是谁都会返回一个响应

3.无法证明抱稳的完整性,有可能被篡改

    HTTP防止被篡改:添加校验方法(MD5、SHA-1等)

---   某些web服务器和特定web浏览器存在安全漏洞


HTTP : 应用层(HTTP) -> TCP -> IP

HTTPS : 应用层(HTTP) -> SSL -> TCP -> IP


HTTPS通信简单流程(若有不妥地方,请指出。谢谢):

1.客户端请求服务端,带上SSL指定版本,加密组件和列表等;

2.服务端读取正确的SSL指定版本,加密组件和报文内容;

3.服务端响应给客户端返回报文内容(包含公开密钥证书)

----------------------------第一次握手完成----------------------------------

4.客户端请求服务端带上报文内容(加密后的密钥 -> 上一步的公开密钥证书)

5.服务端用私钥解密密钥,成功响应给客户端返回带上相对应的加密内容(用公开密钥证书加密内容)

6.服务端和客户端报文交换成功,收到SSL保护

7.应用层协议进行通信 -> HTTP请求

8.客户端断开连接,发送close_notify报文,发送TCP FIN关闭与TCP的通信


使用SSL时,处理速度会变慢:

    1.通信慢:消耗大量CPU及内存资源,通信量增加(网络敷在可能变慢2-100倍)

    2.加密处理:在服务端和客户端进行加密和解密,消耗硬件资源,负载增加(使用SSL加速器,尽在SSL通信处理时发挥作用,以分担负载)

猜你喜欢

转载自blog.csdn.net/fearlessnesszhang/article/details/80736293