【Javaee】网络原理—http协议(一)

前言

本篇文章将详细介绍http协议,将介绍http抓包工具的下载与使用。

目录

一.http协议初识

1.概念

2.特点

1)版本

2)工作方式

二.http抓包工具

1.抓包是什么

2.抓包软件下载(Fiddler)

3.使用

三.http格式

1.http请求的基本格式

1)首行

2)请求头(header)

3)空行

4)正文

2.http响应的基本格式

1)首行

2)响应头

3)空行

4)正文

四.URL


一.http协议初识

1.概念

 http协议(全程为“超文本传输协议”)是一种应用非常广泛的应用层协议

http不仅能够传输文本,还能传输图片,音频,视频等其他各种数据,广泛应用于日常开发的各种场景之中。

例如:

1.使用浏览器,打开网页

2.打开手机app

3.后端程序,分布式/微服务体系结构

服务器之间的调用,大概率也是http协议

2.特点

1)版本

http协议版本3.0前,都是基于TCP协议。3.0是基于UDP协议。

其中 ,互联网见到http协议,以1.1版本为主流

2)工作方式

http协议是一种典型的一问一答协议(客服端发一个请求,服务器返回一个响应,一 一对应)

例如打开网页就是典型的一问一答

除一问一答模式外,还有一问多答多问一答多问多答

一问多答:下载一个大的文件

多问一答:上传一个大的文件

多问多答:远程桌面

二.http抓包工具

1.抓包是什么

抓包是把通过网卡的数据获取到,并解析出来

借助抓包软件,我们可以观察http请求/响应的详细情况

TCP/UDP都可以抓包,但在日常开发中,很少会抓TCP层次的包,抓http的包比较常见。

电脑与服务器传输数据时,在二者之间加一个关卡(抓包程序),每次数据传输过程必须经过经过这个关卡,再转发给服务器,服务器同理。

此时,这个关卡就能获取到数据,这个程序也被称为“代理”。

2.抓包软件下载(Fiddler)

首先进入官方:https://www.telerik.com/fiddler

点击下载

随便填写好,下载,更改路径,一路next安装好,打开应用

第一次配置时,会弹出一个弹窗,点击yes,如果点了no,就得卸掉重下了。

3.使用

打开Fiddler后,我们会在左侧看到大量的数据包,因为Fiddler会把应用程序的数据包都截取到,即使不打开网站,数据包也会蹦出来。

为了方便抓包,我们可以Ctrl+a全部选中,再Delete进行清空

我们打开bilibili的网站,Fiddler就会截取数据包

我们选择该数据包,点击raw标签查看原始数据

我们点击View in Notepad,可以用记事本打开该数据包。

以上便是http的抓包过程。

三.http格式

1.http请求的基本格式

1)首行

以上述抓包为例

此段为行首

为http请求的方法(method),表示要做什么操作

为URL

为版本号

2)请求头(header)

请求行是从第二行开始,一直到空行结束

每一行都是键值对结构。

3)空行

请求头的结束,啥都没有。

若是数据包由正文,则在空行后接上

4)正文

有一些数据包有正文,有一些无正文

此数据包为有正文的数据包

此为正文段,记录着用户输入的信息

2.http响应的基本格式

响应报文的结构与请求报文的结构非常相似,但也略有不同

1)首行

HTTP/1.1 200 OK

HTTP/1.1表示版本

200表示状态码

OK表示状态码的说明

2)响应头

与请求报文的请求头类似

3)空行

响应头的结束位置,若有正文,则接在空行的后面

4)正文

{"msg":"操作成功","code":200,"token":"eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjozMTMxMCwidXNlcl9rZXkiOiIxYTNkYzcxMC1hNzFhLTQ2YWItYjMzMS1iNWM2YzMwNWVhODciLCJ1c2VybmFtZSI6InhpZXl1bWluZyJ9.JcfyfzD6lBb5cnOTOMkwRsy64Son3sgAXbcnw91nW5_SdNbqn8gotrt7uoCncHvgcQQt4QZnVcxu_Bs0IeVcXw"}
0

四.URL

URL,唯一资源定位符,用于定位网络资源。

随便以一个URL为例:https://v.bitedu.vip/personInf/student?userId=10000&classId=100

https:// :协议方案名,常见的有http和https(https是http+ssl,加密)

v.bitedu.vip :域名,会通过DNS协议解析成一个具体的IP地址

personInf/student :带层次的文件路径

userId=10000&classId=100 :查询字符串(query string),本质是一个键值对结构,键值对之间用“&”分隔,键与值用“=”分隔

URLencode

像/?:等这样的字符,已经被url当做特殊意义理解了.因此这些字符不能随意出现. 比如,某个参数中需要带有这些特殊字符,就必须先对特殊字符进⾏转义

转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不⾜4位直接处理),每2位做 ⼀位,前⾯加上%,编码成%XY格式

例如:

我们去浏览器搜索C++

“++”字符被转义成“%2B%2B”


以上便是全部内容,如有不对,欢迎指正

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

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

相关文章

04C++循环结构

//while 循环#include <iostream> using namespace std; int main() { int num0; while (num<10){ cout<<num<<endl; num; } return 0; } //do while语句 #include <iostream> using namespace std; int mai…

Appium中的api(一)

目录 1.基础python代码准备 1--参数的一些说明 2--python内所要编写的代码 解释 2.如何获取包名和界面名 1-api 2-完整代码 代码解释 3.如何关闭驱动连接 4.安装卸载app 1--卸载 2--安装 5.判断app是否安装 6.将应用放到后台在切换为前台的时间 7.UIAutomatorViewer的使用 1--找…

并联 高电压、高电流 放大器实现 2 倍输出电流模块±2A

1.1 并联输出电路设计注意事项 直接对两个功率运算放大器的输出进行硬接线并不是一种好的电气做法。如果两个运算放大器的输出直接连接在一起&#xff0c;则可能会导致不均匀的电流共享。这是因为其中的每个运算放大器都尝试强制施加略微不同的 Vout 电压&#xff0c;该电压取决…

vulnhub(16):sickos(两种打点方式)

端口 ip&#xff1a;192.168.72.154 nmap -Pn -p- 192.168.72.154 --min-rate 10000PORT STATE SERVICE 22 open ssh 3128 open http-proxy 8080 closed http-proxy web渗透方式一&#xff1a;web后台 正常访问80端口&#xff0c;是不开放的&#xff0c;我们需要配置…

高速定向广播声光预警系统赋能高速安全管控

近年来&#xff0c;高速重大交通事故屡见不鲜&#xff0c;安全管控一直是高速运营的重中之重。如何利用现代化技术和信息化手段&#xff0c;创新、智能、高效的压降交通事故的发生概率&#xff0c;优化交通安全管控质量&#xff0c;是近年来交管部门的主要工作&#xff0c;也是…

云原生Istio基础

一&#xff0e;Service Mesh 架构 Service Mesh&#xff08;服务网格&#xff09;是一种用于处理服务到服务通信的专用基础设施层。它的主要目的是将微服务之间复杂的通信和治理逻辑从微服务代码中分离出来&#xff0c;放到一个独立的层中进行管理。传统的微服务架构中&#x…

浅析Android View绘制过程中的Surface

前言 在《浅析Android中View的测量布局流程》中我们对VSYNC信号到达App进程之后开启的View布局过程进行了分析&#xff0c;经过对整个App界面的View树进行遍历完成了测量和布局&#xff0c;确定了View的大小以及在屏幕中所处的位置。但是&#xff0c;如果想让用户在屏幕上看到…

【十六进制数转十进制数 】

【十六进制数转十进制数 】 C语言版本C 版本Java版本Python版本 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 从键盘接收一个十六进制数&#xff0c;编程实现将其转换成十进制数。 输入 输入一个十六进制数 输出 输出一个十进制数 样…

GitHub 上的优质 Linux 开源项目,真滴硬核!

作为一名互联网人&#xff0c;提起 Linux 大家都不陌生&#xff0c;尤其是日常跟 Linux 操作系统打交道最多的&#xff0c;最熟悉不过了。互联网上关于 Linux 相关的教程和资料也非常的多&#xff0c;但是当你从中筛选出真正对自己有帮助的资料是需要花费很大精力与时间的。 G…

JVM基础(内存结构)

文章目录 内存结构JAVA堆方法区 &#xff08;Method Area&#xff09;运行时常量池&#xff08;Runtime Constant Pool&#xff09; 虚拟机栈 &#xff08;Java Virtual Machine Stack&#xff09;本地方法摘栈&#xff08;Native Method Stacks&#xff09;程序计数器&#xf…

交易的人生就是对未来不断的挑战!

在这个充满不确定性的市场中&#xff0c;我们每个人都渴望找到一条通往成功的路径。在Eagle Trader交易员中&#xff0c;有一位资深交易者&#xff0c;他不仅对交易有着不同寻常的执着和热爱&#xff0c;而且他的真诚见解和独到的交易哲学&#xff0c;可能会触动你的心弦。他的…

尚硅谷-react教程-求和案例-@redux-devtools/extension 开发者工具使用-笔记

## 7.求和案例_react-redux开发者工具的使用(1).npm install redux-devtools/extension(2).store中进行配置import { composeWithDevTools } from redux-devtools/extension;export default createStore(allReducer,composeWithDevTools(applyMiddleware(thunk))) src/redux/s…

OpenCV系列教程六:信用卡数字识别、人脸检测、车牌/答题卡识别、OCR

文章目录 一、信用卡数字识别1.1 模板匹配1.2 匹配多个对象1.3 处理数字模板1.4 预处理卡片信息&#xff0c;得到4组数字块。1.5 遍历数字块&#xff0c;将卡片中每个数字与模板数字进行匹配 二、人脸检测2.1人脸检测算法原理2.2 OpenCV中的人脸检测流程 三、车牌识别3.1 安装t…

一行代码,实现请假审批流程(Java版)

首先画一个流程图 测试流程图 activiti 项目基础配置 activiti 工作流引擎数据库设计 工作流引擎API 介绍 什么是BPMN流程图 工作流引擎同类对比 继续学习方向 总结 工作流审批功能是办公OA系统核心能力&#xff0c;如果让你设计一个工作流审批系统&#xff0c;你会吗…

SDK5(note中)

在原有SDK5(note上)里的代码上添加了 timer的消息 LRESULT OnCreate(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {OutputDebugString(_T("[11syy]WM_CREATE\n"));//创建一个计时器SetTimer(hwnd, 1, 1000, nullptr);return TRUE; }LRESULT OnClese(HWND …

全星魅 北斗三号船载终端的优势和领域利用

QM43BS型北斗三号船载终端&#xff1a;开启航海通信与定位新时代 在当今这个信息化高速发展的时代&#xff0c;航海领域对于通信与定位技术的需求愈发迫切。深圳市全民北斗科技有限公司&#xff0c;作为北斗技术应用领域的佼佼者&#xff0c;针对数传通信和位置服务应用&#x…

Python 实现深度学习模型预测控制--预测模型构建

链接&#xff1a;深度学习模型预测控制 链接&#xff1a;WangXiaoMingo/TensorDL-MPC: DL-MPC(deep learning model predictive control) is a software toolkit developed based on the Python and TensorFlow frameworks, designed to enhance the performance of tradition…

你了解kafka消息队列么?

消息队列概述 一. 消息队列组件二. 消息队列通信模式2.1 点对点模式2.2 发布/订阅模式 三. 消息队列的优缺点3.1 消息队列的优点3.2 消息队列的缺点 四. 总结 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&…

Android Junit 单元测试 | 依赖配置和编译报错解决

问题 为什么在依赖中添加了testImplement在build APK的时候还是会报错&#xff1f;是因为没有识别到test文件夹是test源代码路径吗&#xff1f; 最常见的配置有: implementation - 所有源代码集(包括test源代码集)中都有该依赖库.testImplementation - 依赖关系仅在test源代码…

理解磁盘结构---CHS---LAB---文件系统

1&#xff0c;初步了解磁盘 机械磁盘是计算机中唯的一个机械设备&#xff0c; 特点是慢&#xff0c;容量大&#xff0c;价格便宜。 磁盘上面的光面&#xff0c;由数不清的小磁铁构成&#xff0c;我们知道磁铁是有n&#xff0f;&#xff53;极的&#xff0c;这刚好与二进制的&…