http协议
Http
HTTP(超文本传输协议)是一个用于传输超媒体文档(如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信设计的,但也可以用于其他目的。HTTP 遵循经典的客户端-服务器模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。
HTTP 是无状态的,意味着服务器不会在两个请求之间保留任何数据(状态)。这使得 HTTP 协议设计得简单,但也需要其他的方式(如 Cookie)来维持状态。
HTTP 请求和响应的基本格式如下:
HTTP 请求
请求行:包括方法(如 GET、POST)、路径(请求的 URL)和 HTTP 版本。
请求头部:包括一些元数据,如 Host(请求的主机名)、User-Agent(客户端的软件类型)、Accept(客户端接受的 MIME 类型)等。
空行:分隔头部和主体的空行。
请求主体:对于一些方法(如 POST、PUT),请求主体包含发送到服务器的数据。
HTTP 响应
状态行:包括 HTTP 版本、状态码(如 200、404)和原因短语(如 OK、Not Found)。
响应头部:包括一些元数据,如 Content-Type(响应主体的 MIME 类型)、Content-Length(响应主体的长度)等。
空行:分隔头部和主体的空行。
响应主体:包括服务器返回的数据,通常是一个 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 网站时,会发生以下几个步骤:
建立 SSL/TLS 连接:客户端和服务器会进行一系列的握手过程,以建立一个安全的连接。这个过程包括协议版本协商、选择加密算法、公钥交换等步骤。
服务器验证:客户端会验证服务器的证书是否由一个可信任的证书颁发机构(CA)签发,证书的主机名是否匹配请求的主机名,以及证书是否在有效期内。
数据传输:一旦建立了 SSL/TLS 连接,客户端和服务器就可以安全地传输数据了。数据在传输前会被加密,接收方收到数据后会进行解密。
消息完整性: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 证书需要钱,功能越强大的证书费用越高