【应用层协议】初始Http,fiddler的使用

文章目录

  • 1. HTTP概念
  • 2. 下载fiddler及使用获得HTTP协议格式
    • 2.1 fiddler的下载
    • 2.2 fiddler使用
  • 3. HTTP请求(Request)
    • 3.1 请求行
      • 3.1.1 URL
      • 3.1.2 方法
        • 3.1.2.1 GET
        • 3.1.2.2 POST
        • 3.1.2.3 其他方法
    • 3.2 报头(header)
    • 3.3 空白行
    • 3.4 正文(body)
  • 4. HTTP响应(response)

1. HTTP概念

Http全称是超文本传输协议,是一种常用的应用层协议。它是Web的基础,用于在客户端和服务器之间传递数据和请求网页资源。
例如:当我们搜索一个网站时,就相当于向网站的服务器发送一个http请求,当网站的服务器收到请求后就会进行响应。
HTTP 往往是基于传输层的 TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP 实现)

2. 下载fiddler及使用获得HTTP协议格式

当我们搜索一个网站时,我们便会发出HTTP的请求,但我们可能无法直接的观察,我们就可以使用这个fiddler的抓包工具进行捕捉HTTP,方便我们观察这个过程和HTTP协议格式等。
这个fiddler就相当于一个代理,当我们开启fiddler搜索网站发出http请求,不会直接到达网站服务器,而是先到fiddler,然后从fiddler再到网站服务器,当网站服务器回应时,也是如此。

2.1 fiddler的下载

我们可以直接搜索fiddler的官网,进行下载。
fiddler下载
下载
下载我们需要的版本即可。

2.2 fiddler使用

fiddler的使用也是非常的简单,我们直接打开即可。
我们会得到以下的界面:
界面

  1. 最上面的导航
  2. 左面的便是我们抓到的HTTP(还会有HTTPS协议,这个后面博客会讲)。
  3. 当我们点开一个HTTP,右上一块就是HTTP请求。
  4. 右下是HTTP响应。

点击Raw,View in Noteod,便可以查看具体细节。在这里插入图片描述

3. HTTP请求(Request)

请求

如图,HTTP请求协议分为四部分:

  1. 请求行
  2. 报头
  3. 空白行
  4. 正文

下面具体介绍每一个部分。

3.1 请求行

请求行

如图,请求行分为三个部分:

  1. HTTP请求的方法
  2. 请求的URL
  3. HTTP协议版本

3.1.1 URL

URL,又称统一资源定位符,也就是我们经常说的网址。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
下面就是一个CSDN的URL:
https://www.csdn.net/?spm=1011.2124.3001.4476

  • https:协议方案名,常见的就http和https。
  • www.csdn.net:服务器地址, 此处是一个 “域名”, 域名会通过 DNS 系统解析成一个具体的 IP 地址。
  • spm=1011.2124.3001.4476:查询字符串(query string), 本质是一个键值对结构. 键值对之间使用 & 分隔. 键和值之间使用 = 分隔。程序员自定义。

但这并不完整的URL,还是有一些信息被省略了。
完整:
2

3.1.2 方法

方法

HTTP请求行的第一个部分为HTTP请求的方法,每种方法都有不同的意义, 后面我们也可以使用JS的ajax自己定义方法。
上面方法中其中常用的只有GET和POST。

3.1.2.1 GET

GET 是最常用的 HTTP 方法. 常用于获取服务器上的某个资源,
在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求.
请求
如图就是一个GET请求,我们可以方法GET请求的特点:

  1. 请求行第一个部分为GET;
  2. URL 的 query string 可以为空, 也可以不为空;
  3. header 部分有若干个键值对结构;
  4. body 部分为空。
3.1.2.2 POST

POST 方法也是一种常见的方法. 多用于提交用户输入的数据给服务器(例如登陆页面)。
通过 HTML 中的 form 标签可以构造 POST 请求, 或者使用 JavaScript 的 ajax 也可以构造 POST 请求。
POST

  1. 首行的第一部分为 POST;
  2. URL 的 query string 一般为空 (也可以不为空) header 部分有若干个键值对结构;
  3. body 部分一般不为空;
  4. body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由 header 中的Content-Length 指定.

GET和POST区别?
1.GET一般用于获取数据,POST一般用于提交数据;
2.GET一般body为空,传递数据通过query string,POST一般query string为空,传递数据通过body;
3.GET请求一般幂等(多次请求结果相同),POST不是幂等的;
4.GET可以被缓存,POST不能被缓存。

3.1.2.3 其他方法

PUT 与 POST 相似,只是具有幂等特性,一般用于更新
DELETE 删除服务器指定资源
OPTIONS 返回服务器所支持的请求方法
HEAD 类似于GET,只不过响应体不返回,只返回响应头
TRACE 回显服务器端收到的请求,测试的时候会用到这个
CONNECT 预留,暂无使用

3.2 报头(header)

报头

header 的整体的格式也是 “键值对” 结构,每个键值对占一行. 键和值之间使用分号分割。
header中种类很多,这里介绍几种常见的。

  1. Host:表示服务器主机的地址和端口。
  2. Content-Length:表示 body 中的数据长度。
  3. Content-Type:表示请求的 body 中的数据格式。
  4. User-Agent (简称 UA):表示浏览器/操作系统的属性。
  5. Referer:表示这个页面是从哪个页面跳转过来的。
  6. Cookie:Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)可以通过这个字段实现 “身份标识” 的功能。

3.3 空白行

作用
分割报头和正文,标识报头结束,一般有正文才会有空白行,没报文就没空白行。

3.4 正文(body)

正文中数据:
文本数据:HTML、XML、JSON等文本格式的数据。
二进制数据:图像、音频、视频等二进制格式的数据。
表单数据:用户通过Web表单提交的数据。
文件上传:在文件上传请求中,正文包含上传的文件数据。
……

4. HTTP响应(response)

响应

HTTP响应也是四个部分组成:

  1. 状态行
  2. 报头
  3. 空白行
  4. 正文

其中后三个与HTTP请求相同。

状态行
座谈会

由HTTP协议版本和状态码和原因短语组成。
状态码和原因短语一一对应,如:
200 OK:表示访问成功。
404 Not Found:没有找到资源。
403 Forbidden:没有权限,拒绝访问。
405 Method Not Allowed:前面我们已经学习了 HTTP 中所支持的方法, 有 GET, POST, PUT, DELETE 等,但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其他的方法)。
500 Internal Server Error:服务器出现内部错误。
504 Gateway Timeout:当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况。
302 Move temporarily:临时重定向。
301 Moved Permanently:永久重定向。

总结
状态码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/127435.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS Stream9 安装远程桌面服务 Xrdp

1. 安装 XRDP 若服务器本身没有桌面则首先需要安装本地桌面: yum -y groups install "GNOME Desktop" startx配置源: dnf install epel-release安装 xrdp dnf install xrdp 2. 配置 Xrdp Xrdp 配置文件位于 /etc/xrdp 目录中。对于常规 X…

网络安全总结

前言 本文内容主要摘抄网络规划设计师的教材和腾讯-SUMMER课堂,主要对网络安全进行简单梳理和总结 OSI安全体系 X轴表示8种安全机制,Y轴表示OSI7层模型,Z轴表示5种安全服务,图中X是水平,Y轴竖直,Z轴向外…

Redis 获取、设置配置文件

以Ubuntu 为例 redis配置文件 cd /etc/redis sudo vim redis.conf 获取配置文件、修改配置文件

VS2022+qt5.15.2+cmake3.23.2配置VTK9.1.0版本

VS2022qt5.15.2cmake3.23.2VTK9.1.0 尝试了好多次,终于成了~ 软件安装 先把需要的软件都安装好! VS2022安装教程: https://blog.csdn.net/qq_44005305/article/details/132295064 qt5.15.2安装教程:https://blog.csdn.net/Qi_1337/article…

在Unity使用自定义网格生成一个球体

1.在Unity场景中新建一个空物体,在空物体上添加MeshRenderer和MeshFilter组件。 2.新建一个C#脚本命名SphereMesh,将脚本挂载到空物体上,如图: 运行场景就可以看到生成一个球体 全部代码如下: using UnityEngine;public class S…

leetcode42 接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高…

Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验)

文章目录 效果一览文章概述模型描述程序设计单步实验多步实验参考资料效果一览 文章概述 Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验) Transformer-singlestep.py 包含单步预测模型 Transformer-multistep.py 包含多步预测模型 这是单步预…

BJT晶体管

BJT晶体管也叫双极结型三极管,主要有PNP、NPN型两种,符号如下: 中间的是基极(最薄,用于控制),带箭头的是发射极(自由电子浓度高),剩下的就是集电极&#xff0…

HashMapConcurrentHashMap

文章目录 1、HashMap基础类属性node容量负载因子hash算法 2、数组链表/树为什么引入链表为什么jdk1.8会引入红黑树为什么一开始不就使用红黑树?HashMap的底层数组取值的时候,为什么不用取模,而是&数组的长度为什么是2的次幂如果指定数组的…

算法-排序算法

0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间…

【AI视野·今日NLP 自然语言处理论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 2 Oct 2023 Totally 44 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Efficient Streaming Language Models with Attention Sinks Authors Guangxuan Xiao, Yuandong Tian, Beidi C…

Ubuntu MySQL

在安装前,首先看你之前是否安装过,如果安装过,但是没成功,就要先卸载。 一、卸载 1.查看安装 dpkg --list | grep mysql 有东西,就说明您之前安装过mysql。 2.卸载 先停掉server sudo systemctl stop mysql.servic…