认识HTTP协议---1

news2024/10/5 17:18:31

在这里插入图片描述

hello,大家好,今天为大家带来http协议的相关知识

1.HTTP协议

🐷1.应用层协议

🐷2.HTTP协议的工作过程

2.HTTP协议格式

🐷1.认识抓包工具Fidder

🐷2.学会使用fidder

🐷3.协议格式总结

3.HTTP请求

🐷1.认识URL

🐷2.认识请求

4.HTTP响应

🐷1.认识响应

5.总结get和post

下面我们就进入正题吧

1.HTTP协议

🐷1.应用层协议
既然要讲http协议,就要提到TCP/IP五层模型
在这里插入图片描述

我们可以清楚的看到http协议属于应用层的协议,应用层协议也就是可以理解成和用户进行交互的协议,就是不关心通信过程,只关注应用交互

🐷2.http协议的工作过程

http协议全称HyperText Transfer Protocol,是一个超文本协议, 往往是基于传输层的 TCP 协议实现的.

HTTP是一个"一问一答"的协议,就是一个请求返回一个响应,我们也谈到过多请求多响应,一个请求,多个响应的情况,这里不在赘述
我们来画个图理解http协议的工作过程

在这里插入图片描述
我们在浏览器上输入https://www.baidu.com/,与之对应的弹出一个百度的搜索页面
这里的绿色框里的输入的一串URL就是请求,而百度搜索页面就是响应
在这里插入图片描述
这里的客户端就是浏览器页面,服务器就是HTTP服务器
客户端向服务器输入一个网址请求,服务器解析解析请求,构造响应,并返回给客户端

http是应用层协议,请求发出要向下一层层封装,接收方收到的时候也是从下到上层层分用,最后完成传输

2.HTTP协议格式

1.认识抓包工具Fidder
我们学习http协议就是要认识http的报文协议格式,那么就要借助抓包工具才能看到,现在认识一下抓包工具Fidder
在这里插入图片描述
它长这样,这个词可能有点抽象,就是可以把它当做中介,

比如我要买房子,我不和卖方的人直接交流,我和中介说,中介和卖房子的交流,那么中介就知道我和卖房子之间的所有信息,这是为了方便理解说的,实际上应该叫做代理

,画个图来理解
在这里插入图片描述

Fidder相当于一个代理,客户端要向服务器发发送请求,就交给fidder转发,服务器返回响应也交给fiddler转发

🐷2.学会使用fidder

我们现在来抓个包看看
在这里插入图片描述

在这里插入图片描述
33行处就是fiddler抓到的包

🐷3.协议格式总结

点开这个被抓的包
在这里插入图片描述
这个绿色框里面的就是http请求,红色框里面的就是http响应
我们点击raw,点击view in notepad,具体来认识协议格式
在这里插入图片描述
这一段就是http请求的报文格式在这里插入图片描述
这是http响应的报文格式

3.HTTP请求

🐷1.认识URL

在这里插入图片描述
GET:代表http方法,这里表示调用的是http方法是get方法
在这里插入图片描述
这个就是URL,是唯一资源定位符,描述了网络上的一个资源

再来看一个URL

http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1

http:协议名

user:pass:登录信息(认证)

@www.example.jp:域名,(服务器地址)

80:服务器端口号(http默认是8080,HTTPS默认是443)

dir/index.html:带层次的文件路径(表示要访问的服务器资源是啥)

uid=1:查询字符串
(query string 中的内容是键值对结构. 其中的 key 和 value 的取值和个数, 完全都是程序猿自己约定)
规则:使用&分割键值对,使用=分割键和值
)

#ch1:片段标识符
在这里插入图片描述

这个就是http服务器的版本号,一般都是HTTP/1.1

🐷2.认识请求

来看看http的方法都有哪些
在这里插入图片描述
GET请求
在这里插入图片描述

get请求,有四部分构成,首行,header,空行,body

对于get请求来说body一般没有

空行就相当于是 “报头的结束标记”, 或者是 “报头和正文之间的分隔符”.

HTTP 在传输层依赖 TCP 协议, TCP 是面向字节流的. 如果没有这个空行, 就会出现 “粘包问题”.

4.HTTP响应

来看响应
在这里插入图片描述
响应和请求一样都是文本文件,但是响应被压缩了,所以变成了二进制文件,我们依然使用view in notepad来看
在这里插入图片描述
在这里插入图片描述
Post请求
post请求一般是登录或者上传某个文件的时候才能看到
post请求一般没有URL,一般都有body

5.总结get和post

总体来说,get和post都是向服务器发送请求,没有什么本质区别,但是在使用习惯上有很大区别
1.get习惯上用来表示获取一个数据,post用来表示提交一个数据
2.get请求一般没有body,需要携带的数据放到URL里,post一般有body
3.get请求通常会设置为幂等的,post没有要求
4.get是可缓存的,(前提是幂等)post不能
5.get请求可以被浏览器收藏,post不能
6.有些资料上说 “POST 比 GET 请安全”. 这样的说法是不科学的. 是否安全取决于前端在传输密码等敏感信息时是否进行加密, 和 GET POST 无关.
7.关于传输数据量: 有的资料上说 “GET 传输的数据量小, POST 传输数据量大”. 这个也是不科学的, 标准没有规定 GET 的 URL 的长度, 也没有规定 POST 的 body 的长度. 传输数据量多少, 完全取决于不同浏览器和不同服务器之间的实现区别.具体可以查看RFC官方文档

https://www.rfc-editor.org/rfc/rfc2616

最后来解释一下什么叫幂等

就是说请求是一定的,响应也是一定的,比如牛吃的是草,挤出来就一定是牛奶,不能是别的,如果挤出来的是水,那就不符合幂等
太阳东升西落,如果不符合这个规定,那也不是幂等的!
今天的讲解就到这里,我们下期继续讲解http协议相关的知识,886~~~

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用本地事务和分布式事务解决方案模型

目录 1 DTP模型2 2PC2.1 方案简介2.2 处理流程2.2.1 阶段1:准备阶段2.2.2 阶段2:提交阶段 2.3 方案总结 3 3PC3.1 方案简介3.2 处理流程3.2.1 阶段1:canCommit3.2.2 阶段2:preCommit3.3.3 阶段3:do Commit 3.3 方案总结…

使用本地的chatGLM

打开终端 wsl -d Ubuntu conda activate chatglm cd cd ChatGLM-6B python3 cli_demo.py 依次输入以上命令。

随机森林Proximity实现及应用

随机森林Proximity实现及应用 1 算法1.1 随机森林Proximity简介1.2 RF-GAP1.3 实现代码 2 应用2.1 离群点(outlier)检测2.1.1 原理和实现2.1.2 实验结果 附录 项目主页:randomforest C implementation of random forests classification, regression, proximity and…

可以免费使用的ChatGPT保姆级教程 (New Bing)

ChatGPT狂飙160天,世界已经不是之前的样子。https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 最近,ChatGPT已经非常流行,但由于各种原因,国内用户无法直接免费使用ChatGPT的API,各种伟大的神也利用这…

沉浸式翻译 安装及使用

介绍一下最近非常或的沉浸式翻译工具,非常有助于外文阅读,包括网页、pdf等。可以同时显示原文和译文,操作简单,使用起来还是非常友好的。 先上链接:介绍 - 沉浸式翻译 如何使用 - 沉浸式翻译 1.安装 支持Edg…

仙人掌之歌——权力的游戏(2)

他是特级战斗英雄 “那个李通,会不会看起来好吓人呀?” 云冰洁有些紧张的样子,几乎要让陈速笑出来。 “哪有,一个很 nice 的人好吧。就是看起来比较严肃而已,我也从没看他笑过倒是。” 陈速让云冰洁看菜单&#xff0…

【极海APM32F4xx Tiny】学习笔记01-模板工程创建

本项目的使用的开发板 关于芯片使用的其他笔记 外部晶振时钟 模板工程创建/LED工程 项目仓库 https://gitcode.net/u010261063/apm32_test_part 创建模板工程的核心要素 复制官方的标准外设库复制启动文件复制cmsis文件复制相关的公共头文件如apm32f4xx_int.h 和 system_apm…

mybatis trim标签使用详解

mybatis trim标签使用详解 mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀,可用于选择性插入、更新、删除或者条件查询等操作。…

Dubbo框架

文章目录 1. 什么是Dubbo2. Dubbo架构3. SpringBoot整合Dubbo框架3.1 前期准备3.1.1 Zookeeper的安装 3.2 项目创建3.3 添加依赖3.4 定义服务接口3.5 服务端的实现3.6 消费端请求任务3.7 服务端配置文件3.8 消费端配置文件3.9 启动应用 4. Dubbo负载均衡5. Dubbo集群容错 1. 什…

第一部分-基础篇-第一章:PSTN与VOIP(上篇)

文章目录 序言引言:什么是VOIP和PSTN1.1 PSTN起源与发展1.1.1 最早的电话网1.1.2 人工电话交换时代1.1.3自动电话交换时代1.1.4半电子交换机时代1.1.5空分交换机时代1.1.6 数字交换机时代1.1.7现代PSTN时代1.1.8 下一代网络及VoIP时代 1.2 电话实现技术1.2.1 电话号…

【MySQL】如何速通MySQL(1)

📌前言:本篇博客介绍如何速通MySQL,主要介绍Mysql中主要的基础的入门,学习MySQL之前要先安装好MySQL,如果还没有安装的小伙伴可以看看博主前面的博客,里面有详细的安装教程。或者看一下下面这个链接~ &…

“AI孙燕姿”爆火背后,是内容合规问题的再次升级|上云那些事

“讽刺的是,人类再怎么快也无法超越它。”这是歌手孙燕姿关于自己AI分身遍布网络一事,在MAKE MUSIC网站的博客上发表的看法。 来源:孙燕姿MAKE MUSIC网站博客 当大家还在担心AIGC会不会让自己失业时,歌手孙燕姿就因为“AI孙燕姿”…

LDA算法实现鸢尾花数据集降维

目录 1. 作者介绍2. LDA降维算法2.1 基本概念2.2 算法流程 3. LDA算法实现3.1 数据集介绍3.2 代码实现3.3 结果展示 1. 作者介绍 唐杰,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件&#xff…

深度学习笔记(八)——语义分割标注转换

核心思想:“将颜色转换成对应的标号” 形式一:Json格式的标注转换成调色板mask 形式二:RGB类型mask(24位三通道)转成调色板mask(8位单通道),调色板的格式为.png 形式三:对于二分类的…

oracle安装

服务端安装(公司中不需要,只安装客户端就行) 1、挂载一个Windows系统 双击vmx文件 启动 2、网络配置 添加一个网络 自己电脑看控制面板是否添加虚拟网卡 查看连接的网络,ip地址不能为1,为1就自己修改,…

深度剖析:C++内存池的设计与实现

深度剖析:C内存池的设计与实现 一、引言(Introduction)1.1 内存管理的重要性1.2 内存池的基本概念1.3 内存池的应用场景 二、C内存管理机制(C Memory Management Mechanism)2.1 C内存分配与释放2.2 C内存管理的问题2.3…

《Kali渗透基础》04. 主动信息收集(一)

kali渗透 1:主动信息收集2:发现3:二层发现3.1:arping3.2:nmap3.3:netdiscover3.4:Scapy 4:三层发现4.1:ping4.2:Scapy4.3:nmap4.4:fpi…

Win2016服务器DNS服务搭建

文章目录 前言一、什么是DNS?1.为什么需要DNS系统2.为DNS(Domain Name System,域名系统)的功能3.域名解决方案的演进 二、域名介绍1.域名空间结构2.常见的顶级域名 三、DNS解析原理1.查询过程及方式2.DNS的查询分类 四、配置DNS服…

【论文精读】ICLR2022 - 语言驱动的语义分割

【论文精读】ICLR2022 - 语言驱动的语义分割 【论文原文】:LANGUAGE-DRIVEN SEMANTIC SEGMENTATION 【作者信息】:Boyi Li Cornell University, Cornell Tech Kilian Q. Weinberger Cornell University Serge Belongie University of Copenhagen Vladl…

2023年试用uniapp、vue2、vue3、typescript、vite、nvue

1. 前言 试用了一下 uniapp、vue2、vue3、typescript、vite、nvue 等技术,写了两个页面,两个页面加起来不到400行代码。 尝试使用了四种组合: 组合1:uniapp vue2 JavaScript nvue文件 非fast模式 组合2:uniapp…