网络原理 - HTTP/HTTPS(1)

news2025/1/23 2:22:22

HTTP

HTTP是什么

HTTP("全程超文本协议")是一种应用非常广泛的应用层协议.

文本:字符串(能在utf8/gbk)码表上找到合法字符.

超文本:不仅是字符串,还能携带图片啥的(HTML).

富文本:类似于word文档这种.

HTTP诞生于1991年.目前已经发展为最主流使用的一种应用层协议.

 

实际上HTTP/1.1是目前使用最广泛的HTTP协议版本,之后的讨论也以HTTP1.1为主.

HTTP往往是基于传输层的TCP协议实现的.(HTTP1.0,HTTP1.1,HTTP2.0均属于TCP,HTTP3.0基于UDP实现).

我们平时打开一个网站,就是通过HTTP协议来传输数据的.

当我们在浏览器中输入一个搜狗搜索的"网址"(URL)时,浏览器就给搜狗的服务器发送了一个HTTP请求,搜狗的服务器返回了一个HTTP响应.(浏览器和服务器之间传输数据)

这个响应结果被浏览器解析之后,就展示成我们看到的页面内容.(这个过程浏览器可能给服务器发送多个HTTP请求,服务器会对应返回多个响应,这些响应里就包含了页面HTML,CSS,JavaScript,(前端开发三剑客)图片,字体等信息). 

理解"应用层协议"

我们之前讲过TCP/IP,已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程[IP + Port].

可是,仅仅把数据从A点传送到B点就完了吗?

 这就好比,在淘宝上买了一部手机,卖家[客户端]把手机通过顺丰[传送 + 路径选择]送到买家[服务器]手里就完了吗?

不是的,买家还要使用这款产品,使用完之后也可能要给卖家打分评论.

所以,我们把数据从A端传送到B端,TCP/IP解决的是顺丰的功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,不关心通信细节,关心应用细节

这层协议叫做应用层协议.而是用是有不同场景的,所有应用层协议是不同种类的,其中经典协议之一的HTTP就是其中的佼佼者.

理解HTTP协议的工作过程

当我们在浏览器中输入一个"网址",此时浏览器就会给对应的服务器发送一个HTTP请求.对方服务器收到这个请求之后,经过计算处理,就会返回一个HTTP响应.(一问一答)

 

 但是,在类似于消息推送等场景时,需要服务器主动给浏览器发送消息,这里HTTP就难以胜任了.

应用层这里还提供了一个和HTTP搭配的协议,websocket(HTTP的跟班,针对HTTP能力进行补充的).

HTTP协议格式

HTTP是一个文本格式的协议.通过抓包工具进行抓包,分析HTTP请求/响应的细节.

抓包工具的使用

以Fidder为例.(下载:https://www.telerik.com/fiddler/)

如果安装配置ok,fiddler就能抓到很多数据包,打开一个网站,其实浏览器和服务器之间的HTTP交互不是只有一次,而是多次.经过反复拉扯,才能页面获取.

左侧窗口显示了所有HTTP请求/响应,可以选中查看详细.

右侧上方显示了HTTP的报文内容.(切换到Raw标签页可以查看详细的数据格式)

右侧下方显示了HTTP的报文内容.(切换到Raw标签页可以查看详细的数据格式)

请求和响应的详细数据,可以通过右下角的View in Notepad通过记事本打开.

可以使用ctrl+a全选左侧的抓包结果,delete键删除所有的被选中结果.

抓包工具的原理

对了,在使用fiddler之前,还需要关闭电脑上其它的代理程序.因为Fiddler也是个代理程序,可能会与其它的程序出现冲突.

代理分成两种: 1.正向代理(是客户端的代言人)  2.反向代理(是服务器的代言人)

代理就可以简单理解为跑腿小弟.你想买罐冰可乐,又不想下楼去超市,那么就可以把钱给你的跑腿小弟(正向代理),跑腿小弟来到超市把钱给超市老板(老板也可能不想看店,让儿子看店(反向代理)),再把冰可乐拿回来交到你的手上.这个过程中,这个跑腿小弟对于"你"和"超市老板"的交易细节,是非常清楚的. 

抓包结果

HTTP请求:

 

首行:[方法] + [url] + [版本]

Header:请求的属性,冒号分割的键值对;每组属性之间用\n分隔;  遇到空行表示Header部分结束

Body(http载荷部分):空行后面的内容都是Body.Body允许为空字符串.如果Body存在,则在Header中会有一个Content-Length来标识Body的长度;(有的http请求有body,有的没有

HTTP响应:

 

 首行:[版本号] + [状态码] + [状态码解释](请求成功/失败)

Header:请求的属性,冒号分隔的键值对;每组属性之间使用\n分隔;遇到空行表示Header结束

Body:空行后面的内容都是body.Body允许为空字符串.如果Body存在,则在Header中会有一个Content-Length属性来标识Body的长度;如果服务器返回了一个html页面,那么html页面内容就是在body中.

协议格式总结

思考问题:为什么HTTP报文中要存在"空行"?

因为HTTP协议中并没有规定报头部分的键值对有多少个.空行就是"报头结束的标记",或者是"报头和正文之间的分隔符".

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

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

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

相关文章

[Docker实战] 旭日X3派上Docker Openwrt +Samba 实现局域网NAS 开启AP模式

​ 🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[旭日X3派] [Docker实战] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 …

Python:变量与数据类型

目录 一、变量 1.1 强数据类型与弱数据类型 1.2 全局函数 1.3 变量的命名规范 二、数据类型 2.1 基本数据类型 2.2 复合数据类型(引用数据类型) 三、数据类型转换 一、变量 变量:顾名思义,变化的量。在python中代指运行时…

博客新增每日早报api,网站增加每日早报功能

1、每日早报 使用alapi的每日早报接口,回调一个日报图片,然后展示这个图片,即可看到每日早报内容 1.1 api申请 在Alapi官网注册一个账号 1.2 获取密钥 然后获取用户中心的Token密钥,这个用于输出早报内容 2、早报创建 2.1 创…

2024最新软件测试八股文(答案+文档)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&a…

自然语言编程系列(一):自然语言和程序语言介绍

1.自然语言和程序语言 自然语言和程序语言是两种截然不同但又相互关联的语言体系,它们分别服务于人类日常交流和计算机指令执行。 自然语言: 定义:自然语言是指人类在日常生活中使用的语言,如英语、汉语、法语等。它是非正式且灵…

2024年回炉计划之JWT(五)

一、简介 WT(JSON Web Token)是一种用于在网络应用间安全地传递信息的开放标准(RFC 7519)。它是一种紧凑且自包含的方式,用于在各方之间传输信息作为 JSON 对象。JWT 可以通过数字签名(使用 HMAC 算…

Kafka(二)

第 4 章 Kafka Broker 4.1 Kafka Broker 工作流程 4.1.1 Zookeeper 存储的 Kafka 信息 (1)启动 Zookeeper 客户端。 bin/zkCli.sh (2)通过 ls 命令可以查看 kafka 相关信息。 ls /kafka 4.1.2 Kafka Broker 总体工作流程…

C++类和对象——继承详解

目录 1.基本语法 2.继承方式 3.继承中的对象模型 4.构造和构析顺序 5.同名成员处理 6.同名静态成员处理 7.多继承语法 8.菱形继承 图片示例&#xff1a; 虚继承 代码示例&#xff1a; 1.基本语法 #include<bits/stdc.h> using namespace std;//公共页面类 …

招募Sui大使,共同构建Sui社区,解锁专属福利

我们非常激动地宣布推出新一轮的Sui大使计划&#xff0c;这是围绕Sui创新技术构建全球社区的关键举措。 大使计划赋予了热衷于Sui使命并渴望在Sui社区和受众中传播意识的个人以权力。Sui大使体现了网络的价值观&#xff0c;并通过战略性和有影响力的行动加速了采用过程。我们很…

PFA洗气瓶配空气采样泵用PFA气体吸收瓶的特点

PFA洗气瓶是一种洗去气体中杂质的器皿&#xff0c;是将不纯气体通过选定的适宜液体介质鼓泡吸收&#xff08;溶解或由于发生化学反应&#xff09;&#xff0c;从而洗去杂质气体&#xff0c;以达净化气体的目的。在设计时&#xff0c;四氟球的周围都布满小孔。一般情况下&#x…

在字节划水的7年,太真实了。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试这条路是坎坷的&#xff0c;我自己深有体会。 我们的起点低…

02_debugfsLinux内核模块

01_basicLinux内核模块-CSDN博客环境IDubuntuMakefilemodules:clean:basic.creturn 0;运行效果。https://blog.csdn.net/m0_37132481/article/details/136157384?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22136157384%22%2C%…

分享一个学英语的网站

名字叫&#xff1a;公益大米网​​​​​​​ Freerice 这个网站是以做题的形式来记忆单词&#xff0c;题干是一个单词&#xff0c;给出4个选项&#xff0c;需要选出其中最接近题干单词的选项。 答对可以获得10粒大米&#xff0c;网站的创办者负责捐赠。如图 触发某些条件&a…

红队APT-钓鱼篇_邮件钓鱼_Ewomail系统_网页克隆

目录 演示案例:Ewomail&Swaks-邮件伪造发信人Ewomail-邮件系统-搭建&使用Ewomail&Gophish-邮件加网页钓鱼网页钓鱼-克隆修改-二维码用户劫持网页钓鱼-克隆修改-Flash升级后门上线 演示案例: Ewomail&Swaks-邮件伪造发信人 发邮件的邮箱地址如果能伪造的话&am…

windows安装Mysql解压版

windows安装Mysql解压版 一、下载mysql-8.0.36-winx64.zip二、解压三、配置3.1. 添加环境变量&#xff1a;新建MYSQL_HOME3.2.如何验证是否添加成功&#xff1a;必须以管理员身份启动3.3. 初始化MySQL&#xff1a;必须以管理员身份启动3.4. 注册MySQL服务&#xff1a;必须以管理…

python-自动化篇-办公-将PDF文件转存为图片

因工作中的某些奇葩要求&#xff0c;需要将PDF文件的每页内容转存成按顺序编号的图片。用第三方软件或者在线转换也可以&#xff0c;但批量操作还是Python方便&#xff0c;所谓搞定办公自动化&#xff0c;Python出山&#xff0c;一统天下&#xff1b;Python出征&#xff0c;寸草…

【测试运维】性能测试经验文档总结第3篇:VuGen详解(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论性能测试相关知识。入门阶段&#xff1a;认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试)&#xff0c;常用性能测试指标-(吞吐量、并发数、响应时间、点击数...)&#xff0c;性能测试工具选择。性能脚本&…

【STM32】软件SPI读写W25Q64芯片

目录 W25Q64模块 W25Q64芯片简介 硬件电路 W25Q64框图 Flash操作注意事项 状态寄存器 ​编辑 指令集 INSTRUCTIONS​编辑 ​编辑 SPI读写W25Q64代码 硬件接线图 MySPI.c MySPI.h W25Q64 W25Q64.c W25Q64.h main.c 测试 SPI通信&#xff08;W25Q64芯片简介&am…

IT行业高含金量证书全解析:开启职业生涯新篇章

在快速发展的IT行业&#xff0c;持续学习和专业认证是提升个人竞争力的重要途径。全球范围内存在着众多的IT认证&#xff0c;它们不仅能够验证你的技术能力&#xff0c;还能在求职和职业晋升中起到关键作用。 本篇博客将深入探讨IT行业中部分高含金量的证书&#xff0c;包括中…

探索设计模式的魅力:掌握命令模式-解锁软件设计的‘遥控器’

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;并且坚持默默的做事。 引言&#xff1a;探索命令模式的奥秘 软件设计领域充满挑战与机遇&#xff0c;命令模式…