渗透测试-网络基础(1)
声明
学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。
公众号:泷羽sec
b站:泷羽sec
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
目录
- HTTP协议
- 简介
- 历史
- HTTP协议请求方式
- HTTP协议之URL
- HTTP协议状态码
- 内外网的划分
- 内网(局域网)
- 外网(广域网)
- 总结
- 公网和私网地址
- 公网地址
- 私网地址
- 总结
HTTP协议
简介
-
HTTP(Hypertext Transfer Protocol)即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。
-
HTTP协议工作与客户端-服务端(browser/sever)B/S架构上
-
浏览器作为http客户端通过url向http服务端即web服务器发送所有请求。web服务器根据接收到的请求后,向客户端发送响应信息
历史
-
HTTP/0.9
- 起源与背景:HTTP 协议的最初版本,诞生于互联网发展的早期阶段。当时网络资源相对简单,主要是为了满足获取超文本文档(HTML 文件)的基本需求。
- 功能特点:
- 只有一个请求方法,即 GET 方法。它的功能仅仅是从服务器获取 HTML 文件。例如,客户端发送一个类似 “GET /index.html” 的请求,服务器就会返回对应的 HTML 页面。
- 响应内容仅包含 HTML 文档本身,没有头部信息(如 Content - Type 等)。这是因为当时的主要用途很单一,就是传输 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,客户端可以根据这些信息决定是否使用本地缓存的资源,减少不必要的网络请求,提高性能。不过,这个版本的缓存机制相对简单,还存在一些局限性。
-
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 小时。
-
HTTP/2
- 优化背景:虽然 HTTP/1.1 的持久连接和缓存机制等改进在一定程度上提高了性能,但随着网页内容越来越复杂、用户对性能要求越来越高,HTTP/1.1 的一些固有问题,如文本格式传输效率低、队头阻塞(在一个 TCP 连接中,前一个请求响应慢会影响后面请求的发送)等问题凸显出来。
- 主要创新点:
- 二进制分帧层(Binary Framing Layer):HTTP/2 采用二进制格式传输数据,而不是 HTTP/1.x 的文本格式。这使得数据解析更高效,同时也更容易实现多路复用等高级特性。例如,在二进制格式下,数据被分割成更小的帧,这些帧可以更灵活地组合和传输。
- 多路复用(Multiplexing):允许在一个 TCP 连接上同时发送多个请求和响应,并且这些请求和响应的数据流是相互独立的,不会出现 HTTP/1.1 中的队头阻塞问题。就好比在一条高速公路上,可以同时有多辆车(请求和响应)并行行驶,而不会因为前面的车(某个请求或响应)慢而影响后面的车。
- 头部压缩(Header Compression):使用 HPACK 算法对 HTTP 头部进行压缩。由于 HTTP 头部在每次请求和响应中都会出现,而且有时头部信息比较冗长,通过压缩可以大大减少头部数据的传输量,提高传输效率。
- HTTP/3
- 变革的原因:HTTP/2 虽然在性能上有了很大提升,但它仍然是基于 TCP 协议的。TCP 协议在一些场景下存在性能瓶颈,比如队头阻塞问题在 TCP 层仍然可能出现(尽管 HTTP/2 在应用层解决了部分队头阻塞),并且 TCP 建立连接的过程(三次握手)相对复杂。
- 核心变化:
- 基于 QUIC 协议:HTTP/3 是基于 QUIC 协议的,QUIC 是一种基于 UDP 的传输协议。它结合了 UDP 的快速连接建立(不需要像 TCP 那样进行三次握手)和 TCP 的可靠性(通过使用序列号、确认号等机制来保证数据的可靠传输)。例如,在网络环境较差或者需要快速建立连接的场景下,QUIC 协议可以更快地开始数据传输。
- 进一步优化性能:继承了 HTTP/2 的一些优秀特性,如多路复用、头部压缩等,同时在连接迁移等方面有更好的表现。如果用户的网络从 Wi - Fi 切换到移动数据,HTTP/3 基于 QUIC 的连接可以更平滑地进行迁移,减少连接中断的影响。
HTTP协议请求方式
-
GET 方法
- 用途:
- 资源检索:广泛用于从服务器获取各种类型的资源,如 HTML 页面、图像、脚本文件、样式表等。例如,当浏览器加载一个网页时,会使用多个 GET 请求来获取网页的 HTML 文件以及引用的 CSS 文件、JavaScript 文件和图片等资源。
- 数据查询:用于查询服务器上的数据,如在搜索引擎中,通过 GET 请求将搜索关键词发送给服务器,服务器返回相关的搜索结果。例如,在百度搜索中,搜索关键词通过 URL 中的参数传递,像 “https://www.baidu.com/s?wd = HTTP 协议”,“wd” 后的 “HTTP 协议” 就是查询的关键词。
- 特点:
- 数据可见性:请求参数直接附加在 URL 之后,这使得参数在浏览器地址栏中可见。例如,在一个商品列表页面,通过 GET 请求来筛选商品,如 “https://www.example - shop.com/products?category = electronics&price - range = 100 - 200”,用户可以很容易看到筛选的类别(electronics)和价格范围(100 - 200)等参数。
- 缓存友好性:由于 GET 请求主要是获取资源,而且其请求结果通常是可缓存的。浏览器和中间代理服务器可以根据服务器返回的缓存控制信息(如 Cache - Control 和 Expires 头)缓存 GET 请求的结果,从而提高性能。例如,一个不经常更新的公司介绍页面,通过 GET 请求获取后,在缓存有效期内,再次访问时可以直接从缓存中获取,减少网络请求。
- 幂等性和安全性:它是幂等的,多次请求相同的资源只要资源未变,结果相同;并且一般被认为是安全的,因为它主要是获取资源而不会改变服务器的状态,但如前面所说,若 URL 包含敏感信息(如密码等)则存在安全风险。
- 用途:
-
POST 方法
- 用途:
- 数据提交:用于向服务器提交大量或敏感的数据,如用户注册表单、登录表单、评论提交等。例如,在用户注册时,将用户名、密码、电子邮件等信息通过 POST 请求发送到服务器的注册处理程序。
- 复杂数据操作:在需要对服务器进行复杂的数据操作,且这些操作可能会改变服务器状态时使用。比如,在一个在线购物系统中,用户下单后,订单信息(包括商品详情、购买数量、收货地址等)通过 POST 请求发送给服务器,服务器根据这些信息创建新的订单记录。
- 特点:
- 数据传输位置:数据是放在请求体中,而不是像 GET 请求那样附加在 URL 上。这使得 POST 可以传输大量的数据,并且数据内容在 URL 中不可见,保护了数据的隐私性。例如,在上传一份大型文档时,文档内容通过 POST 请求体传输,避免了数据在 URL 中暴露。
- 非幂等性:POST 请求不是幂等的,因为每次请求都可能会对服务器状态产生新的改变。如每次提交订单都会产生一个新的订单记录,多次提交相同的订单信息会创建多个订单。
- 安全性要求高:由于 POST 用于数据提交,服务器需要对其进行严格的安全验证,包括数据格式验证、防止 SQL 注入(在与数据库交互的场景下)、防止跨站脚本攻击(XSS)等。
- 用途:
-
PUT 方法
- 用途:
- 资源更新与上传:主要用于更新服务器上已有的资源,或者上传新的资源到服务器指定位置。例如,在一个云存储服务中,用户可以使用 PUT 方法上传一个新的文件,或者更新一个已存储文件的内容。
- 资源创建(在某些场景下):在一些允许通过覆盖方式创建资源的系统中,PUT 可以用于创建新资源。比如,在一个简单的键 - 值存储系统中,如果 PUT 一个不存在的键 - 值对,系统可以将其作为新资源创建。
- 特点:
- 幂等性:PUT 是幂等的,对同一个资源进行多次相同的 PUT 操作,只要每次提交的内容相同,最终资源的状态相同。例如,多次更新一个用户的头像,只要每次提交的头像文件相同,用户最终的头像状态是一样的。
- 资源覆盖风险:如果用于更新资源,存在覆盖已有资源的可能。在一些系统中,需要谨慎处理 PUT 操作,防止误覆盖重要的数据。例如,在文件存储系统中,PUT 操作可能会覆盖同名文件,所以可能需要用户确认或者有版本控制机制。
- 用途:
-
DELETE 方法
- 用途:
- 资源删除:用于删除服务器上指定的资源,如删除文件、删除用户记录、删除数据库中的记录等。例如,在一个内容管理系统中,管理员可以使用 DELETE 方法删除不再需要的文章或媒体文件。
- 特点:
- 幂等性:是幂等的,多次执行 DELETE 操作删除同一个已经删除的资源,不会产生额外的影响。例如,第一次删除一个文件后,后续再次执行 DELETE 操作针对该文件,服务器会知道文件已经不存在,不会产生错误或其他不良后果。
- 权限敏感:DELETE 操作通常需要严格的权限控制,因为它会永久性地删除资源。只有具有适当权限的用户或系统组件才能执行 DELETE 操作,以防止数据丢失或恶意删除。
- 用途:
-
HEAD 方法
- 用途:
- 资源头部信息获取:用于获取资源的头部信息,如资源的大小、最后修改日期、Content - Type 等,而不获取实际的资源内容。例如,浏览器在加载一个大型文件之前,可以先发送 HEAD 请求来确定文件的大小和类型,以决定是否要下载以及如何处理该文件。
- 特点:
- 高效性:由于只获取头部信息,相比获取整个资源的 GET 请求,HEAD 请求的数据量小,传输速度快。这在只需要了解资源基本属性而不需要实际内容的场景下,可以节省网络带宽和时间。
- 幂等性:和 GET 方法一样是幂等的,多次发送 HEAD 请求获取同一资源的头部信息,只要资源未变,结果相同。
- 用途:
-
OPTIONS 方法
- 用途:
- 请求方法探测:用于客户端向服务器询问对于特定资源支持哪些请求方法。例如,在开发一个跨域的 Web 应用时,客户端可以先发送 OPTIONS 请求来确定服务器对于某个资源是否允许跨域的 GET、POST 等操作。
- 特点:
- 幂等性:是幂等的,多次发送相同的 OPTIONS 请求,只要服务器的配置未变,结果相同。
- 预检功能:在跨域资源共享(CORS)场景下发挥重要作用,作为预检请求来确定后续真正请求的可行性,避免因权限或方法不支持等问题导致请求失败。
- 用途:
-
TRACE 方法
-
用途:
-
调试代理服务器问题:当网络中存在多个代理服务器,且怀疑请求在经过这些代理服务器时被错误地修改或处理时,TRACE 方法就可以派上用场。例如,在一个企业级网络环境中,可能有内部代理服务器、防火墙代理等多个中间设备。如果客户端发现向外部服务器请求的资源出现异常,通过 TRACE 请求可以查看请求经过每个代理服务器后的变化情况,从而定位是哪个代理服务器导致了问题。
-
检测网络安全问题:可以用于检测是否存在恶意的代理服务器在中间环节篡改请求信息。比如,一些恶意的中间代理可能会修改请求中的敏感信息,如用户的身份认证信息或者请求的内容。通过 TRACE 请求,能够看到请求从客户端发出后,经过每个中间环节后的具体状态,从而发现这种潜在的安全威胁。
-
-
特点:
- 回显请求内容:服务器在收到 TRACE 请求后,会将接收到的请求行、请求头部等信息原封不动地返回给客户端。这使得客户端能够清楚地看到请求在经过各个中间环节后是否被修改。例如,如果客户端发送一个 TRACE 请求,请求头部包含 “User - Agent: Mozilla/5.0”,那么服务器返回的响应中也会包含相同的 “User - Agent: Mozilla/5.0”,除非在中间环节被修改。
- 安全风险与限制使用:由于 TRACE 方法会将请求信息返回,这可能会导致信息泄露,特别是在请求中包含敏感信息(如用户密码、授权令牌等)的情况下。因此,在实际应用中,很多服务器会限制或禁用 TRACE 方法,以避免安全风险。并且,在一些安全标准和最佳实践中,也不提倡使用 TRACE 方法,除非是在安全可控的调试环境中。
- 幂等性:多次发送相同的 TRACE 请求,只要请求经过的中间环节和服务器状态没有改变,返回的结果是相同的。例如,第一次发送 TRACE 请求查看请求经过代理服务器的情况,第二次发送相同的 TRACE 请求,在没有其他因素干扰的情况下,返回的结果应该是一样的
-
HTTP协议之URL
https://www.baidu.comm/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 协议版本。
内外网的划分
- 主要基于网络的访问范围和安全性进行的
内网(局域网)
- 定义
- 内网是指在一个局部的地理范围内(如一个办公室、一栋建筑、一个校园或一个企业园区等),由单位自行构建、拥有和管理的计算机网络。它使用私有 IP 地址,与外部互联网通过防火墙等安全设备进行隔离。
- 特点
- 安全性高:通过防火墙等安全措施限制外部访问,能够有效保护内部数据和资源免受外部网络攻击。
- 传输速度快:一般基于高速的局域网技术,如以太网,内部数据传输速率较高。
- 可控性强:网络的拓扑结构、设备接入和资源分配等都可以由内部管理员根据自身需求进行严格控制,资源共享。
- 使用私有 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 地址,这些地址在互联网上不能直接路由。
- 用途
- 内部资源共享:方便单位内部的用户共享文件、打印机等设备和数据。
- 内部通信协作:用于员工之间的即时通讯、电子邮件传递、协同办公软件等内部通信和协作工具的运行。
- 数据存储与管理:为企业提供安全的内部数据存储中心,存储和管理如财务数据、客户信息等敏感信息。
外网(广域网)
- 定义
- 外网是相对于内网而言的,通常是指互联网,它是全球性的计算机网络系统,连接了世界各地的网络设备,使用公共 IP 地址进行通信。
- 特点
- 开放性:可以被全球范围内的用户访问,没有访问限制(在合法合规的前提下)。
- 覆盖范围广:几乎覆盖全球各个角落,能够实现全球信息共享和通信。
- 使用公共 IP 地址:IP 地址由互联网服务提供商(ISP)分配,在互联网上可以被路由。
- 动态性:公共 IP 地址可能会因为各种原因(如网络配置更新、ISP 策略等)而动态变化。
- 用途
- 信息获取与传播:用于访问各种网站、新闻媒体、学术资源等来获取信息,也可以发布信息供全球用户浏览。
- 通信与社交:支持电子邮件、即时通讯、社交网络等多种通信和社交方式,方便人们跨越地域进行交流。
- 电子商务:实现在线购物、在线支付等商业活动,促进全球经济交易。
总结
- 内外网的划分是为了满足不同的网络需求和安全要求。内网提供了安全、高效的内部资源共享和办公环境,外网则为用户提供了丰富的信息和服务资源。在实际应用中,需要根据具体情况合理划分内外网,并采取相应的安全措施来保证网络安全
公网和私网地址
公网地址
- 定义
- 公网地址即公共网络地址,是在互联网上全球唯一标识设备的 IP 地址,由互联网服务提供商(ISP)分配,可被互联网上的其他设备直接访问。
- 特点
- 全球唯一性:每个公网地址在互联网范围内独一无二,用于区分不同的网络节点。
- 可路由性:能够在互联网的路由器之间进行路由转发,使信息可以在全球互联网中传递。
- 公共性:可被任何接入互联网的设备访问,没有访问限制(在符合网络规则和法律法规的前提下)。
- 有限性:由于IPv4地址资源有限,公网地址的数量也是有限的,公网地址资源日益紧张
- 用途
- 服务器访问:用于服务器(如 Web 服务器、邮件服务器等),使全球用户能够访问服务器提供的服务。
- 设备远程访问:允许用户从互联网的任何位置远程访问和控制设备,如远程办公场景下访问公司内部的计算机。
- 互联网通信:作为设备在互联网上通信的身份标识,确保数据准确地发送到目标设备。
私网地址
- 定义
- 私网地址也称本地IP地址,是在专用网络(如企业内部网、家庭网络等)中使用的 IP 地址,这些地址不会在互联网上直接进行路由。
- 特点
- 内部使用:仅限于在一个特定的私有网络内部使用,不能直接用于与互联网通信。
- 可复用性:不同的私有网络可以重复使用相同的私网地址范围,因为它们不会在互联网中产生冲突。
- 安全性高:一定程度上隔离了内部网络与外部互联网,增强内部网络安全性。
- 用途
- 内部网络:用于组建企业、学校或家庭的内部局域网,实现内部设备之间的通信和资源共享。
- 保护隐私:在内部网络通信时,避免内部设备的真实 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
总结
- 公网地址和私网地址在网络中都各有各的用途。公网地址用于在全球互联网上进行通信,私网地址则用于在组织机构内部本地网络。在实际应用中,需要合理分配使用公网和私网地址,以满足不同需求