0
点赞
收藏
分享

微信扫一扫

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

Python芸芸 2022-03-12 阅读 63

深入浅出-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 请求方法

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

错误码:

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

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

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

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

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

常见状态代码、状态描述的说明如下。

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详解——协议

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

举报

相关推荐

0 条评论