[1. HTTP协议简介](#1. HTTP协议简介)
[1.1. 网络架构简单介绍](#1.1. 网络架构简单介绍)
[(1). C/S架构(Client/Server架构)](#(1). C/S架构(Client/Server架构))
[(2). B/S架构(Browser/Server)](#(2). B/S架构(Browser/Server))
[2. HTTP协议版本](#2. HTTP协议版本)
[2.1. HTTP/0.9 (1991年发布)](#2.1. HTTP/0.9 (1991年发布))
[2.2. HTTP/1.0 (1996年发布)](#2.2. HTTP/1.0 (1996年发布))
[2.3. HTTP/1.1 (1997年发布)](#2.3. HTTP/1.1 (1997年发布))
[2.4. HTTP/2 (2015年发布)](#2.4. HTTP/2 (2015年发布))
[2.5. HTTP/3 (2022年发布)](#2.5. HTTP/3 (2022年发布))
[2.6. 总结](#2.6. 总结)
[3. HTTP协议请求方法](#3. HTTP协议请求方法)
[3.1. GET 方法](#3.1. GET 方法)
[3.2. POST 方法](#3.2. POST 方法)
[3.3. PUT 方法](#3.3. PUT 方法)
[3.4. DELETE 方法](#3.4. DELETE 方法)
[3.5. HEAD 方法](#3.5. HEAD 方法)
[3.6. OPTIONS 方法](#3.6. OPTIONS 方法)
[3.7. PATCH 方法](#3.7. PATCH 方法)
[4. HTTP协议之url](#4. HTTP协议之url)
[5. HTTP协议之状态码](#5. HTTP协议之状态码)
[5.1. HTTP 状态码分类](#5.1. HTTP 状态码分类)
[5.2. 各类状态码详解](#5.2. 各类状态码详解)
[5.2.1 1xx:信息性状态码](#5.2.1 1xx:信息性状态码)
[5.2.2 2xx:成功状态码](#5.2.2 2xx:成功状态码)
[5.2.3 3xx:重定向状态码](#5.2.3 3xx:重定向状态码)
[5.2.4 4xx:客户端错误状态码](#5.2.4 4xx:客户端错误状态码)
[5.2.5 5xx:服务器错误状态码](#5.2.5 5xx:服务器错误状态码)
[5.3. 常见的 HTTP 状态码及其意义](#5.3. 常见的 HTTP 状态码及其意义)
[5.4. 总结](#5.4. 总结)
[1. 内网(局域网)](#1. 内网(局域网))
[1.1 内网的定义](#1.1 内网的定义)
[1.2 内网特点](#1.2 内网特点)
[1.3 内网的用途](#1.3 内网的用途)
[2. 外网(广域网)](#2. 外网(广域网))
[2.1 外网的定义](#2.1 外网的定义)
[2.2 外网的特点](#2.2 外网的特点)
[2.2 外网的主要用途](#2.2 外网的主要用途)
[1. 公网地址 (Public IP Address)](#1. 公网地址 (Public IP Address))
[1.1. 公网的定义](#1.1. 公网的定义)
[1.2. 公网的特点](#1.2. 公网的特点)
[1.3. 公网的用途](#1.3. 公网的用途)
[2. 私网地址 (Private IP Address)](#2. 私网地址 (Private IP Address))
[2.1. 私网的定义](#2.1. 私网的定义)
[2.2. 私网的特点](#2.2. 私网的特点)
[2.3. 私网地址范围](#2.3. 私网地址范围)
[2.4. 私网的用途](#2.4. 私网的用途)
[3. 对比](#3. 对比)
[5. 总结](#5. 总结)
学习视频泷羽sec:
一、超文本协议
1. HTTP协议简介
HTTP协议是Hypertext Transfer Protocol (也称为超文本传输协议)的缩写,是用于从万维网(www:world wide web)服务器传输超文本到本地浏览器的传送协议。 http协议工作于客户端-服务端(browser/sever)B/S架构上。 浏览器作为http客户端,通过url向http服务端即web服务器发送请求。web服务器根据接收到的请求后,向客户端(浏览器)发送响应信息。
1.1. 网络架构简单介绍
(1). C/S架构(Client/Server架构)
定义:C/S架构是指客户端和服务器之间通过网络进行通信的架构模型。在这种架构中,客户端负责用户界面的呈现和部分数据的处理,而服务器则负责存储、处理大量的数据和提供核心服务。
特点:
-
客户端:通常是一个专门的应用程序(例如:桌面软件),安装在用户的计算机上。
-
服务器:存储并管理数据、提供业务逻辑处理、响应客户端的请求。
-
通信方式:客户端通过网络与服务器进行交互,客户端发送请求,服务器返回处理结果。
(2). B/S架构(Browser/Server)
定义:B/S架构是指基于浏览器和服务器的架构模型。在这种架构中,客户端通过Web浏览器与服务器进行交互,不需要安装专门的客户端应用程序。所有的逻辑和数据处理都发生在服务器端,客户端只是一个显示界面和提交请求的工具。
特点:
-
客户端:通过浏览器访问应用程序,不需要安装额外的软件,用户只需通过浏览器输入URL即可。
-
服务器:处理所有的业务逻辑、数据存储和管理,生成网页内容并返回给客户端浏览器。
-
通信方式:客户端通过HTTP/HTTPS协议与服务器进行通信,通常是通过Web页面或Web应用来展示内容。
总结对比
特点 | C/S架构 | B/S架构 |
---|---|---|
客户端 | 安装专用客户端应用程序 | 通过浏览器访问 |
服务器 | 存储数据和处理请求 | 处理数据、生成网页并返回内容 |
依赖性 | 需要安装和维护客户端软件 | 不需要安装客户端,易于维护 |
更新方式 | 每个客户端需要独立更新 | 只需在服务器端更新 |
性能要求 | 客户端性能较高,可以处理复杂操作 | 主要依赖服务器,浏览器性能受限 |
适用场景 | 企业内部管理软件、桌面应用 | Web应用、在线服务、跨平台访问 |
-
C/S架构更适合需要高性能、复杂功能的应用,如桌面软件和企业级管理系统。
-
B/S架构则适合需要跨平台、便于维护和更新的Web应用,尤其是在互联网应用和移动端应用中应用广泛。
2. HTTP协议版本
HTTP(超文本传输协议)是用于客户端(通常是浏览器)与服务器之间传输信息的协议。随着互联网的发展,HTTP 协议经历了多个版本的演变,每个版本都为了解决前一个版本的限制,增强了性能、安全性以及功能的灵活性。
2.1. HTTP/0.9 (1991年发布)
HTTP/0.9 是由 Tim Berners-Lee 在 1991 年为万维网(WWW)创建的第一个版本。它非常简化,只支持基本的功能,目的是为了满足当时网络浏览和文档请求的需要。
-
特性:
-
非常简单的协议:HTTP/0.9 只有一个请求和响应格式。
-
无头部信息:请求和响应中没有 HTTP 头部,只传输 HTML 文本内容。
-
仅支持 GET 方法 :只支持一个请求方法,即
GET
,用来获取服务器上的资源。 -
无状态协议:每次请求都是独立的,服务器不记录任何历史状态。
-
-
功能:
-
仅用于请求网页文件(如 HTML 文件)。
-
没有复杂的 HTTP 头部或其他功能。
-
-
使用场景:
- 只用于简单的网页文件请求,没有任何动态内容或交互功能,适用于早期互联网的基本需求。
-
局限:
-
不支持其他 HTTP 方法(如 POST、PUT)。
-
没有状态管理(无法处理会话或身份验证)。
-
缺乏可扩展性,无法支持复杂的 Web 应用。
-
2.2. HTTP/1.0 (1996年发布)
HTTP/1.0 在 1996 年发布,提出了更加丰富和可扩展的协议,支持了更多的功能。它支持不同的请求方法(如 POST),并且增加了 HTTP 头部。
-
特性:
-
支持请求方法:除了 GET,还支持 POST、HEAD 等方法。
-
引入 HTTP 头部 :支持
User-Agent
、Content-Type
、Host
等头部,增加了请求和响应的灵活性。 -
支持多种资源类型:可以处理 HTML 文件、图片、音频等不同格式的内容。
-
短连接:每次请求和响应后,连接会关闭。每个请求必须建立新的 TCP 连接。
-
-
功能:
-
支持多种请求方法和状态码。
-
每次请求都需要建立和关闭一个新的连接,增加了延迟。
-
-
使用场景:
-
静态网站浏览。
-
简单的网页交互。
-
-
局限:
-
每次请求都需要重新建立连接,导致网络效率低下。
-
不支持持久连接,资源加载效率较差。
-
2.3. HTTP/1.1 (1997年发布)
HTTP/1.1 是在 HTTP/1.0 的基础上对性能和灵活性进行改进的版本。它于 1997 年发布,并成为 Web 上最常用的版本,直到 HTTP/2 出现。
-
特性:
-
持久连接(Keep-Alive):引入了持久连接(默认开启),可以复用同一连接进行多个请求和响应,减少了连接建立的开销。
-
管道化:支持管道化(Pipelining),允许客户端在发送一个请求的响应返回之前,发送多个请求,但并非所有服务器都完全支持。
-
更丰富的头部信息 :增加了诸如
Transfer-Encoding
、Cache-Control
等头部字段。 -
分块传输编码:支持分块传输(Chunked Transfer Encoding),使得服务器可以分块传输大文件。
-
虚拟主机 :通过
Host
头部支持在同一个服务器上托管多个域名。
-
-
功能:
-
通过保持连接减少了连接建立的开销,提高了性能。
-
支持更多的 HTTP 方法和头部。
-
允许客户端发起多个请求,而不需要等待每个请求的响应。
-
-
使用场景:
-
动态和静态网页、Web 应用、RESTful API。
-
适用于需要频繁请求和响应的互联网应用。
-
-
局限:
-
虽然支持管道化,但大多数浏览器和服务器并未充分支持,导致性能提升有限。
-
仍然存在头部冗余、并发请求有限等问题。
-
2.4. HTTP/2 (2015年发布)
HTTP/2 于 2015 年发布,目标是提高 HTTP 协议的效率,尤其是在 Web 页面的加载性能上。它基于 Google 的 SPDY 协议,并引入了许多新特性,旨在减少延迟和提高传输效率。
-
特性:
-
二进制协议:HTTP/2 使用二进制格式进行数据传输,而不是文本格式,这比文本协议更高效。
-
多路复用:通过单个连接同时处理多个请求和响应,解决了 HTTP/1.x 中的"队头阻塞"问题。
-
头部压缩:通过 HPACK 算法压缩 HTTP 头部,减少冗余数据的传输。
-
服务器推送:允许服务器主动推送资源到客户端,而不需要客户端明确请求,从而加速页面加载。
-
流控制:提供了流量控制机制,避免某一流量阻塞整个连接。
-
-
功能:
-
通过多路复用和头部压缩显著提高了性能。
-
支持服务器推送,减少了客户端请求的数量。
-
改进了浏览器与服务器之间的交互,使得网页加载更快。
-
-
使用场景:
-
高性能 Web 应用,尤其是需要加载大量资源的复杂页面。
-
移动端应用,减少延迟和流量消耗。
-
-
局限:
-
需要服务器和客户端都支持 HTTP/2。
-
服务器推送有时会导致不必要的数据传输,导致性能问题。
-
2.5. HTTP/3 (2022年发布)
HTTP/3 是基于 QUIC 协议(Quick UDP Internet Connections)设计的,它使用 UDP 而不是 TCP 来传输数据,旨在解决 TCP 中存在的一些问题,尤其是延迟和连接建立的开销。
-
特性:
-
基于 QUIC 协议:HTTP/3 使用 QUIC(基于 UDP 的协议)代替 TCP,QUIC 提供了更快速的连接建立和更低的延迟。
-
0-RTT 连接建立:使用 QUIC,HTTP/3 可以在零往返时间内建立连接,减少了连接延迟。
-
多路复用:QUIC 和 HTTP/3 的多路复用更加高效,避免了 HTTP/2 中的头部阻塞问题。
-
内建加密:QUIC 默认支持加密,提供比 HTTP/2 更强的安全性。
-
更加智能的流控制:QUIC 允许对每个流进行独立的流量控制,而不是整个连接。
-
支持连接迁移
-
QUIC 协议允许连接在不同的网络之间迁移而不需要重新建立连接。比如,用户从 Wi-Fi 切换到移动数据网络时,连接可以继续保持,而无需像 TCP 那样中断和重新建立。
-
这对于移动设备和多网络环境下的用户体验非常重要,能有效减少切换网络时的延迟。
-
-
-
功能:
-
更低的延迟和更高的连接效率。
-
更强的安全性,内建 TLS(传输层安全性)。
-
改进的多路复用,避免了 HTTP/2 中的一些性能瓶颈。
-
-
使用场景:
-
高延迟网络环境(如移动网络、远程地区)。
-
对实时性和高效传输有要求的 Web 应用。
-
安全性要求较高的应用。
-
-
局限:
-
目前的兼容性较差,并非所有浏览器和服务器都支持 HTTP/3。
-
依赖 QUIC 协议,可能在某些网络环境下受到限制(如某些防火墙和中间件的支持问题)。
-
2.6. 总结
-
HTTP/0.9:非常简化的版本,仅支持基本的 HTML 文件请求。
-
HTTP/1.0:引入了 HTTP 头部,支持多个请求方法,但每次请求都需要建立新的连接。
-
HTTP/1.1:引入持久连接和管道化,大大提升了性能,是 Web 的标准协议。
-
HTTP/2:基于 SPDY,使用二进制协议,支持多路复用和头部压缩,优化了 Web 页面加载速度。
-
HTTP/3:基于 QUIC,使用 UDP,提供更低的延迟和更好的多路复用能力,是现代 Web 应用的未来方向。
随着网络环境和 Web 应用需求的变化,HTTP 协议不断发展,尤其是在提升性能、降低延迟和增强安全性方面。
3. HTTP协议请求方法
HTTP(HyperText Transfer Protocol,超文本传输协议)是Web通信的基础协议,广泛用于客户端和服务器之间的数据传输。HTTP协议中定义了多种请求方法,每种方法有其独特的用途、特点及相关约束。以下是对常见HTTP请求方法的详细讲解,涵盖用途、特点、幂等性、安全性、数据传输限制等方面。
3.1. GET 方法
-
用途:用于从服务器获取资源。客户端通过GET请求从服务器请求指定的资源或数据,通常是请求网页内容、图片、JSON数据等。
-
特点:
-
幂等性:GET请求是幂等的。无论发送多少次相同的GET请求,结果都是相同的,不会引起任何副作用(例如修改数据)。
-
安全性:GET请求被认为是"安全的",即它仅用于获取数据,而不对服务器上的数据进行任何修改。理论上,GET请求不会产生副作用。
-
数据传输限制:GET请求的参数通过URL传递,长度有一定的限制,通常取决于浏览器和服务器,一般建议不要超过2048个字符(但这一限制并非标准规定,具体值因环境而异)。
-
缓存性:GET请求的响应可以被缓存,适合于静态资源。
-
-
常见应用:请求网页、获取JSON数据、图像或其他静态资源。
3.2. POST 方法
-
用途:用于向服务器提交数据。POST请求用于提交数据(例如表单数据、文件上传等),并可能导致服务器状态的改变(如数据库的修改)。
-
特点:
-
幂等性:POST请求不是幂等的。每次发送POST请求可能会对服务器产生不同的影响,尤其是数据提交、状态改变等操作。
-
安全性:POST请求被认为是"非安全的",因为它会修改服务器状态或进行副作用操作(例如提交表单数据、创建资源等)。
-
数据传输限制:POST请求的数据被放在请求体中,因此传输的数据量没有GET方法那么严格的限制,理论上可以传输大量数据,具体大小受服务器配置和客户端限制。
-
缓存性:POST请求通常不可缓存,因为其请求可能会改变资源的状态。
-
-
常见应用:提交表单、上传文件、创建新资源等。
3.3. PUT 方法
-
用途:用于向服务器提交数据,以更新资源。PUT请求会将请求体中的数据传递给服务器,通常用于更新现有资源或创建一个新的资源(如果资源不存在)。
-
特点:
-
幂等性:PUT请求是幂等的。即使多次发送相同的PUT请求,最终的资源状态也应该相同,不会出现副作用。一般情况下,PUT用于更新已有资源,重复请求不会改变资源的结果。
-
安全性:PUT请求是"非安全的",因为它会修改服务器上的资源。
-
数据传输限制:PUT请求的数据也放在请求体中,通常没有明显的大小限制,但仍然受服务器配置限制。适合较大数据的上传或更新。
-
缓存性:PUT请求通常不会被缓存,因为它通常会导致资源的更新。
-
-
常见应用:更新资源,如修改数据库记录,或创建一个新资源(如果目标资源不存在)。
3.4. DELETE 方法
-
用途:用于从服务器删除资源。DELETE请求指示服务器删除指定的资源。
-
特点:
-
幂等性:DELETE请求是幂等的。即使多次发送相同的DELETE请求,删除操作的结果应该是相同的,资源已经被删除后,再次请求不会产生不同的效果。
-
安全性:DELETE请求是"非安全的",因为它会修改服务器状态(删除资源)。
-
数据传输限制:DELETE请求没有明确的数据传输限制,但通常仅会传递标识要删除的资源的标识符。
-
缓存性:DELETE请求通常不会被缓存,因为它会导致资源的删除。
-
-
常见应用:删除数据库记录、删除文件等。
3.5. HEAD 方法
-
用途:与GET方法类似,但服务器仅返回响应头,而不返回响应体。通常用于获取资源的元数据,如检查资源是否存在、查看响应的类型等。
-
特点:
-
幂等性:HEAD请求是幂等的,执行多次与执行一次的效果相同。
-
安全性:HEAD请求是"安全的",它仅用于获取资源的元数据,不会修改任何服务器上的数据。
-
数据传输限制:HEAD请求不会返回响应体,因此数据传输仅限于响应头。
-
缓存性:HEAD请求的响应可以被缓存。
-
-
常见应用:检查某个资源是否存在、查看资源的大小或类型等。
3.6. OPTIONS 方法
-
用途:用于查询服务器支持哪些HTTP方法。OPTIONS请求用于了解服务器或资源的可操作性(即哪些HTTP方法是允许的),它通常用于跨域请求时的预检请求(CORS)。
-
特点:
-
幂等性:OPTIONS请求是幂等的。无论请求多少次,响应的内容应该相同。
-
安全性:OPTIONS请求是"安全的",不会对服务器资源产生任何副作用。
-
数据传输限制:OPTIONS请求通常只包含请求头信息,不携带请求体。
-
缓存性:OPTIONS请求的响应可以被缓存。
-
-
常见应用:跨域请求的预检,查询支持的HTTP方法。
3.7. PATCH 方法
-
用途:用于对服务器上的资源进行部分修改。与PUT不同,PATCH通常用于局部更新资源,而不是替换整个资源。
-
特点:
-
幂等性:PATCH请求可以是幂等的,但具体实现依赖于服务器的设计。某些情况可能会出现不同的结果,尤其是当应用程序层面逻辑复杂时。
-
安全性:PATCH请求是"非安全的",它可能会修改服务器上的资源。
-
数据传输限制:PATCH请求的数据通常较小,因为它只包含需要修改的部分,而不是整个资源。
-
缓存性:PATCH请求通常不可缓存。
-
-
常见应用:对资源进行局部更新,如修改一条记录的某些字段。
3.8.总结
方法 | 用途 | 幂等性 | 安全性 | 数据传输限制 | 缓存性 |
---|---|---|---|---|---|
GET | 获取资源 | 幂等 | 安全 | URL长度限制(2048字符) | 可缓存 |
POST | 提交数据,创建资源或操作 | 非幂等 | 非安全 | 无明显限制 | 不可缓存 |
PUT | 更新资源(或创建新资源) | 幂等 | 非安全 | 请求体限制 | 不可缓存 |
DELETE | 删除资源 | 幂等 | 非安全 | 请求体限制 | 不可缓存 |
HEAD | 获取资源的响应头 | 幂等 | 安全 | 无(没有响应体) | 可缓存 |
OPTIONS | 查询支持的HTTP方法 | 幂等 | 安全 | 无(没有响应体) | 可缓存 |
PATCH | 部分更新资源 | 可以幂等 | 非安全 | 请求体限制 | 不可缓存 |
理解这些HTTP请求方法及其特性有助于设计高效、可靠的Web应用,确保请求的正确性和安全性。
4. HTTP协议之url
在 HTTP 协议 中,URL(Uniform Resource Locator,统一资源定位符)是指用于标识互联网上资源的位置的字符串。URL 不仅是我们访问网页、文件、图片等资源的地址,还定义了如何与这些资源进行交互(例如,通过 HTTP 请求方法)。每一个 URL 都包含了访问资源所需的关键信息。
一个典型的 URL 由以下几个部分组成:
-
<协议>://<主机名>:<端口号>/<路径>?<查询参数>#<片段标识符>
-
示例 :https://www.example.com:443/products/list?category=electronics&page=2#top
-
组成部分介绍
-
协议(Scheme) : 用于指定访问资源所使用的协议,如
http
、https
、ftp
等。例如,http://
表示通过 HTTP 协议访问资源。 -
主机名(Host) : 即服务器的域名或 IP 地址,用于定位网络上的主机。例如,
www.example.com
或192.168.1.1
。 -
端口号(Port) : 可选部分,指定服务的端口号。HTTP 默认使用端口
80
,HTTPS 默认使用端口443
。如果端口号是默认值,通常可以省略。 -
路径(Path) : 指定资源在服务器上的位置,通常表示文件的目录和文件名。例如,
/index.html
或/images/logo.png
。 -
查询参数(Query) : 以
?
开始,用于向服务器传递参数。多个参数之间通过&
分隔。例如,?id=123&name=example
。 -
片段标识符(Fragment) : 以
#
开始,通常用于指定文档内的某个位置(如网页的锚点)。例如,#section2
表示文档中的某个部分。
-
5. HTTP协议之状态码
在 HTTP 协议 中,状态码(Status Code)是服务器在接收到客户端请求后,用来表示请求处理结果的数字代码。状态码帮助客户端(例如浏览器)理解请求是否成功,是否有错误,或者需要进一步的操作。
5.1. HTTP 状态码分类
HTTP 状态码分为五个类别,每个类别的状态码都有不同的含义。它们的第一位数字定义了状态码的类别:
-
1xx(信息性状态码):请求已接收,正在继续处理。
-
2xx(成功状态码):请求成功,并且服务器返回了所请求的资源。
-
3xx(重定向状态码):请求需要进一步的操作才能完成,通常是重定向。
-
4xx(客户端错误状态码):客户端请求有语法错误或请求无法完成。
-
5xx(服务器错误状态码):服务器无法完成合法的请求,通常是服务器端的问题。
5.2. 各类状态码详解
5.2.1 1xx:信息性状态码
这些状态码表示请求已被接收,服务器正在处理。通常,客户端不需要做任何事情,继续等待响应。
-
100 Continue:表示客户端可以继续发送请求的其余部分。
-
101 Switching Protocols:服务器正在切换协议,如 WebSocket 协议切换。
5.2.2 2xx:成功状态码
这些状态码表示请求已成功处理,服务器返回了客户端所请求的资源。
-
200 OK:请求成功,服务器返回请求的资源。
-
201 Created :请求成功并且服务器已创建了新的资源。通常用于
POST
请求。 -
202 Accepted:请求已被接受,但服务器尚未处理完成,通常用于异步任务。
-
204 No Content :请求成功,但没有返回内容。常用于
DELETE
请求或没有需要更新的响应。 -
205 Reset Content:请求成功,服务器要求客户端重置页面。
-
206 Partial Content:服务器成功处理部分请求,通常用于分块下载(例如,大文件下载)。
5.2.3 3xx:重定向状态码
这些状态码表示客户端需要进一步的操作,通常是自动重定向。
-
300 Multiple Choices:请求的资源有多个可用的选项,服务器返回一个列表供客户端选择。
-
301 Moved Permanently:请求的资源已被永久移动到新的 URL。客户端应使用新的 URL 继续请求。
-
302 Found(之前为 "Moved Temporarily"):请求的资源临时被移到另一个 URL,客户端应该继续使用原 URL 进行后续请求。
-
303 See Other :客户端应使用
GET
方法获取另一个 URI,通常用于表单提交后的重定向。 -
304 Not Modified:资源未修改,客户端可以使用缓存的版本。
-
305 Use Proxy:请求的资源必须通过代理来访问。
-
307 Temporary Redirect:请求的资源临时移动,客户端应该使用原 URL,但需要通过新的 URL 完成请求。
-
308 Permanent Redirect:请求的资源永久移动,客户端应使用新的 URL 完成请求。
5.2.4 4xx:客户端错误状态码
这些状态码表示客户端请求有错误,通常是由于请求的格式不正确或请求的资源不存在。
-
400 Bad Request:请求无效,服务器无法理解客户端发送的请求,通常是请求格式错误。
-
401 Unauthorized:请求未经授权,客户端需要提供身份验证凭据(如用户名和密码)。
-
402 Payment Required:暂时未使用,表示请求需要支付。
-
403 Forbidden:服务器拒绝执行请求,客户端没有足够的权限。
-
404 Not Found:请求的资源未找到。是最常见的错误状态码之一。
-
405 Method Not Allowed :请求使用了不允许的 HTTP 方法(例如,
GET
请求用于修改资源,POST
请求用于获取资源等)。 -
406 Not Acceptable:请求的资源无法提供符合客户端要求的内容类型。
-
407 Proxy Authentication Required:客户端需要通过代理服务器进行身份验证。
-
408 Request Timeout:客户端没有在服务器等待的时间内完成请求。
-
409 Conflict:请求的操作与服务器的当前状态发生冲突。
-
410 Gone:请求的资源已被永久删除。
-
411 Length Required :服务器要求请求中必须包含
Content-Length
头字段。 -
412 Precondition Failed:服务器未满足客户端在请求中指定的先决条件。
-
413 Payload Too Large:请求的主体过大,服务器无法处理。
-
414 URI Too Long:请求的 URI 长度超过服务器处理的能力。
-
415 Unsupported Media Type:请求的媒体类型不被服务器支持。
-
416 Range Not Satisfiable:请求的范围无效,文件无法满足请求的范围。
-
417 Expectation Failed :服务器无法满足
Expect
请求头字段的要求。
5.2.5 5xx:服务器错误状态码
这些状态码表示服务器内部出现错误,导致无法完成客户端请求。通常是服务器的问题。
-
500 Internal Server Error:服务器内部错误,无法处理请求。是最常见的服务器错误状态码。
-
501 Not Implemented:服务器不支持请求的方法,或者服务器无法完成请求。
-
502 Bad Gateway:服务器作为网关或代理时,从上游服务器接收到无效的响应。
-
503 Service Unavailable:服务器暂时无法处理请求,通常由于过载或维护中。
-
504 Gateway Timeout:服务器作为网关或代理时,未能及时从上游服务器接收到请求。
-
505 HTTP Version Not Supported:服务器不支持请求中使用的 HTTP 协议版本。
5.3. 常见的 HTTP 状态码及其意义
状态码 | 含义 | 说明 |
---|---|---|
200 | OK | 请求成功,服务器返回请求的资源。 |
301 | Moved Permanently | 资源永久移动,客户端应使用新的 URL。 |
302 | Found (临时重定向) | 资源临时移动,客户端应继续使用原 URL。 |
400 | Bad Request | 请求无效,服务器无法理解请求。 |
401 | Unauthorized | 请求未经授权,客户端需要身份验证。 |
404 | Not Found | 请求的资源未找到。 |
500 | Internal Server Error | 服务器内部错误,无法处理请求。 |
502 | Bad Gateway | 服务器作为网关或代理时,未能接收到有效响应。 |
503 | Service Unavailable | 服务器暂时不可用,通常是由于超载或维护。 |
5.4. 总结
HTTP 状态码是客户端与服务器之间通信的重要组成部分。通过状态码,客户端可以了解请求的处理结果,并根据不同的状态码采取相应的后续动作。理解状态码的意义有助于开发人员调试和优化网站或应用的请求与响应流程。
二、内外网的划分
内外网的划分是指根据网络环境、使用场景和安全需求,将计算机网络分为内部网络(内网)和外部网络(外网)。这种划分有助于实现更高的安全性、管理性和可控性,特别是在防止外部攻击、数据泄露、恶意软件等方面。
1. 内网(局域网)
1.1 内网的定义
内网是指在一个局部的地理范围内(如一个办公室、一栋建筑、一个校园或一个企业园区等),由单位自行构建、拥有和管理的计算机网络,通常覆盖一个建筑物、一个楼层或者一个小区。
内网可以有多个子网,但一般来说,内网内部的设备通过专用的路由器或交换机连接,并且使用私有IP地址进行通信。内网不直接与外部互联网连接,通常通过网关、路由器等设备与外网相连接。
1.2 内网特点
网的主要特点是局部性、相对较小的地理范围和较高的传输速度。
-
地理范围小:内网通常覆盖一个小范围的区域,如家庭、办公室、校园等,距离通常限制在几百米到几公里内。
-
高速传输:由于内网通常使用有线或Wi-Fi连接,并且网络设备较为集中,因此传输速率较快,通常可以达到千兆或更高(如1Gbps、10Gbps)。
-
高带宽、低延迟:内网内的设备之间的数据传输通常不会受到外部网络拥堵的影响,因此带宽相对充裕,延迟低。
-
私有IP地址:内网设备通常使用私有IP地址(如192.168.x.x、10.x.x.x等),这些IP地址无法直接访问互联网,需要通过路由器或防火墙进行地址转换(NAT)才能访问外部网络。
-
独立性与可控性:内网在管理上具有较高的自主性,管理员可以根据需要配置网络资源和权限,确保网络安全与资源高效利用。
-
安全性:由于内网通常与外部网络(互联网)隔离,内部数据相对更安全。但为了防止内部设备的泄密或攻击,通常还需要通过防火墙、加密等措施来进一步保护内网。
使用私有 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 地址,这些地址在互联网上不能直
接路由。
1.3 内网的用途
- 内部资源共享
内网最大的优势之一就是能够让网络中的所有设备方便、快速地共享资源。内部资源共享主要包括文件、打印机、数据库等设备和数据的共享。其具体用途和细节如下:
-
文件共享:企业或组织中的每一台计算机可以通过内网访问共享文件夹或文件服务器。通过设定权限,只有经过授权的用户才能访问特定的文件。这使得团队成员可以方便地访问和编辑共享文档,提高了工作效率。例如,团队成员可以通过网络访问财务报表、产品设计文档等共享资料,而不需要通过USB闪存盘等方式进行传输,避免了数据丢失或泄露的风险。
-
打印机共享:内网使得多台计算机可以共享一台打印机或其他外设。这意味着,企业可以通过内网将打印机连接到共享服务器上,所有员工可以在不同的工作站上直接进行打印操作,而不需要每台计算机都配备单独的打印机,从而节省了硬件成本和空间。打印权限可以根据用户的身份和需求进行管理,确保打印作业的安全。
-
资源集中管理:通过内网,可以将网络中的计算机和设备集中管理,比如统一安装软件、远程维护计算机等,提高了网络资源的利用率和管理的效率。例如,IT管理员可以通过内网管理工具远程安装和升级软件,而无需每台计算机都进行手动操作。
- 内部通信与协作
内网不仅支持资源共享,还极大地促进了团队内部的通信和协作。以下是内网在这一领域的常见用途:
-
即时通讯工具:在企业内部,员工之间的即时通讯可以通过内网工具(如企业微信、钉钉、Slack等)来实现。这些工具支持单对单聊天、群组聊天、语音视频通话等功能,方便员工随时沟通。由于通信通过内网进行,速度较快且安全性较高,不依赖于外部互联网服务。
-
电子邮件:企业通常会为员工配置专门的邮件服务器,员工通过内网发送和接收电子邮件。与外部邮箱不同,企业内网的邮件系统通常具备更强的安全性,能够避免垃圾邮件、病毒邮件的干扰,并能严格控制员工的邮件使用权限。邮件系统还可以与其他内部管理系统(如客户关系管理系统CRM、企业资源计划ERP等)集成,提升工作流程效率。
-
协同办公软件:在内网环境中,员工可以使用各种协同办公软件(如Office 365、Google Workspace、企业自建OA系统等)进行文件共享、在线编辑、任务分配和日程安排。这些工具支持团队成员同时处理一个文档,自动保存编辑历史,方便多人实时协作。
-
视频会议与远程协作:内网还常用于视频会议系统的搭建,尤其是对于需要跨部门、跨区域沟通的大型企业。通过内网,可以避免视频会议过程中的卡顿和安全隐患。员工可以通过内网进行高质量的音视频沟通,并与团队共享屏幕、共享文件。
- 数据存储与管理
内网在企业中的另一个重要用途是数据存储与管理,特别是对于敏感数据(如财务数据、客户信息等)的安全存储和访问控制。
-
集中数据存储:通过内网,企业可以将所有关键数据存储在一个集中式的服务器或数据中心内,而不是分散在各个个人计算机上。这样可以避免重要数据丢失或被非授权人员访问。例如,财务部门的财务报表、客户部门的客户数据库等重要信息可以集中存储在内网的服务器上,方便各相关人员按需访问。
-
备份与恢复:内网中的存储服务器通常配有定期的自动备份功能,确保重要数据不会因为硬件故障、意外删除等原因丢失。通过内网,企业可以定期将所有重要数据进行备份,并保存到不同的存储介质(如磁带、云存储等),保证数据恢复的高效性和可靠性。
-
数据访问控制与权限管理:通过内网,企业能够更精确地控制每个用户对不同数据的访问权限。例如,财务数据可能只允许财务部人员访问,而客户信息可能只有销售人员和客户服务人员能查看。内网中的权限管理系统可以为不同角色的用户设定不同级别的访问权限,确保敏感数据不被滥用或泄漏。
-
数据库管理:很多企业在内网环境中使用企业级数据库管理系统(如MySQL、Oracle、SQL Server等)来存储大量结构化数据。数据库管理员可以通过内网对数据库进行集中管理、维护和优化,提高数据的访问效率和安全性。
-
文件加密与审计:为了确保数据的安全性,内网中的文件通常会被加密存储和传输。此外,企业还可以对内网中的数据操作进行审计,记录每一次访问、修改、删除的操作,帮助管理员及时发现和应对潜在的安全风险。
- 内网对数据安全和合规性的支持
-
防火墙与网络隔离:内网的设计通常包含了对外部攻击的防护措施,企业会在内外网之间设置防火墙,确保只有授权的流量能够进入内网。此外,企业还可以通过网络隔离技术,将敏感数据存放在专用的子网中,防止外部攻击者获取内部机密。
-
多层身份验证:为了进一步加强数据安全,企业会要求员工在内网系统中使用多因素认证(如密码、动态验证码、指纹识别等)进行身份验证,确保只有合法用户才能访问敏感信息和系统。
-
合规要求:许多行业(如金融、医疗、教育等)对数据存储和管理有严格的合规要求,内网可以帮助企业更好地遵守这些规定。例如,在内网中存储和处理个人数据时,企业可以实现对数据存储周期、访问记录、删除权限等的全面管控,以符合GDPR、HIPAA等数据保护法规的要求。
2. 外网(广域网)
2.1 外网的定义
外网(广域网,WAN)是指覆盖范围广泛、连接地理上分散的多个局域网(LAN)或其他网络的计算机网络系统。它通常通过电信网络、光纤、卫星等通信媒介进行数据传输,能够实现远程数据交换、资源共享和远程通信等功能。外网的典型应用包括互联网、企业虚拟专用网(VPN)、跨区域数据传输等。
2.2 外网的特点
-
广泛覆盖:跨越大范围,连接多个局域网和设备。
-
高带宽和低延迟:需要支持大量数据传输和实时通信。
-
多种传输介质:包括光纤、电缆、卫星等。
-
路由技术:通过路由器和交换机来管理数据流。
-
安全性挑战:面临更多的安全威胁,需要防火墙、加密等保护措施。
-
可靠性和容错性:支持冗余和故障恢复,确保网络持续运行。
2.2 外网的主要用途
-
互联网访问:提供全球范围的网络服务,如浏览网站、社交媒体等。
-
远程办公:通过VPN等技术,支持远程员工安全访问公司资源。
-
跨地域资源共享:连接不同地区的办公室和数据中心,支持企业跨国运作。
-
云计算:支持全球数据中心间的互联和云服务。
-
视频会议和远程教育:支持跨地域的视频和音频通信。
-
电子商务和在线支付:促进全球在线购物和支付系统。
-
物联网应用:连接全球物联网设备进行数据交换和远程控制。
3.总结
内外网的划分是为了满足不同的网络需求和安全要求。内网提供了安全、高效的内部资源共享和办公环境,外网则为用户提供了丰富的信息和服务资源。在实际应用中,需要根据具体情况合理划分内外网,并采取相应的安全措施来保证网络安全。
三、公网和私网地址
1. 公网地址 (Public IP Address)
1.1. 公网的定义
公网地址是指可以在全球范围内通过互联网路由和访问的IP地址。它是由互联网服务提供商(ISP)分配的,确保每个公网地址在全球是唯一的。
1.2. 公网的特点
-
全球唯一性:每个公网IP地址在全球范围内是唯一的,因此它可以被任何设备从互联网上访问。
-
可路由性:公网地址通过路由器等网络设备在互联网上进行路由,可以与任何其他公网地址建立直接的通信连接。
-
受限数量:由于IPv4地址的有限性,公网IP地址的数量是有限的,尤其在IPv4时代,IPv4地址已接近耗尽。为此,IPv6引入了更大的地址空间。
-
高可达性:公网IP地址通常可以直接被互联网上的任何设备访问,但也可能受到防火墙等安全机制的限制。
1.3. 公网的用途
-
互联网访问:所有连接互联网的设备通常都会通过公网IP地址与外界通信,例如网站服务器、云服务等。
-
网站托管:托管网站的服务器通常会分配一个公网IP地址,允许全球的用户访问。
-
远程访问:使用公网IP地址可以进行远程桌面连接、VPN连接等,通过公网访问远程的设备或服务。
-
电子商务与在线服务:全球访问的服务,如在线购物平台、金融服务、社交平台等,通常使用公网地址。
2. 私网地址 (Private IP Address)
2.1. 私网的定义
私网地址是指在一个局部网络(例如家庭或公司内部)中使用的IP地址。这些地址不能直接通过互联网访问,仅在局域网内部有效。私网地址范围是由国际标准化组织(IETF)定义的,属于专用地址,不能在公网中路由。
2.2. 私网的特点
-
不可以路由到公网:私网IP地址不能直接与互联网设备通信,必须通过NAT(网络地址转换)等技术才能访问公网。
-
地址重复性:私网地址可以在不同的局域网中重复使用,因为它们不会在公网中冲突。
-
可扩展性强:私网地址范围非常广泛,可以支持大量设备的连接和管理。
-
安全性:由于私网地址不直接暴露在互联网中,它为内部网络提供了一定的安全保护,减少了外部攻击的风险。
2.3. 私网地址范围
根据RFC 1918标准,私网IP地址分为以下几个范围:
-
IPv4私网地址:
-
10.0.0.0 到 10.255.255.255(10.0.0.0/8)
-
172.16.0.0 到 172.31.255.255(172.16.0.0/12)
-
192.168.0.0 到 192.168.255.255(192.168.0.0/16)
-
-
IPv6私网地址 (被称为链路本地地址,通常以
fe80::/10
开头,适用于局域网中的设备通信)
2.4. 私网的用途
-
家庭和公司局域网:家庭网络、企业内部网络中的路由器通常会分配私网IP地址。设备如计算机、手机、打印机等会在该私网内通过NAT与公网通信。
-
NAT与端口转发:路由器通过NAT技术将私网IP地址映射为公网IP地址,从而允许私网内的设备访问互联网或与外部服务器进行通信。
-
隔离内部网络:私网地址用于将内部网络与互联网隔离,提高内部网络的安全性,防止外部攻击者直接访问内部设备。
-
多设备共享:通过私网地址,可以让多个设备共享一个公网IP地址进行互联网访问,减少公网地址的消耗。
3. 对比
特性 | 公网地址 (Public IP) | 私网地址 (Private IP) |
---|---|---|
定义 | 可直接在互联网中路由的IP地址 | 仅在局域网内有效的IP地址,不能直接访问公网 |
唯一性 | 全球唯一 | 在局域网内唯一,不同网络中的私网地址可以重复 |
路由性 | 可在互联网上进行路由,全球可达 | 不能直接在互联网上路由,必须通过NAT转换访问公网 |
用途 | 用于网站服务器、云服务、远程访问等 | 用于局域网中的设备,如家庭、企业网络的内部通信 |
数量 | 公网IP地址有限(特别是IPv4) | 私网IP地址数量巨大,适合大量设备连接 |
安全性 | 相对暴露于外部,容易成为攻击目标 | 提供内部网络隔离,增强了安全性 |
5. 总结
公网地址和私网地址在网络中都各有各的用途。公网地址用于在全球互联网上进行通信,私网地址则用于在组织机构内部本地网络。在实际应用中,两者互补,共同支撑着现代网络的运作,需要合理分配使用公网和私网地址,以满足不同需求。