http
声明: 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章。本文只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 微信公众号:泷羽sec
http协议简介
HTTP协议是Hypertext Transfer_Protocol(也称为超文本传输协议)的缩写,是用于从万维网(www:world wide web)服务器传输超文本到本地浏览器的传送协议http协议工作于客户端-服务端(browser/sever)B/S架构上。
浏览器作为http客户端通过url向http服务端即web服务器发送所有请求。web服务器根据接收到的请求后,向客户端发送响应信息。
http协议发展
HTTP(超文本传输协议)经历了多个版本的发展,每个版本都在性能、功能和安全性等方面有所改进。以下是对各个 HTTP 协议版本的全面介绍:
一、HTTP/0.9
诞生背景:
互联网发展初期,对网页的需求较为简单,主要是纯文本内容的传输。
主要特性:
-
仅支持 GET 请求,用于获取 HTML文档。
-
没有请求头和响应头,通信极为简洁。
-
只能传输纯文本内容,不支持多媒体资源。
使用场景:
早期简单的网页浏览,通常是一些静态的文本页面。
二、HTTP/1.0
诞生背景:
随着互联网的发展,人们对网页的内容和交互性有了更高的要求。
主要特性:
-
引入了请求头和响应头,包含了一些基本的元信息,如文档类型、日期等。
-
支持多种请求方法,如 GET、POST 和 HEAD。
-
每次请求都需要建立新的 TCP 连接,传输完成后立即断开,效率较低。
使用场景:
适用于一些简单的网页浏览和交互场景,但对于包含大量资源的网页,加载速度
较慢。
三、HTTP/1.1
诞生背景:
为了解决 HTTP/1.0 连接频繁建立和断开的问题,提高网页加载速度和性能。
主要特性:
-
持久连接(Keep-Alive):允许在一个 TCP 连接上发送多个请求和响应,减少连接建立的开销。
-
管道化(Pipelining):客户端可以在一个连接上连续发送多个清求,但服务器的响应顺序必须与请求顺序一致。
-
增加了更多的请求方法,如 PUT、DELETE、OPTIONS 等。
-
引入缓存控制机制,通过头部字段控制缓存的使用。
使用场景:
目前广泛应用于大多数网站和 Web 应用程序,是较为成熟和稳定的版本。
四、HTTP/2
诞生背景:
随着 Web应用的日益复杂,用户对网页加载速度和性能的要求越来越高,
HTTP/1_1 在一些方面存在局限性。
主要特性:
-
二进制分帧:将 HTTP消息分解为更小的帧进行传输,提高传输效率和灵活性。
-
多路复用:可在一个连接上同时处理多个请求和响应,无需按顺序发送,提高并发处理能力。
-
头部压缩:使用 HPACK算法对头部进行压缩,减少传输的数据量。
-
服务器推送:服务器可以主动向客户端推送资源,提高页面加载速度。
使用场景:
对于性能要求较高的现代 Web 应用,特别是需要快速加载大量资源的场景。
五、HTTP/3
诞生背景:
虽然 HTTP/2_在性能占有了很大提升,但它仍然基于 TCP 协议,而TCP 在一些情况下可能会出现连接建立时间长、丢包重传效率低等问题。
主要特性:
-
基于 QUIC协议,一种基于 UDP 的传输协议,具有更快的连接建立时间和更好的拥塞控制机制。
-
0-RTT 连接建立,在某些情况下可以在第一次连接时就开始发送数据,减少延迟。
-
连接迁移,即使网络环境发生变化,连接也可以保持。
-
箭向纠镨,在数据传输过程中前以检测和纠正一些错误,减少重传次数,提高传输效率。
使用场景:
对延迟敏感的应用,如在线游戏、实时视频通信等,以及在网络环境不稳定的情
况下,能够提供更好的性能和可靠性。
http协议请求方式
HTTP 协议有多种请求方法,以下是主要的几种:
一、GET
用途:
用于请求指定的资源。这是最常见的请求方法,当你在浏览器中输入网址并访问
时,通常会发送 GET 请求。
特点:
-
GET 请求可以被缓存,除非指定了特定的缓存控制头部。
-
CET请求的参数通常附加在 URL 中,这使得它们可以被轻松地分享和书签,但也可能会暴露敏感信息,并具有长度限制。
-
GET 请求是安全的,即它不会对服务器上的资源进行修改。
二、POST
用途:
通用向服务器提交数据,以创建或更新资源。例如,在提交表单、上传文件
等场景中经常使用。
特点:
- POST请求的数据通常放在请求体中,而不是 URL 中,因此可以传输更大量的数据,并且相对更安全,不容易暴露敏感信息。
- POST 请求一般不会被缓存。
三、PUT
用途:
用于更新服务器上的资源,PUT 请求通常会将整个资源进行替换。
特点:
PUT 请求是幂等的,即多次发送相同的 PUT 请求应该产生相同的结果。
四、DELETE
用途:
用于删除服务器上的指定资源。
特点:
DELETE 请求也是幂等的,多次删除同一个资源应该产生相同的结果,即资源被删
除后再次删除不会产生错误。
五、OPTIONS
用途:
用于获取服务器支持的 HTTP 请求方法和其他选项。
特点:
客户端可以通过 OPTIONS 请求了解服务器对特定资源的访问权限和支持的操作。
七、TRACE
用途:
用于诊断和调试,客户端可以发送 TRACE 请求来查看请求在网络中经过的路径。
特点:
通常在开发和测试环境中使用,以了解请求的处理过程。
这些请求方法为客户端与服务器之间的交互提供了丰富的方式,使得 Web 应用能够实现各种不同的功能。
http协议与url
https://www.baidu.com/web/579.html?replytocom=22#respond
协议://域名:端口/虚拟目录/文件名?参数#锚点
HTTP 协议状态码用于表示服务器对请求的处理结果。以下是常见的状态码分类介绍:
一、1xx 信息性状态码
100 Continue:
表示目前为止一切正常,客户端可以继续发送请求或者忽略这个响应。一般在客户端发送POST请求时,当请求体较大,服务器可能先返回这个状态码,表示可以继续发送请求体。
二、2xx 成功状态码
200 OK:
最常见的成功状态码,表示请求已成功,服务器已成功返回请求的数据。
201 created:
表示请求已成功,并在服务器上创建了新的资源。通常在 POST 请求用于创建资
源时返回。
三、3xx 重定向状态码
301 Moved Permanently:
表示请求的资源已被永久移动到新的 URL,客户端应使用新的 URL 进行后续请求。
302 Found:
表示请求的资源临时被移动到了另一个,URL,客户端应继续使用原有 URL 进行请求,但可以根据响应中的 Location 头部字段进行重定向。
304 Not Modified:
表示资源未被修改,客户端可以使用缓存的版本。通常在客户端发送条件请求(如带有If-Modified-Since或If-None-Match头部)时返回。
四、4xx 客户端错误状态码
400Bad Request:
表示客户端发送的请求有语法错误或无法被服务器理解。
401 Unauthorized:
表示请求需要用户认证,通常是因为客户端没有提供有效的身份验证凭证。
403 Forbidden:
表示服务器理解请求,但拒绝执行,通常是因为客户端没有足够的权限访问资源
404 Not Found:
表示服务器无法找到请求的资源。
405 Method Not Allowed
表示请求的方法不被允许,例如使用了不支持的 HTTP 方法请求某个资源。
五、5xx服务器错误状态码
500 Internal Server Error:
表示服务器在处理请求时发生了内部错误,通常是服务器端的程序出现了异常。
502 Bad Gateway:
表示作为网关或代理的服务器在尝试执行请求时,从上游服务器接收到无效的响
应。
503 Service Unavailable:
表示服务器暂时无法处理请求,通常是由于服务器过载或正在进行维护。
504 Gateway Timeout:
表示作网关或代理的服务器在等待上游服务器响应时超时。