【网络原理】——HTTP协议、fiddler抓包

简介: HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法

  image.gif 编辑

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:认识HTTP

1:超文本传输

2:发展历史

3:HTML

4:交互过程

5:报文格式

6:HTTP请求格式

7:HTTP的响应格式

二:fiddler

1:介绍

2:设置

三:URL

1:认识URL

2:URL完整结构

3:URLencode

四:HTTP首行方法

1:什么是方法

2:GET

3:POST

(1)POST实践

(2)base64编码

4:POST和GET区别(重点)

5:误区


一:认识HTTP

1:超文本传输

HTTP协议是一种超文本传输协议

文本:就是我们平时说的字符串,可以用utf8/gbk这种码表找到合法的字符

超文本:不仅包含字符串,也可以是一些图片,格式,链接之类的

富文本:比超文本还NB,就是可以设置一些行间距,字体啥的(word文档)

2:发展历史

image.gif 编辑

HTTP主要应用场景:网站,浏览器/客户端和服务器之间传输数据

HTTP2.0和3.0引入了很多特性:①提高传输效率②提高传输安全性

但是1.1版本还是主流版本(IPv6还没有全面覆盖)

3.0版本之前,传输层的协议是基于TCP;

3.0版本之后是基于UDP,这里实现的机制可以确保可靠性,也不拍数据量非常大的包

3:HTML

HTML是一种“编程语言”但是跟C++和Java差别还是比较大的,前者描述的是“内容”,后者表达的是“逻辑”。

我们说的“网页”就是通过HTML来构建的

HTML和CSS、JavaScript合称为“前端开发三剑客” image.gif 编辑

4:交互过程

典型的一问一答

image.gif 编辑

打开一个网站,浏览器和服务器之间进行的HTTP交互不是只有一次,而是通常有很多次,第一次交互是拿到这个页面的html

html还会依赖其它的css和js等,heml被浏览器加载之后,又会触发一些其他的http请求............

5:报文格式

这里我们要用到一个工具——fiddler(先看第二部分fiddler安装)

image.gif 编辑

image.gif 编辑

为了节省带宽,以上看到的是被压缩后的数据(一般都是压缩响应,请求不太需要)

下面点击raw可以看到HTTP请求的原始数据

image.gif 编辑

image.gif 编辑

6:HTTP请求格式

(1)首行

包含:方法,URL(后面会讲到),版本号。共计三个部分,用空格分开

image.gif 编辑

(2)请求头

从第二行开始一直到后面都是请求头(类似TCP报头,这里是以文本的形式组织的),报头中包含了很多键值对,每对键值占一行,键和值之间用:分割

image.gif 编辑

(3)空行

请求头最下面会有一个空行,这个空行表示结束标记

(4)正文

也叫body,HTTP的载荷部分

7:HTTP的响应格式

(1)首行

包含:版本号,状态码,状态码的描述(彼此间用空格分割)

image.gif 编辑

(2)响应头

键值对(同请求)

image.gif 编辑

(3)空行

image.gif 编辑

(4)正文(body)

响应的载荷是HTML

image.gif 编辑

二:fiddler

1:介绍

抓包工具——本质上是一个代理程序,能够获取到网络上传输的数据,并显示出来。

注:这里的代理分为:正向代理(客户端的代言人)和反向代理(服务器的代言人)

例如:wireshark——非常齐全,可以抓取各种协议的数据包(包括但不限于:TCP、UDP、IP、以太网),使用比较麻烦

这里我们介绍的fiddler抓包工具(可以自己找资源下载哈),是专注于抓取HTTP协议的数据包。

这里是下载网站——Web Debugging Proxy and Troubleshooting Tools|Fiddler

2:设置

image.gif 编辑

image.gif 编辑

不小心点否的铁铁,只能卸载重新下载一遍了

你的系统中有任何一个程序使用了HTTP/HTTPS此时就都能被fiddler给获取到

image.gif 编辑

三:URL

1:认识URL

URL——唯一资源定位符。描述一个网络上的资源位置

URI——唯一资源标识符(范围更大)

image.gif 编辑

搜索fiddler

image.gif 编辑

image.gif 编辑

查询字符串也是键值对格式,使用&分割键值对;使用=分割键值

2:URL完整结构

image.gif 编辑

(1)登录信息:现在不常用这种写法,都是“单独的登录界面”完成身份验证

(2)服务器地址/端口号:域名也可以是ip地址,如果没有端口号,浏览器会自动分配给你一个端口号(http 80 ;https  443)

(3)带层次的文件路径:可能会对应一个真实的硬盘文件,也可能对应一个虚拟的文件(后面会有例子)

(4)查询字符串:针对请求的内容做的补充说明

总结概括:通过ip知道服务器在哪,通过端口号知道程序是哪个,通过路径知道访问的是哪个资源

image.gif 编辑

(5)片段标识符:用来表示当前页面的某个部分,通过不同的片段标识可以完成当前页面内的跳转

3:URLencode

在URL中本身有些特殊符号具有特定的含义,所以在query String里自定义键值对的时候如果包含同样的符号,就要对上述符号进行“转义”。

对于汉字也是要进行“转义”的,但是如果汉字的“utf8/gbk”等编码值中,某个字节恰好跟某个符号的ASCII码值相同就麻烦了,所以我们就用“%ASCII码”的形式进行表示了,例如

image.gif 编辑

image.gif 编辑

再举个例子搜索“蛋糕”两个字

image.gif 编辑

在实际开发中,当要构造一个URL,尤其是URL中的query string 中要包含中文的时候,务必要进行编码

四:HTTP首行方法

1:什么是方法

把上面的图借用一下,现在我们展开讲方法

image.gif 编辑

方法就是描述这个请求,想干啥

image.gif 编辑

看着这么多方法,其实使用占比:GET占80%场景,POST占10%,剩余占10%可以这么理解

这些语义是“标准文档作者”推荐这么定义的,但实际定义权还是在咱们程序员自己手里

2:GET

GET:从服务器哪一个东西过来(读操作)。非常常见

3:POST

(1)POST实践

POST:网服务器放一个东西过去(写操作)

两个典型的使用场景——①登录②上传

我们打开一个登录界面(比如qq邮箱),然后用fiddler抓包

image.gif 编辑

post请求中最后空行下还有东西就是载荷(正文,body),可以放任意前端和后端约定好的格式

(2)base64编码

image.gif 编辑

这里介绍一个编码,,它的编码规则有标准版(无法作为加密方案),自定义版(可以作为一种简单的加密手段)

base64编码使用四个字节,对原始数据中的三个字节进行重新编码,目的是去除原始数据中的二进制内容(因为有些场合只能存储文本数据)

image.gif 编辑

4:POST和GET区别(重点)

①两者本质上没有区别

使用GET的场景POST也能使用,反之如此,这里取决于你的代码是怎么写的(尤其是服务器和客户端都是自己实现的情况下)

②使用习惯上

GET习惯把数据放到URL的query string,POST习惯放到body中

反过来的话,有的服务器可能不支持GET把数据放到body中

③语义

标准文档中,GET是用来获取数据的,POST的语义是给服务器传输数据的

④幂等性

标准文档中,建议GET请求实现成幂等的,POST无要求

每次输入的内容一定,输出的结果也一定叫“幂等”

每次输入的内容一定,输出的结果不一定不叫“幂等”

⑤GET请求可以被浏览器收藏夹收藏,POST不行

5:误区

误区①:POST比GET安全

说法:登陆的时候,如果使用GET,密码就会显示在URL上,所以POST更安全

解释:即使是使用了POST,如果被抓包了,密码也会暴露

安全的前提在于加密!!!

误区②:GET传输的数据量小(传输的数据量有上限),POST传输的数据量更大

老版本的IE浏览器在实现的时候,对URL有长度限制。实际上HTTP标准文档中说了,对于GET和URL的长度不做限制,目前比较长的URL也是常见的

误区③:GET只能携带文本数据,POST可以携带二进制数据

URL通过query string来携带数据,query string只能包含文本,但是这里可以对二进制数据进行urlencode转换为文本数据,到了服务器在urlencode还原为二进制数据

POST请求中可以直接携带二进制数据,但是也有对二进制数据进行urlencode/base64转码的情况


相关文章
|
5月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
8月前
|
数据采集 算法 数据挖掘
模块化控制协议(MCP)在网络中增强智能体执行效率的研究
随着Web3技术的迅速发展,去中心化应用和智能体在各种领域的应用逐渐增多。MCP(Modularized Control Protocol,模块化控制协议)作为一种增强智能体执行能力的关键技术,为Web3场景中的智能体提供了更强的灵活性和可扩展性。本文将探讨如何利用MCP技术提升智能体在Web3场景中的执行能力,并通过实例代码展示其实现路径。
793 22
|
5月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
6月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
613 11
|
6月前
|
运维 架构师 安全
二层协议透明传输:让跨域二层协议“无感穿越”多服务商网络
简介:本文详解二层协议透明传输技术,适用于企业网工、运营商及架构师,解决LLDP/LACP/BPDU跨运营商传输难题,实现端到端协议透传,提升网络韧性与运维效率。
|
6月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
1253 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
6月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
975 0
|
8月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
488 7
|
8月前
|
弹性计算 运维 Kubernetes
看阿里云操作系统控制台如何一招擒拿网络丢包
阿里云操作系统控制台帮忙客户快速定位问题,不仅成功完成业务部署并实现稳定运行,更有效遏制了持续性成本消耗。
|
10月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
306 18

热门文章

最新文章