超文本协议和内外网的划分(详见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
总结
公网地址和私网地址在网络中都各有各的用途。公网地址用于在全球互联网上进
行通信,私网地址则用于在组织机构内部本地网络。在实际应用中,需要合理分
配使用公网和私网地址,以满足不同需求