Skip to content

http协议

Http

HTTP(超文本传输协议)是一个用于传输超媒体文档(如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信设计的,但也可以用于其他目的。HTTP 遵循经典的客户端-服务器模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。

HTTP 是无状态的,意味着服务器不会在两个请求之间保留任何数据(状态)。这使得 HTTP 协议设计得简单,但也需要其他的方式(如 Cookie)来维持状态。

HTTP 请求和响应的基本格式如下:

HTTP 请求

  1. 请求行:包括方法(如 GET、POST)、路径(请求的 URL)和 HTTP 版本。

  2. 请求头部:包括一些元数据,如 Host(请求的主机名)、User-Agent(客户端的软件类型)、Accept(客户端接受的 MIME 类型)等。

  3. 空行:分隔头部和主体的空行。

  4. 请求主体:对于一些方法(如 POST、PUT),请求主体包含发送到服务器的数据。

HTTP 响应

  1. 状态行:包括 HTTP 版本、状态码(如 200、404)和原因短语(如 OK、Not Found)。

  2. 响应头部:包括一些元数据,如 Content-Type(响应主体的 MIME 类型)、Content-Length(响应主体的长度)等。

  3. 空行:分隔头部和主体的空行。

  4. 响应主体:包括服务器返回的数据,通常是一个 HTML 文档。

HTTP 方法

HTTP 定义了一组请求方法,表示对指定资源的期望操作。最常用的方法包括:

  • GET:获取指定资源。

  • POST:向指定资源提交数据。

  • PUT:更新指定资源。

  • DELETE:删除指定资源。

  • HEAD:与 GET 类似,但只请求头部信息。

  • OPTIONS:返回指定资源支持的方法。

HTTP 状态码

HTTP 状态码是由服务器返回的,表示请求的处理结果。状态码分为五类:

  • 1xx(信息):请求已接收,需要继续处理。

  • 2xx(成功):请求已成功处理,例如 200 OK。

  • 3xx(重定向):需要进一步操作以完成请求,例如 301 Moved Permanently。

  • 4xx(客户端错误):请求包含语法错误或无法完成,例如 404 Not Found。

  • 5xx(服务器错误):服务器在处理请求时发生错误,例如 500 Internal Server Error。

以上就是 HTTP 协议的基本概述。实际上,HTTP 协议包含的内容远不止这些,例如缓存控制、内容协商、认证、安全等等。

Https

HTTPS(超文本传输安全协议)是一种用于安全通信的协议,它在 HTTP 上加入了 SSL/TLS 协议以提供数据加密、服务器验证以及最终的消息完整性保证。

HTTPS 使用端口 443,而 HTTP 使用端口 80。

当你访问一个 HTTPS 网站时,会发生以下几个步骤:

  1. 建立 SSL/TLS 连接:客户端和服务器会进行一系列的握手过程,以建立一个安全的连接。这个过程包括协议版本协商、选择加密算法、公钥交换等步骤。

  2. 服务器验证:客户端会验证服务器的证书是否由一个可信任的证书颁发机构(CA)签发,证书的主机名是否匹配请求的主机名,以及证书是否在有效期内。

  3. 数据传输:一旦建立了 SSL/TLS 连接,客户端和服务器就可以安全地传输数据了。数据在传输前会被加密,接收方收到数据后会进行解密。

  4. 消息完整性:SSL/TLS 协议还提供了消息完整性保证。每个消息都会附上一个 MAC(消息认证码),接收方可以通过这个 MAC 来检查数据是否在传输过程中被篡改。

HTTPS 的主要优点是提供了数据的保密性和完整性,以及服务器的身份验证。这对于处理敏感信息(如信用卡号、密码等)的网站来说是非常重要的。然而,HTTPS 也有一些缺点,如需要更多的 CPU 和内存资源,以及更复杂的配置。

在现代的 Web 开发中,HTTPS 已经成为了标准,所有的网站都应该使用 HTTPS。许多现代的 Web 技术(如 HTTP/2、Service Workers 等)也要求必须使用 HTTPS。

http 区别

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全
  • HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443
  • HTTPS 由于需要设计加密以及多次握手,性能方面不如 HTTP
  • HTTPS需要SSL,SSL 证书需要钱,功能越强大的证书费用越高