网络基础1 -- 超文本协议

声明:
本文的学习内容来源于B站up主“泷羽sec”视频黑客网络基础之超文本协议与内外网划分的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。


1 HTTP协议简介

HTTP协议是Hypertext Transfer Protocol(也称为超文本传输协议)的缩写,是用于从万维网(World Wide Web)服务器传输超文本到本地浏览器的传输协议。

HTTP协议工作在客户端-服务器(Browser/Server)B/S架构上。

浏览器作为HTTP客户端通过URL向HTTP服务器即Web服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP(超文本传输协议)经历了多个版本的发展,每个版本都在性能、功能和安全性等方面有所改进。以下是对各个HTTP协议版本的全面介绍:

1.1 HTTP/0.9

诞生背景:互联网发展的初期,对网页的需求较为简单,主要是纯文本内容的传输。
主要特性

  • 仅支持GET请求,用于获取HTML文档。
  • 没有请求头和响应头,通信极为简洁。
  • 只能传输纯文本内容,不支持多媒体资源。
  • 使用场景:早期简单的网页浏览,通常是一些静态的文本页面。

1.2 HTTP/1.0

诞生背景:随着互联网的发展,人们对网页的内容和交互性有了更高的要求。
主要特性

  • 引入了请求头和响应头,包含了文件类型、日期等基本的元信息。
  • 支持多种请求方法,如GET、POST和HEAD。
  • 但每次请求都需要建立新的TCP连接,传输完成后即断开,效率较低。
    使用场景:适用于一些简单的网页浏览和交互场景,但对于包含大量资源的网页,加载速度较慢。

1.3 HTTP/1.1

诞生背景:为了解决HTTP/1.0连接频繁建立和断开的问题,提高网页加载速度和性能。
主要特性

  • 持久连接(Keep-Alive),允许在一个TCP连接上发送多个请求和响应,减少连接建立的开销。
  • 管道化(Pipelining),客户端可以在一个连接上连续发送多个请求,但服务器的响应顺序必须与请求顺序一致。
  • 增加了更多的请求方法,如PUT、DELETE、OPTIONS等。
  • 引入缓存控制机制,通过头部字段控制缓存的使用。
    使用场景:目前广泛应用于大多数网站和Web应用程序,是较为成熟和稳定的版本。

1.4 HTTP/2

诞生背景:随着Web应用的日益复杂,用户对网页加载速度和性能的要求越来越高,HTTP/1.1在一些方面存在局限性。
主要特性

  • 二进制分帧,将HTTP消息分解为更小的帧进行传输,提高传输效率和灵活性。
  • 多路复用,可在一个连接上同时处理多个请求和响应,无需按顺序发送,提高并发处理能力。
  • 头部压缩,使用HPACK算法对头部进行压缩,减少传输的数据量。
  • 服务器推送,服务器可以主动向客户端推送资源,提高页面加载速度。
    使用场景:对于性能要求较高的现代Web应用,特别是需要快速加载大量资源的场景。

1.5 HTTP/3

诞生背景:虽然HTTP/2在性能上有了很大提升,但它仍然基于TCP协议,而TCP在一些情况下可能会出现连接建立时间长、丢包重传效率低等问题。
主要特性

  • 基于QUIC协议,一种基于UDP的传输协议,具有更快的连接建立时间和更好的拥塞控制机制。
  • 0-RTT连接建立,在某些情况下可以在第一次连接时就开始发送数据,减少延迟。
  • 连接迁移,即使网络环境发生变化,连接也可以保持。
  • 前向纠错,在数据传输过程中可以检测和纠正一些错误,减少重传次数,提高传输效率。
    使用场景:对延迟敏感的应用,如在线游戏、实时视频通信等,以及在网络环境不稳定的情况下,能够提供更好的性能和可靠性。

2 HTTP协议请求方法

2.1 GET

用途:用于请求指定的资源。这是最常见的请求方法,当在浏览器中输入网址并访问时,通常会发送GET请求。
特点

  • GET请求可以被缓存,除非指定了特定的缓存控制头部。
  • GET请求的参数通常附加在URL中,这使得它们可以轻松地分享和书签,但也可能会暴露敏感信息,并且有长度限制。
  • GET请求是安全的,即它不会对服务器上的资源进行修改。

2.2 POST

用途:通常用于向服务器提交数据,以创建或更新资源。例如,在提交表单、上传文件等场景中经常使用。
特点

  • POST请求的数据通常放在请求体中,而不是URL中,因此可以传输更大量的数据,并且相对更安全,不容易暴露敏感信息。
  • POST请求一般不会被缓存。

2.3 PUT

用途:用于更新服务器上的资源,PUT请求通常会将整个资源进行替换。
特点

  • PUT请求是幂等的,即多次发送相同的PUT请求应该产生相同的结果。

2.4 DELETE

用途:用于删除服务器上的指定资源。
特点

  • DELETE请求也是幂等的,多次删除同一个资源应该产生相同的结果,即资源被删除后再次删除不会产生冲突或错误。

2.5 HEAD

用途:与GET请求类似,但只返回头部信息,不返回资源的主体内容。
特点

  • 可以用于检查资源的存在性、获取资源的元信息(如最后修改时间、内容长度等),而无需下载整个资源,从而节省带宽和时间。

2.6 OPTIONS

用途:用于获取服务器支持的HTTP请求方法和其他选项。
特点

  • 客户端可以通过OPTIONS请求了解服务器对特定资源的访问权限和支持的操作。

2.7 TRACE

用途:用于诊断和调试,客户端可以发送TRACE请求来查看请求在网络中经过的路径。
特点

  • 通常在开发和测试环境中使用,以了解请求的处理过程。

3 URL

https://www.baidu.com/web/579.html?replytocom=22#respond
协议://域名:端口/虚拟目录/文件名?参数#锚点

在URL中,锚点(也称为片段标识符fragment)是指#号后面的部分,例如在https://www.baidu.com/web/579.html?replytocom=22#respond中,锚点是respond
锚点用于在网页中定位到一个特定的位置或元素。当浏览器加载网页时,如果URL包含锚点,页面会自动滚动到具有对应id属性的元素上,以便用户快速访问该位置。
例如,在HTML代码中如果有<div id="respond">,则浏览器会跳转到这个元素的位置。锚点通常用于页面内部导航,比如跳转到某个段落或内容区。


4 HTTP协议状态码

HTTP协议状态码用于表示服务器对请求的处理结果。以下是常见的状态码分类介绍:

4.1 1xx 信息性状态码

  • 100 Continue:表示目前为止一切正常,客户端可以继续发送请求或忽略这个响应。一般在客户端发送POST请求时,当请求体较大,服务器可能先返回这个状态码,表示可以继续发送请求体。

4.2 2xx 成功状态码

  • 200 OK:最常见的成功状态码,表示请求已成功,服务器已成功返回请求的数据。
  • 201 Created:表示请求已成功,并在服务器上创建了新的资源。通常在POST请求用于创建资源时返回。
  • 204 No Content:表示请求已成功处理,但没有返回任何内容。通常用于PUT或DELETE请求成功后,表示资源已被更新或删除。

4.3 3xx 重定向状态码

  • 301 Moved Permanently:表示请求的资源已被永久移动到新的URL,客户端应使用新的URL进行后续请求。
  • 302 Found:表示请求的资源临时被移动到了另一个URL,客户端应继续使用原有URL进行请求,但可以根据响应中的Location头部字段进行重定向。
  • 304 Not Modified:表示资源未被修改,客户端可以使用缓存的版本。通常在客户端发送条件请求(如带有If-Modified-Since或If-None-Match头部)时返回。

4.4 4xx 客户端错误状态码

  • 400 Bad Request:表示客户端发送的请求有语法错误或无法被服务器理解。
  • 401 Unauthorized:表示请求需要用户认证,通常是因为客户端没有提供有效的身份验证凭证。
  • 403 Forbidden:表示服务器理解请求,但拒绝执行,通常是因为客户端没有足够的权限访问资源。
  • 404 Not Found:表示服务器无法找到请求的资源。
  • 405 Method Not Allowed:表示请求的方法不被允许,例如用了不支持的HTTP方法请求某个资源。

4.5 5xx 服务器错误状态码

  • 500 Internal Server Error:表示服务器在处理请求时发生了内部错误,通常是服务器端的程序出现了异常。
  • 502 Bad Gateway:表示作为网关或代理的服务器在尝试执行请求时,从上游服务器接收到无效的响应。
  • 503 Service Unavailable:表示服务器暂时无法处理请求,通常是由于服务器过载或正在进行维护。
  • 504 Gateway Timeout:表示作为网关或代理的服务器在等待上游服务器响应时超时。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值