网络原理-HTTP

HTTP是什么

HTTP(全称为"超⽂本传输协议")是⼀种应⽤⾮常⼴泛的应⽤层协议.

文本:字符串;超文本:不仅仅是字符串,还可以携带一些图片/特殊的格式.

HTTP往往是基于传输层的TCP协议实现的(HTTP1.0,HTTP1.1,HTTP2.0均有TCP协议实现,HTTP3.0由UDP协议实现).目前主流使用的是HTTP1.1与HTTP2.0.

当我们在浏览器输入一个网址(URL),浏览器就会给对应的服务器发送一个HTTP请求,服务器收到请求后返回一个HTTP响应,浏览器对响应进行解析后,我们就看到了展示的画面.

理解应用层协议

我们已经学过 TCP/IP ,已经知道⽬前数据能从客⼾端进程经过路径选择跨⽹络传送到服务器端进程[ IP+Port ].仅仅把数据从A传输到B就好了吗?我们把数据从A端传送到B端,TCP/IP 解决的是传输的功能,而两端还要对数据进⾏加⼯处理或者使⽤,所以我们还需要⼀层协议,不关⼼通信细节,关⼼应⽤细节.这一层就是应用层协议,HTTP就是这些协议中的一员.

HTTP的工作过程

当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个HTTP请求,对端服务器收到请求后,返回一个HTTP响应.事实上,我们访问一个网址时,可能涉及不止一次的HTTP请求/响应.

HTTP协议格式

要了解HTTP协议的格式,首先要获取一个HTTP包.

抓包工具的使用

这里使用Fiddler.

Fiddler界面如图,图中:

左侧窗⼝显⽰了所有的HTTP请求/响应,可以选中某个请求查看详情.蓝色的记录标识浏览器发送的HTTP请求成功获取响应的情况.

右侧上⽅显⽰了HTTP请求的报⽂内容.(切换到Raw标签⻚可以看到详细的数据格式)

右侧下⽅显⽰了HTTP响应的报⽂内容.(切换到Raw标签⻚可以看到详细的数据格式)

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

抓包工具的原理

Fidder相当于一个"代理",在浏览器与服务器中间进行解析和转发.当浏览器发送请求时,Fidder先获取到这个请求,存在软件中,再将请求发送给服务器.服务器进行响应时,Fidder先收到响应,保存再软件中,再返回给浏览器展示.因此,Fidder就能获取到浏览器与服务器之间交互的信息.

抓包结果

HTTP请求

这是一个HTTP请求再记事本中打开的格式.

首行:方法 + url + 版本.中间用空格隔开.

Header:请求的属性,冒号分割的键值对;每组属性之间使用\n进行分割,当遇到空行时,首部结束.

Body:请求的载荷,当body存在时,header中会存在一个Content-Length属性来标识Body的⻓度,上图请求中没有Body.

HTTP响应

这是一个HTTP响应在记事本中打开的格式.

首行:版本号+状态码+状态码解释.中间用空格隔开.

Header:响应的属性,冒号分割的键值对;每组属性之间使用\n进行分割,当遇到空行时,首部结束.

Body:响应的载荷,当body存在时,header中会存在一个Content-Length属性来标识Body的⻓度,上图中载荷为要请求页面的信息.

协议格式总结

相关推荐
左手厨刀右手茼蒿6 小时前
Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构
网络·flutter·http
江南风月7 小时前
日志审计系统WGLOG支持syslog吗
运维·网络·日志审计
Blurpath住宅代理7 小时前
代理IP全面解析:从协议原理到高阶应用场景的技术指南
网络·静态ip·动态代理·住宅ip·住宅代理
晏宁科技YaningAI8 小时前
全球短信路由系统设计逻辑打破 80%送达率瓶颈:工程实践拆解
网络·网络协议·架构·gateway·信息与通信·paas
WIN-U610 小时前
新版华三H3C交换机配置NTP时钟步骤 示例(命令及WEB配置)
网络协议·tcp/ip·http
爱学习的小囧10 小时前
ESXi 8.0 无法选择分区方式 小白级详细解决办法
运维·服务器·网络·虚拟化·esxi8.0
F1FJJ10 小时前
什么是 Shield CLI?视频讲解:一条命令,可浏览器远程访问一切内部服务(RDP/VNC/SSH/数据库等)
运维·网络·数据库·网络协议·ssh
南湖北漠10 小时前
听说拍照的人会拿相似的鱼皮豆代替野生鹌鹑蛋拍照(防原创)
网络·人工智能·计算机网络·生活
一个有温度的技术博主10 小时前
网安实验系列四:信息收集-旁站、C段信息
网络
木下~learning10 小时前
对于Linux中等待队列和工作队列的讲解和使用|RK3399
linux·c语言·网络·模块化编程·工作队列·等待队列