Java:HTTP/HTTPS

HTTP

HTTP(全称"超文本传输协议")是一种应用最广泛的应用层协议;

文本=>字符串 超文本:可以传输文本,图片,语言等等其他的各种数据...

HTTP各种应用场景:

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

2.打开手机APP;

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

HTTPS可以认为是HTTP的升级版,和HTTP的差别在于引入了一层"加密层";

除了安全性之外,HTTP和HTTPS就是完全一样的;

HTTP协议是一种经典的"一问一答"式的模型:

客户端发一个请求,服务器返回一个响应;(一一对应)

---------------------------------------------------------------------------------------------------------------------------------

HTTP报文格式:        

可以借助抓包工具,来观察到HTTP详细的请求/响应的详细情况.

TCP/UDP也是可以抓包的,日常开发中比较少抓,但是HTTP是经常抓的;

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

代理又分为正向代理和反向代理;

正向代理:给客户端当代理;

反向代理:给服务器当代理;

压缩:在二进制的角度上对数据进行重新编码,保证信息量不变,体积缩小;

体积小了,在网络传输中消耗的带宽资源(最贵的硬件资源)就少了,就是用CPU资源换带宽资源;

---------------------------------------------------------------------------------------------------------------------------------

浏览器看到的网页,就是由HTML,CSS,JavaScript构成,返回一个HTML给浏览器就是HTTP非常经典的场景;

发送HTTP请求,就是往TCP socket中,按照一定格式,写入一段字符串;

收到HTTP响应,就是从TCP socket中,读出一段字符串再解析;

以下是一个HTTP请求的抓包结果:        

首行

HTTP请求的方法(描述这个请求的动作) + URL访问的资源是什么 + HTTP的版本号

请求头(Header)

从第二行开始的若干行,一直到空行结束;

每一行都是一个键值对,键值之间使用": "分割;

HTTP中,请求头的键值对都有哪些,是HTTP标准规定的,不同的请求头都有特定的含义;

标准也允许用户自定义一些请求头;

空行

请求头的结束标志;

正文(body)

不是一定有的;一般是要提交的数据;

---------------------------------------------------------------------------------------------------------------------------------

以下是一个HTTP响应的抓包结果:   

首行

版本号 + 状态码(成功[200]/失败/失败原因) + 状态码的描述;

响应头(Header)

从第二行开始的若干行,一直到空行结束;

每一行都是一个键值对,键值之间使用": "分割;

也是标准规定的,有的键值对只能出现在请求中,有的只能出现在响应中,有的都能出现;

空行

响应头的结束标志;

正文

对应响应来说,正文通常是HTML/CSS/JSON/JS/图片/音频/字体....

-------------------------------------------------------------------------------------------------------------------------------

URL(唯一资源定位符)

互联⽹上的每个⽂件都有⼀个唯⼀的URL,

它包含的信息指出⽂件的位置以及浏览器应该怎么处理它.

URL不是HTTP专属的,很多协议都会用到;

补充:URI(唯一资源标识符),可以简单的理解为URL是URI的一种实现;

URL结构组成

协议方案名:

指出URL是给哪个协议来服务的;

登录信息(认证):

这种身份认证方式已经废弃了,都是有个单独的登录页面;

服务器地址:

可以是IP也可以是域名;

服务器端口号:

不写端口号的时候,服务器会根据协议类型自动拼接一个端口号,不是随机分配空闲端口,描述的是服务器的端口,是固定的;

如果是HTTP协议,浏览器自动加上80端口; 如果是HTTPS协议,浏览器自动加上443端口;

带层次的文件路径:

确定服务器上的具体资源;

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

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

相关文章

【Promise】JS 异步之宏队列与微队列

文章目录 1 原理图2 说明3 相关面试题3.1 面试题13.2 面试题23.3 面试题33.4 面试题4 1 原理图 2 说明 JS 中用来存储待执行回调函数的队列包含 2 个不同特定的队列:宏队列和微队列。宏队列:用来保存待执行的宏任务(回调),比如:定…

用 Python 从零开始创建神经网络(二):第一个神经元的进阶

第一个神经元的进阶 引言1. Tensors, Arrays and Vectors:2. Dot Product and Vector Additiona. Dot Product (点积)b. Vector Addition (向量加法) 3. A Single Neuron with NumPy4. A Layer of Neurons with NumPy5…

【优选算法 — 滑动窗口】最大连续1的个数 将 x 减到0的最小操作数

最大连续1的个数 最大连续1的个数 题目描述 题目解析 给我们一个元素全是0或者1的数组&#xff0c;和一个整数 k &#xff0c;然后让我们在数组选出最多的 k 个0&#xff1b;这里翻转最多 k 个0的意思&#xff0c;是翻转 0 的个数< k&#xff0c;而不是一定要翻转 k …

各种排序分组

简易排序方法如下: public static void XX(){var circles Z.db.SelectEntities<Circle>();circles circles.OrderByDescending(x > x.Center.Y).ThenBy(x > x.Center.X).ToList();for (int i 0; i < circles.Count; i){DBText text new DBText() { Positi…

RK3288 android7.1 适配 ilitek i2c接口TP

一&#xff0c;Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器&#xff0c;如 ILI6480、ILI9341 等&#xff0c;采用 I2C 接口。 这些控制器能够支持多点触控&#xff0c;并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时&am…

DICOM图像知识:DICOM图像排序与坐标系解析

目录 引言 1. 概述 2. DICOM图像排序规则 2.1 Patient的Study按Study Date排序 2.2 Study的Series按Series Number排序 2.3 Series的SOP按Instance Number或Slice Location排序 2.3.1 Instance Number排序 2.3.2 Slice Location排序 2.3.3 使用Image Position (Patien…

Js — 定时器

有两种&#xff1a;setInterval 和 setTimeout 间隔时间单位为毫秒 setInterval 每隔指定的毫秒数重复执行一个函数或代码 开启定时器&#xff1a;setInterval(函数&#xff0c;间隔时间) 作用&#xff1a;每隔一段时间调用这个函数 注意&#xff1a;它不是立即执行&#x…

其他教程:如何设计一个App扫码登录功能,来实现免账号密码登录功能,仅供参考

–本次教程是给大家列举一下常见的扫码登录功能&#xff0c;小程序或app均可参考&#xff0c;如需更安全的模式可多次设计加工&#xff0c;本次只列举概念层面的实现方式

ChatGPT键盘快捷键(按ctrl + /呼出)

文章目录 ChatGPT键盘快捷键- 打开新聊天: Ctrl Shift O- 聚焦聊天输入: Shift Esc- 复制最后一个代码块: Ctrl Shift ;- 复制最后一个回复: Ctrl Shift C- 设置自定义指令: Ctrl Shift I- 切换边栏: Ctrl Shift S- 删除聊天: Ctrl Shift ⌫- 显示快捷方式: Ctrl …

AWTK-HarmonyOS NEXT 发布

AWTK 全称为 Toolkit AnyWhere&#xff0c;是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎&#xff0c;支持跨平台同步开发&#xff0c;一次编程&#xff0c;到处编译&#xff0c;跨平台使…

【开发】Java的内存溢出

Java之内存溢出 Java之内存溢出 | OutOfMemoryError 我们都知道&#xff0c;在Java的世界里&#xff0c;由JVM管理着Java中的“垃圾对象”&#xff0c;也就是不被引用的对象&#xff1b;当一个对象不被其它对象引用的时候&#xff0c;该对象就会被垃圾回收器清理掉。但是在某些…

EasyExcel的AbstractColumnWidthStyleStrategy注入CellStyle不生效

设置背景色 CellStyle style workbook.createCellStyle();style.setFillForegroundColor(IndexedColors.RED.getIndex()); // 是设置前景色不是背景色style.setFillPattern(FillPatternType.SOLID_FOREGROUND)EasyExcel.writerTable(0).head(Head1.class).registerWriteHandl…

【51单片机】LED点阵屏 原理 + 使用

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LED点阵屏显示原理74HC595 编码LED点阵屏显示笑脸LED点阵屏显示动画 LED点阵屏 点阵屏在开发板的右上角&#xff0c;注意使用前需要…

深度学习-张量相关

一. 张量的创建 张量简介 张量是pytorch的基本数据结构 张量&#xff0c;英文为Tensor&#xff0c;是机器学习的基本构建模块&#xff0c;是以数字方式表示数据的形式。 例如&#xff0c;图像可以表示为形状为 [3, 224, 224] 的张量&#xff0c;这意味着 [colour_channels, h…

使用vite构建一个react网站,并部署到Netlify上

这篇教程中&#xff0c;我会教你如何用vite快速构建一个react网站&#xff0c;并把网站免费部署到Netlify上&#xff0c;让别人可以经由网址访问你的react网站。 1. 使用vite构建基础框架 npm create vitelatestcd vite-project npm install npm run dev2. 网站内容设计 3. 构…

Fastify Swagger:自动化API文档生成与展示

在现代软件开发中&#xff0c;API文档的生成和维护是一个不可或缺的环节。Fastify Swagger 是一个专为 Fastify 框架设计的插件&#xff0c;它能够自动生成符合 Swagger&#xff08;OpenAPI v2 或 v3&#xff09;规范的文档&#xff0c;从而帮助开发者轻松创建和维护API文档。本…

【网络原理】万字详解 UDP 和 TCP

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. UDP1.1 UDP 报文格式1.1.1 源端口/目的端口1.1.2 报文长度1.1.3 校验和 2. TCP2.1 TCP 报文结构2.2 TCP 特…

Go 中的泛型,日常如何使用

泛型从 go 的 1.18 开始支持 什么是泛型编程 在泛型出现之前&#xff0c;如果需要计算两数之和&#xff0c;可能会这样写&#xff1a; func Add(a, b int) int {returb a b } 这个很简单&#xff0c;但是只能两个参数都是 int 类型的时候才能调用 如果想要计算两个浮点数…

IoTDB 与 HBase 对比详解:架构、功能与性能

五大方向&#xff0c;洞悉 IoTDB 与 HBase 的详尽对比&#xff01; 在物联网&#xff08;IoT&#xff09;领域&#xff0c;数据的采集、存储和分析是确保系统高效运行和决策准确的重要环节。随着物联网设备数量的增加和数据量的爆炸式增长&#xff0c;开发者和决策者们需要选择…

单片机串口接收状态机STM32

单片机串口接收状态机stm32 前言 项目的芯片stm32转国产&#xff0c;国产芯片的串口DMA接收功能测试不通过&#xff0c;所以要由原本很容易配置的串口空闲中断触发DMA接收数据的方式转为串口逐字节接收的状态机接收数据 两种方式各有优劣&#xff0c;不过我的芯片已经主频跑…