当前位置: 首页 > article >正文

超文本协议和内外网的划分(详见B站泷羽sec)

HTTP协议

简介

HTTP(Hypertext Transfer Protocol)即超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议

HTTP协议工作与客户端-服务端(browser/sever)B/S架构上

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

一、HTTP/0.9

起源与背景:

HTTP 协议的最初版本,诞生于互联网发展的早期阶段。当时

网络资源相对简单,主要是为了满足获取超文本文档(HTML 文件)的基本

需求。主要是纯文本内容的传输。

主要特性:

仅支持GET请求 。它的功能仅仅是从服务器获取HTML 文件。

没有请求头和响应头,通信极为简洁

只能传输纯文本内容,不支持多媒体资源

使用场景:

早期简单的网页浏览,通常是一些静态的文本页面

二、HTTP/1.0

背景与改进需求:随着互联网的发展,网页内容变得更加丰富,除了

HTML 文件,还需要传输其他类型的文件,如图片、样式表等。同时,对于

请求方式也有了更多的要求。

主要改进点:

请求方法的增加 :除了 GET 方法外, 新增了 POST 和 HEAD 方法 。

POST 方法用于向服务器提交数据,比如用户在网页上填写表单并提交信

息时就会用到 POST。

HEAD 方法用于获取资源的头部信息,而不获取实际的内容。这样客户端可以在不下载整个资源的情况下,了解资源的一些基本属性,如文件大小、最后修改时间等。

MIME(Multipurpose Internet Mail Extensions)类型支持 :可以 传输多种

类型的文件 ,通过 Content - Type 头部字段来标识文件类型。例如,服务器返回一张 JPEG 图片时,会在响应头部添加 “Content - Type: image/jpeg”的信息,让客户端知道如何正确处理接收到的数据。

缓存机制的引入 :通过设置缓存相关的头部字段,如 Expires 和 Last -

Modified,客户端可以根据这些信息决定是否使用本地缓存的资源,减少不必要的网络请求,提高性能。不过,这个版本的缓存机制相对简单,还存在一些局限性。

局限性:

每次请求都需要建立新的TCP连接,传输完成后立即断开,效率极低

使用场景:

适用于一些简单的网页浏览和交互场景,但对于包含大量资源的网页,加载速度较慢。

三、HTTP/1.1

诞生背景:为了解决HTTP/1.0 每次请求都需要建立和断开 TCP 连接,提高网页加载速度和性能

主要特性:

持久连接(Keep - Alive) :这是 HTTP/1.1 的一个重要特性。 一个 TCP

连接可以用于多个 HTTP 请求和响应 ,减少了频繁建立和断开连接的开

销。例如,在一个网页中,当浏览器请求了 HTML 文件后,还需要请求多

个图片和脚本文件,如果没有持久连接,就需要为每个文件建立一个新的

TCP 连接;而有了持久连接,这些后续的请求可以通过同一个 TCP 连接

进行。

更多的请求方法 :新增了 PUT、DELETE、OPTIONS 等方法。

PUT 方法用于向服务器上传资源。

DELETE 方法用于删除服务器上的资源。

OPTIONS 方法用于获取服务器对于特定资源所支持的请求方法列表等。

这些方法使得 HTTP 协议在资源操作方面更加灵活和强大。

更完善的缓存机制 :引入了如 Cache - Control 头部字段,提供了更精细的缓存控制策略。例如,可以设置 “Cache - Control: no - cache” 来强制客户端每次都从服务器获取最新的资源,或者设置 “Cache - Control: max -age = 3600” 表示资源在本地缓存可以有效使用 1 小时。

管道化:客户端可以在一个连接上连续发送多个请求,但服务器的相应顺序必须与请求顺序一致

使用场景:

目前广泛应用于大多数网站和web应用程序,是较为成熟和稳定的版本

四、HTTP/2

优化背景:虽然 HTTP/1.1 的持久连接和缓存机制等改进在一定程度上提高了性能,但随着网页内容越来越复杂、用户对性能要求越来越高,HTTP/1.1的一些固有问题,如文本格式传输效率低、队头阻塞(在一个 TCP 连接中,前一个请求响应慢会影响后面请求的发送)等问题凸显出来。

主要特征:

二进制分帧层(Binary Framing Layer) :HTTP/2 采用 二进制格式传输数据 ,而不是 HTTP/1.x 的文本格式。这使得数据解析更高效,同时也更容易实现多路复用等高级特性。例如,在二进制格式下,数据被分割成更小的帧,这些帧可以更灵活地组合和传输。

多路复用(Multiplexing) :允许在一个 TCP 连接上同时发送多个请求和响应,并且这些请求和响应的数据流是相互独立的,无需按顺序发送,提高并发处理能力。

头部压缩(Header Compression) :使用 HPACK 算法对 HTTP 头部进行压缩。由于 HTTP 头部在每次请求和响应中都会出现,而且有时头部信息比较冗长,通过压缩可以大大减少头部数据的传输量,提高传输效率。

服务器推送:服务器可以主动向客户端推送资源,提高页面的加载速度

使用场景:

对于性能要求较高的现代web应用,特别是需要快速加载大量资源的场景

五、HTTP/3

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

主要特征:

基于 QUIC 协议 :HTTP/3 是基于 QUIC 协议的,QUIC 是一种基于 UDP的传输协议。它结合了 UDP 的快速连接建立(不需要像 TCP 那样进行三次握手)和 TCP 的可靠性(通过使用序列号、确认号等机制来保证数据的可靠传输)。具有更快的连接建立时间和更好的拥塞控制机制。

进一步优化性能 :继承了 HTTP/2 的一些优秀特性,如多路复用、头部压缩等,同时在连接迁移等方面有更好的表现。如果用户的网络从 Wi - Fi切换到移动数据,HTTP/3 基于 QUIC 的连接可以更平滑地进行迁移,减少连接中断的影响。

0-RTT连接的建立,在某些情况下可以在第一次连接时就开始发送数据,减少延迟。

连接迁移:即使网络环境发生变化,连接也可以保持。

前向纠错:在数据传输过程中可以检测和纠正一些错误,减少重传次数,提高传输效率

使用场景:

对延迟敏感的应用,如在线游戏、实时视频通信等,以及在网络环境不稳定的情况下,能够提供更好的性能和可靠性。

HTTP协议请求方法:

一、GET

用途:GET 是最常用的请求方法之一。它用于从服务器获取资源,并且在请求过程中,请求的参数会附加在 URL 后面。例如,当在浏览器中访问一个搜索页面,如 “ https://www.example.com/search?q = keyword”,其中 “q= keyword” 就是 GET 请求的参数,用于向服务器表明要搜索的关键词是“keyword”。

特点:

幂等性 :多次执行相同的 GET 请求,只要服务器上的资源没有改变,结果是相同的。比如,多次查询某篇文章的内容,只要文章没有更新,每次获取到的内容都是一样的。

安全性 :GET 请求被认为是 “安全” 的,因为它主要是用于获取资源,不会对服务器上的资源进行修改。不过,这并不意味着 GET 请求完全没有风险,例如,如果在 URL 中暴露了敏感信息(如用户密码等),就可能会导致安全问题。

数据传输限制 :由于请求参数是附加在 URL 后面的,受到 URL 长度的限制。不同的浏览器和服务器对 URL 长度的限制不同,但一般来说,过长的 URL 可能会导致请求失败。所以,GET 请求适用于传输少量的数据

GET请求可以被缓存,除非指定了特定的缓存控制头部

请求参数包含在URL中,以查询字符串的形式出现。

由于参数在URL中可见,不适合传递敏感信息。

二、POST

用途:POST 方法主要用于向服务器提交数据,通常用于表单提交。例如,当用户在一个注册页面填写用户名、密码等信息后,点击提交按钮,浏览器就会使用 POST 方法将这些数据发送到服务器

特点:

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

POST请求一般不会被缓存

三、PUT

用途:

PUT 方法用于向服务器上传资源或者更新服务器上已有的资源。例如,在一个文件存储系统中,客户端可以使用 PUT 方法将一个本地文件上传到服务器指定的位置。如果服务器上已经存在同名的文件,PUT 方法可能会覆盖它,具体的行为取决于服务器的配置。

特点:

请求参数可以包含在URL中,也可以包含在请求体中。

是一种幂等的方法,即多次相同的请求会产生相同的效果(资源被删除)。

四、DELETE

用途:

用于删除服务器上的指定资源。

特点:

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

五、HEAD

用途:

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

特点:

类似于GET请求,但只返回响应头信息,不返回响应体。

用于检查某个资源是否存在,或者获取资源的元数据(如最后修改时间、内容长度等),而无需下载整个资源,从而节省带宽和时间。

六、OPTIONS

 用途:

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

特点:

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

幂等性:多次发送相同的 OPTIONS 请求,只要服务器的配置没有改变,结果是相同的

七、TRACE

用途:回显服务器收到的请求,主要用于测试或诊断。客户端可以发送TRACE请求来查看请求在网络中经过的路径。

特点:

请求参数包含在请求体中。

服务器会将接收到的请求原样返回给客户端,用于检测请求在传输过程中是否被篡改。

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

HTTP协议之url

https://www.baidu.com/web/579.html?replytocom=22#respond

协议://域名:端口/虚拟目录/文件名?参数#锚点

虚拟目录部分:指示服务器查找特定目录下的资源

锚点:它允许开发者创建页面内的导航链接,使用户能够方便地跳转到页面中的特定位置

HTTP协议之状态码

一.1XX(信息性状态码)

100 Continue :表示目前一切正常,客户端发送请求体前询问,服务器同意接收时返回此码,告知客户端可继续发送请求体。

101 Switching Protocols :用于客户端请求升级协议,服务器同意时返回,表

明协议切换成功

二、2XX(成功状态码)

200 OK:表示请求成功,服务器成功处理并返回请求内容。

201 Created:请求成功且服务器创建新资源后返回,常配合 POST 或 PUT 请求。

202 Accepted:服务器已接收请求,但还没完成处理,请求在队列中等待。

203 Non - Authoritative Information:服务器处理成功,但信息可能来自中间缓存或代理服务器。

204 No Content:请求成功处理,但无内容返回,适用于操作成功但无需返回数据的场景。

205 Reset Content:请求成功处理,要求客户端重置文档视图,用于表单提交后。

206 Partial Content:服务器成功处理部分请求,用于范围请求,返回部分资源内容。

三、3XX(重定向状态码)

300 Multiple Choices:请求的资源有多种表示形式,服务器返回选择列表让客户端选择。

301 Moved Permanently:请求的资源永久移动到新位置,Location 头部指定新位置。

302 Found(302 Moved Temporarily):资源临时移动到新位置,引导客户端临时重定向

303 See Other:服务器要求客户端用 GET 方法访问另一个资源,常用于 POST 请求后引导。

304 Not Modified:客户端请求的资源未被修改,可使用本地缓存资源。

305 Use Proxy:请求的资源需要通过指定代理服务器访问,现在很少使用。

307 Temporary Redirect:和 302 类似,资源临时移动,要求临时重定向,且请求方法不变。

308 Permanent Redirect:和 301 类似,资源永久移动,且请求方法不变。

四、4XX(客户端错误状态码)

400 Bad Request:客户端请求有语法错误或无法被理解。

401 Unauthorized:请求资源需要用户认证,但客户端没提供或认证无效。

402 Payment Required:保留状态码,很少使用。

403 Forbidden:服务器理解请求,但拒绝提供服务,可能是权限不足。

404 Not Found:请求的资源在服务器上不存在。

405 Method Not Allowed:服务器理解请求,但不允许使用客户端请求的方法。

406 Not Acceptable:服务器无法提供符合客户端期望(通过 “Accept” 字段)的响应内容。

407 Proxy Authentication Required:和 401 类似,用于代理服务器认证。

408 Request Time - out:客户端请求在服务器规定时间内没完成。

409 Conflict:客户端请求与服务器现有资源产生冲突,常见于 PUT 或 POST 请求。

410 Gone:请求的资源曾存在,现已永久删除。

411 Length Required:服务器要求提供 Content - Length 头部指定请求体长度,客户端没提供。

412 Precondition Failed:客户端请求中设置的前提条件没满足。

413 Request Entity Too Large:客户端发送的请求体太大,超过服务器接收限度。

414 Request - URI Too Long:客户端请求的 URL 太长,超过服务器处理限度。

415 Unsupported Media Type:客户端提供的媒体类型不被服务器支持。

416 Requested Range Not Satisfiable:客户端范围请求指定的范围无法满足。

417 Expectation Failed:客户端请求中设置的期望没被服务器满足。

五、5XX(服务器错误状态码)

500 Internal Server Error:服务器处理请求时遇到内部错误,无法完成请求。

501 Not Implemented:服务器不支持客户端请求的功能。

502 Bad Gateway:服务器作为网关或代理,从上游服务器获取响应时出错。

503 Service Unavailable:服务器暂时无法处理请求,可能是维护或过载。

504 Gateway Time - out:服务器作为网关或代理,向上游服务器请求时超时。

505 Version Not Supported:服务器不支持客户端请求的 HTTP 协议版本。

内外网的划分

划分依据:网络的访问范围和安全性

内网(局域网)

1. 定义

内网是指在一个局部的地理范围内(如一个办公室、一栋建筑、一个校园或一个企业园区等),由单位自行构建、拥有和管理的计算机网络。它使用私有 IP 地址,与外部互联网通过防火墙等安全设备进行隔离。

2. 特点

安全性高 :通过防火墙等安全措施限制外部访问,能够有效保护内部数据和

资源免受外部网络攻击。

传输速度快 :一般基于高速的局域网技术,如以太网,内部数据传输速率较

高。

可控性强 :网络的拓扑结构、设备接入和资源分配等都可以由内部管理员根

据自身需求进行严格控制,资源共享。

使用私有 IP 地址 :如 10.0.0.0 - 10.255.255.255、172.16.0.0 - 172.31.255.255、

192.168.0.0 - 192.168.255.255 等范围的 IP 地址,这些地址在互联网上不能直

接路由。

3. 用途

内部资源共享 :方便单位内部的用户共享文件、打印机等设备和数据。

内部通信协作 :用于员工之间的即时通讯、电子邮件传递、协同办公软件等

内部通信和协作工具的运行。

数据存储与管理 :为企业提供安全的内部数据存储中心,存储和管理如财务

数据、客户信息等敏感信息。

外网(广域网)

1. 定义

外网是相对于内网而言的,通常是指互联网,它是全球性的计算机网络系

统,连接了世界各地的网络设备,使用公共 IP 地址进行通信。

2. 特点

开放性 :可以被全球范围内的用户访问,没有访问限制(在合法合规的前提

下)。

覆盖范围广 :几乎覆盖全球各个角落,能够实现全球信息共享和通信。

使用公共 IP 地址 :IP 地址由互联网服务提供商(ISP)分配,在互联网上可

以被路由。

动态性 :公共 IP 地址可能会因为各种原因(如网络配置更新、ISP 策略等)

而动态变化。

3. 用途

信息获取与传播 :用于访问各种网站、新闻媒体、学术资源等来获取信息,

也可以发布信息供全球用户浏览。

通信与社交 :支持电子邮件、即时通讯、社交网络等多种通信和社交方式,

方便人们跨越地域进行交流。

电子商务 :实现在线购物、在线支付等商业活动,促进全球经济交易。

总结:

内外网的划分是为了满足不同的网络需求和安全要求。内网提供了安全、高效的

内部资源共享和办公环境,外网则为用户提供了丰富的信息和服务资源。在实际

应用中,需要根据具体情况合理划分内外网,并采取相应的安全措施来保证网络

安全

公网和私网地址

公网地址

1.定义

公网地址即公共网络地址,是在互联网上全球唯一标识设备的 IP 地址,由互

联网服务提供商(ISP)分配,可被互联网上的其他设备直接访问。

2. 特点

全球唯一性 :每个公网地址在互联网范围内独一无二,用于区分不同的网络

节点。

可路由性 :能够在互联网的路由器之间进行路由转发,使信息可以在全球互

联网中传递。

公共性 :可被任何接入互联网的设备访问,没有访问限制(在符合网络规则

和法律法规的前提下)。

有限性 :由于IPv4地址资源有限,公网地址的数量也是有限的,公网地址资

源日益紧张

3. 用途

服务器访问 :用于服务器(如 Web 服务器、邮件服务器等),使全球用户能

够访问服务器提供的服务。

设备远程访问 :允许用户从互联网的任何位置远程访问和控制设备,如远程

办公场景下访问公司内部的计算机。

互联网通信 :作为设备在互联网上通信的身份标识,确保数据准确地发送到

目标设备。

私网地址

1. 定义

私网地址也称本地IP地址,是在专用网络(如企业内部网、家庭网络等)中

使用的 IP 地址,这些地址不会在互联网上直接进行路由。

2. 特点

内部使用 :仅限于在一个特定的私有网络内部使用,不能直接用于与互联网

通信。

可复用性 :不同的私有网络可以重复使用相同的私网地址范围,因为它们不

会在互联网中产生冲突。

安全性高 :一定程度上隔离了内部网络与外部互联网,增强内部网络安全

性。

3. 用途

内部网络 :用于组建企业、学校或家庭的内部局域网,实现内部设备之间的

通信和资源共享。

保护隐私 :在内部网络通信时,避免内部设备的真实 IP 地址暴露在互联网

上,从而保护隐私。

常见的私网地址范围包括:

10.0.0.0 - 10.255.255.255

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255

总结

公网地址和私网地址在网络中都各有各的用途。公网地址用于在全球互联网上进

行通信,私网地址则用于在组织机构内部本地网络。在实际应用中,需要合理分

配使用公网和私网地址,以满足不同需求


http://www.kler.cn/a/393074.html

相关文章:

  • Thread类及常见方法
  • LeetCode【0035】搜索插入位置
  • 文件夹被占用了无法删除怎么办?强制粉碎文件夹你可以这样操作
  • 每日一练:二分查找-搜索插入位置
  • Linux设置socks代理
  • golang分布式缓存项目 Day1 LRU 缓存淘汰策略
  • PostCSS 介绍
  • fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧
  • 用户管理【MySQL】
  • 社区物资交易互助平台(程序+数据库+报告)
  • opencv(c++)图像的灰度转换
  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • 推荐一款好用的postman替代工具2024
  • php 字符串与变量
  • web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
  • 第四十五章 Vue之Vuex模块化创建(module)
  • 十大经典排序算法-希尔排序与归并排序
  • Ubuntu 安装和使用 1Panel
  • 电工电子原理笔记
  • 应用程序部署(IIS的相关使用,sql server的相关使用)
  • Java项目实战II基于微信阅读网站小程序的设计与实现(开发文档+数据库+源码)
  • 【VLANPWN】一款针对VLAN的安全研究和渗透测试工具
  • 谷歌邮箱域名设置指南:轻松管理电子邮件!
  • 使用JS实现文件流转换excel?
  • 【深度解析】CSS工程化全攻略(1)
  • AUTOSAR CP Ethernet State Manager(EthSM)规范的主要功能以及工作原理导读