HTTP和HTTPS

23 阅读4分钟

一、HTTP

超文本传输协议(HTML为超文本),是万维网应用层的协议,它通过两个程序实现,一个是客户端程序即各种浏览器,另一个是服务器,通过交换报文完成网页的请求和响应,客户端发送HTTP请求,服务器响应该请求并返回HTTP响应。HTTP协议通常使用TCP作为传输协议,在Web浏览器和Web服务器之间传输数据,通过使用统一资源标识符(URL)来标识要获取或发送的资源。HTTP协议的常见版本包括HTTP/1.0、HTTP/1.1和HTTP/2。

1、HTTP请求的内容
请求行(Request line):请求行包含三个部分,即请求方法、请求URL和协议版本。请求方法指示服务器要执行的操作(例如GET,POST,PUT等)。请求URL指定要请求的资源的位置。协议版本指定所使用的HTTP协议版本。

请求头(Request headers):请求头包含了与请求相关的元数据,例如浏览器类型、所支持的编码、请求内容类型、Cookie等等。请求头是一些键值对的集合。

请求体(Request body):请求体是可选的。它包含了HTTP请求的内容,例如在POST请求中,请求体通常包含了表单数据或JSON数据。
2、HTTP响应的内容
状态行(Status line):状态行包含三个部分,即协议版本、状态码和状态信息。协议版本指定所使用的HTTP协议版本。状态码是一个3位数字,指示服务器的处理结果,如:200。状态信息是对状态码的解释,如:ok。

响应头(Response headers):响应头包含了与响应相关的元数据,例如服务器类型、所支持的编码、响应内容类型、Cookie等等。响应头也是一些键值对的集合。

响应体(Response body):响应体包含了HTTP响应的内容。例如,在一个HTTP响应中,响应体通常包含了HTML、XML或JSON格式的文本数据,或者是一些图片、音频或视频等二进制数据。

二、HTTPS

HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的协议。它基于HTTP协议,但在其上添加了安全层,使用SSL或TLS协议加密通信内容,从而提供了保密性、完整性和身份验证等安全性能。HTTPS协议的使用可以有效防止网络中的中间人攻击和窃听,保证了用户信息的安全性。常见的应用包括在线银行、电子商务、社交媒体和其他需要保护用户隐私和安全的网站。

HTTPS协议的加密过程如下:

1. 客户端向服务器发起HTTPS请求时

2. 服务器会将自己的数字证书发送给客户端

3. 客户端验证证书是否合法,如果合法则生成随机密钥并使用证书中的公钥加密该密钥,发送给服务器

4. 服务器使用自己的私钥解密密钥,并用该密钥加密通信内容,然后发送给客户端

5. 客户端使用先前生成的密钥解密内容并进行验证
sequenceDiagram
客户端->>服务器: 发送HTTPS请求
服务器-->>客户端:发送数字证书
客户端->>服务器: 检验证书,合法:发送密钥(随机密钥+证书中的公钥)
服务器-->>客户端:私钥解密密钥→使用密钥加密通信内容

三、HTTP和HTTPS的区别

1、安全性不同:HTTP是明文传输,数据都是未加密的,不安全,HTTPS的数据传输过程是加密,安全性较好

2、CA证书:使用HTTPS协议需要到CA(数字证书认证机构)申请证书,证书一般都是收费的

3、响应速度不一样: HTTP响应快,只需要通过TCP的三次握手建立连接,客户端和服务器只需要交换三个包,而HTTPS是构建在SSL上的HTTP协议,所以还需要加上SSL握手的九个包,一共要交换十二个包,所以HTTPS更耗费服务器资源

4、链接和端口不同:HTTP链接为http://,HTTPS 链接为https://;端口也不一样,HTTP默认80端口,HTTPS默认443

5、适用场景不同:HTTP协议适用于无需保密性和完整性的数据传输场景,而HTTPS协议适用于需要保护用户隐私和安全的场景,例如在线银行、电子商务、社交媒体等网站