【计算机网络】深度学习使用应用层的HTTP协议



💓 博客主页:从零开始的-CodeNinja之路
⏩ 收录文章:【计算机网络】深度学习使用应用层的HTTP协议
🎉欢迎大家点赞👍评论📝收藏⭐文章
文章目录
- 一:HTTP是什么
- 二:HTTP请求
- 1.HTTP请求的组成
- 2.HTTP请求的方法
- GET方法
- POST方法
- 经典面试题:谈谈GET和POST的区别
- 3.HTTP请求的URL
- 4.请求报头
- 三:HTTP响应
- 1.HTTP响应的组成
- 2.HTTP响应的状态码
- 3.HTTP响应报头(header)
- 四:form表单构造HTTP请求
- 1.form发送GET请求
- 2.体会form代码和HTTP请求之间的对应关系
一:HTTP是什么
HTTP(全称为"超本文传输协议")是⼀种应用非常广泛的应用层协议.
例:我们平时打开⼀个网站,就是通过HTTP协议来传输数据的.
当我们在浏览器中输入⼀个搜索的"网址"(URL)时,浏览器就给搜狗的服务器发送了一个HTTP请求,搜狗的服务器返回了⼀个HTTP响应.
这个响应结果被浏览器解析之后,就展示成我们看到的页面内容.(这个过程中浏览器可能会给服务器发送多个HTTP请求,服务器会对应返回多个响应,这些响应里就包含了页面HTML,CSS,JavaScript,图片,字体等信息).

HTTP协议包含两大部分,一部分是HTTP请求,一部分是HTTP响应部分
二:HTTP请求
1.HTTP请求的组成
- 首行:[方法]+[url]+[版本]
- Header(请求头):请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
- 空行:请求头下会有一个空行,表示结束标志
- Body(请求正文):空行后面的内容都是Body.Body允许为空字符串.如果Body存在,则在Header中会有⼀个
Content-Length属性来标识Body的长度;
2.HTTP请求的方法

所用最多的是Get和POST方法,其它方法作为了解即可
- PUT与POST相似,只是具有幂等特性,⼀般用于更新
- DELETE删除服务器指定资源
- OPTIONS返回服务器所支持的请求方法
- HEAD类似于GET,只不过响应体不返回,只返回响应头
- TRACE回显服务器端收到的请求,测试的时候会用到这个 CONNECT预留
GET方法
GET是最常用的HTTP方法.常用于获取服务器上的某个资源.
在浏览器中直接输入URL,此时浏览器就会发送出⼀个GET请求.
另外,HTML中的link,img,script等标签,也会触发GET请求.
GET请求的特点:
- 首行的第⼀部分为GET URL的query string可以为空,也可以不为空.
- header部分有若干个键值对结构.
- body部分为空.
POST方法
POST方法也是⼀种常见的方法.多用于提交用户输入的数据给服务器(例如登陆页面).
通过HTML中的form标签可以构造POST请求,或者使用JavaScript的ajax也可以构造POST请求.
POST请求的特点
- 首行的第⼀部分为POST
- URL的query string⼀般为空(也可以不为空)
- header部分有若干个键值对结构.
- body部分⼀般不为空.body内的数据格式通过header中的 Content-Type指定.body的长度由header中的Content-Length 指定.
经典面试题:谈谈GET和POST的区别
- 语义不同:GET⼀般用于获取数据,POST⼀般用于提交数据.
- GET的body⼀般为空,需要传递的数据通过query string传递,POST的query string⼀般为空,需 要传递的数据通过body传递
- GET请求⼀般是幂等的,POST请求⼀般是不幂等的.(如果多次请求得到的结果⼀样,就视为请求是 幂等的).
- GET可以被缓存,POST不能被缓存.(这⼀点也是承接幂等性).
补充说明:
- 关于语义:GET完全可以用于提交数据,POST也完全可以用于获取数据.
- 关于幂等性:标准建议GE实现为幂等的.实际开发中GET也不必完全遵守这个规则(主流网站都有 "猜你喜欢"功能,会根据用户的历史行为实时更新现有的结果.
- 关于安全性:有些资料上说"POST比GET请安全".这样的说法是不科学的.是否安全取决于前端在 传输密码等敏感信息时是否进行加密,和GET POST无关.
- 关于传输数据量:有的资料上说"GET传输的数据量小,POST传输数据量大".这个也是不科学的,标准没有规定GET的URL的长度也没有规定POST的body的长度.传输数据量多少,完全取决于不
同浏览器和不同服务器之间的实现区别.- 关于传输数据类型:有的资料上说"GET只能传输文本数据,POST可以传输⼆进制数据".这个也是 不科学的.GET的query string虽然无法直接传输⼆进制数据,但是可以针对⼆进制数据进行url encode.
3.HTTP请求的URL

例:https://v.bitedu.vip/personInf/student?userId=10000&classId=100
- https :协议方案名.常见的有http和https,也有其他的类型.(例如访问mysql时用的jdbc:mysql )
- user:pass :登陆信息.现在的网站进行身份认证⼀般不再通过URL进行了.⼀般都会省略
- v.bitedu.vip :服务器地址.此处是⼀个"域名",域名会通过DNS系统解析成⼀个具体的IP地 址.(通过ping命令可以看到,
v.bitedu.vip 的真实IP地址为 118.24.113.28 ) - 端口号:上面的URL中端口号被省略了.当端口号省略的时候,浏览器会根据协议类型自动决定使用
哪个端⼝.例如http协议默认使通80端口,https协议默认使用443端 - /personInf/student :带层次的文件路径.
- userId=10000&classId=100 :查询字符串(query string).本质是⼀个键值对结构.键值对之
间使⽤&分隔.键和值之间使用=分隔. - 片段标识:此URL中省略了片段标识.片段标识主要用于页面内跳转.
4.请求报头
- header的整体的格式也是"键值对"结构.每个键值对占一行.键和值之间使用分号分割.
- Host:表示服务器主机的地址和端口.
- Content-Length:表示body中的数据长度.
- Content-Type:表示请求的body中的数据格式.
- User-Agent(简称UA):表示浏览器/操作系统的属性.
- Referer:表示这个页面是从哪个页面跳转过来的.
- Cookie:Cookie中存储了⼀个字符串,这个数据可能是客户端(网页)自行通过JS写入的,也可能来自于服务器 (服务器在HTTP响应的header中通过Set-Cookie字段给浏览器返回数据).
三:HTTP响应
1.HTTP响应的组成
- 首行:[版本号]+[状态码]+[状态码解释]
- Header(响应头):请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
- 空行:响应头下会有一个空行,表示结束标志
- Body(响应正文):空行后面的内容都是Body.Body允许为空字符串.如果Body存在,则在Header中会有⼀个
Content-Length属性来标识Body的长度;如果服务器返回了⼀个html页面,那么html页面内容就是在body中.
2.HTTP响应的状态码

例如:几个最常见的状态码
- 200 OK 这是⼀个最常见的状态码,表示访问成功.
- 301 Moved Permanently
永久重定向.当浏览器收到这种响应时,后续的请求都会被自动改成新的地址.也是通过Location字段来表示要重定向到的新地址. - 302 Move temporarily 临时重定向.实现登陆成功后自动跳转到主页.
- 403 Forbidden 表示访问被拒绝.有的页面通常需要用户具有⼀定的权限才能访问(登陆后才能访问).如果用户没有登陆 直接访问,就容易见到403.
- 405 Method Not Allowed 前面我们已经学习了HTTP中所支持的方法,有GET,POST,PUT,DELETE等.但是对方的服务器不⼀定都持支所有的方法(或者不允许用户使用一些其他的方法).
- 500 Internal Server Error
服务器出现内部错误.⼀般是服务器的代码执行过程中遇到了⼀些特殊情况(服务器异常崩溃)会产生这 个状态码. - 504 Gateway Timeout 当服务器负载比较大的时候,服务器处理单条请求的时候消耗的时间就会很长,就可能会导致出现超时的情况.
3.HTTP响应报头(header)
响应报头的基本格式和请求报头的格式基本⼀致.
类似于 Content-Type , Content-Length 等属性的含义也和请求中的含义⼀致.
Content-Type
响应中的Content-Type常见取值有以下几种:
- text/html :body数据格式是HTML
- text/css :body数据格式是CSS
- application/javascript :body数据格式是JavaScript
- application/json :body数据格式是JSON
四:form表单构造HTTP请求
form(表单)是HTML中的⼀个常用标签.可以用于给服务器发送GET或者POST请求.
1.form发送GET请求
form的重要参数:
- action:构造的HTTP请求的URL是什么.
- method:构造的HTTP请求的⽅法是GET还是POST(form只⽀持GET和POST).
input的重要参数:
- type:表示输⼊框的类型.text表示文本,password表示密码,submit表示提交按钮.
- name:表示构造出的HTTP请求的query string的key.query string的value就是输⼊框的用户输入的内容.
- value:input标签的值.对于type为submit类型来说,value就对应了按钮上显示的文本.
<form action="http://abcdef.com/myPath" method="GET">
<input type="text" name="userId">
<input type="text" name="classId">
<input type="submit" value="提交">
</form>
2.体会form代码和HTTP请求之间的对应关系
form的action属性对应HTTP请求的URL
- form的method属性对应HTTP请求的方法
- input的name属性对应query string的key
- input的内容对应querystring的value

如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!💓 💓 💓
相关文章:
【计算机网络】深度学习使用应用层的HTTP协议
💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【计算机网络】深度学习使用应用层的HTTP协议 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录 一:HTTP是什么二:HTTP请求1.HTTP请求的组成2.HTTP请求的方法…...
Ubuntu18.04 系统上配置并运行SuperGluePretrainedNetwork(仅使用CPU)
SuperGlue是Magic Leap在CVPR 2020上展示的研究项目,它是一个图神经网络(Graph Neural Network)和最优匹配层(Optimal Matching layer)的结合,训练用于对两组稀疏图像特征进行匹配。这个项目提供了PyTorch代…...
协议-http协议-基础概念01-发展历程-http组成-http是什么-相关的应用-相关的协议
发展历程-http组成-http是什么-相关的应用-相关的协议 参考来源: 极客时间-透视HTTP协议(作者:罗剑锋); 01-HTTP的发展历程 1989 年,任职于欧洲核子研究中心(CERN)的蒂姆伯纳斯 - 李(Tim Ber…...
UI学习-学习内容
教程网址1:UI 新手如何从设计规范中提升自己 推荐一下高质量的设计规范 满屏干货 语雀 B站地址1:新像素 UI 新手如何从设计规范中提升自己 推荐一下高质量的设计规范 满屏干货 UI设计培训_哔哩哔哩_bilibili 教程地址2:UI 新手成长经验分享…...
Flink CDC 提取记录变更时间作为事件时间和 Hudi 表的 precombine.field 以及1970-01-01 取值问题
博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…...
【网络安全】网络安全意识教育实用指南
随着科技的不断发展和数字世界的变革,我们不仅从中获得前所未有的力量,也同时面临着前所未有的风险挑战。多数CISO(首席信息安全官)时刻致力于协助企业抵御各种安全威胁。在“武器库”中有一件珍贵的法宝:网络安全意识…...
wordpress模板购买网站推荐
简站wordpress主题 老牌wordpress开发团队,开发过数百款wordpress主题,作品是最好的简历,靠作品说话,看作品喜欢不喜欢就可以了。 https://www.jianzhanpress.com WP模板牛 免费wordpress下载网站,上面有上百款免费…...
LeetCode 刷题 [C++] 第240题.搜索二维矩阵 II
题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题目分析 通过分析矩阵的特点发现,其左下角和右上角可以看作一个“二叉搜索树的根节…...
HP笔记本电脑如何恢复出厂设置?这里提供几种方法
要恢复出厂设置Windows 11或10的HP笔记本电脑,你可以使用操作系统的标准方法。如果你运行的是早期版本,你可以使用HP提供的单独程序清除计算机并重新安装操作系统。 恢复出厂设置运行Windows 11的HP笔记本电脑 所有Windows 11计算机都有一个名为“重置此电脑”的功能,可…...
Elasticsearch:了解人工智能搜索算法
作者:来自 Elastic Jessica Taylor, Aditya Tripathi 人工智能工具无处不在,其原因并不神秘。 他们可以执行各种各样的任务并找到许多日常问题的解决方案。 但这些应用程序的好坏取决于它们的人工智能搜索算法。 简单来说,人工智能搜索算法是…...
(HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
一、电路接法 电路接法参照江科大视频。 二、相关代码及文件 说明:代码采用hal库,通过修改江科大代码实现。仅OLED.c文件关于引脚定义作了hal库修改,并将宏定义OLED_W_SCL(x)、OLED_W_SDA(x)作了相关修改。 1、OLED.c void OLED_I2C_Init(voi…...
分享便携式血氧仪单片机方案
血氧仪主要测量指标分别为脉率、血氧饱和度、灌注指数。血氧饱和度是临床医疗上重要的基础数据之一。以家用指压式血氧仪为例,一个血氧仪一般由MCU、存储芯片、两个控制LED的数模转换器、两个发光二极管驱动等组成。 灵动微电子的MM32MCU产品已被广泛地应用在了一些…...
【Java设计模式】四、适配器模式
文章目录 1、适配器模式2、举例 1、适配器模式 适配器模式Adapter Pattern,是做为两个不兼容的接口之间的桥梁目的是将一个类的接口转换成客户希望的另外一个接口适配器模式可以使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 最后,适配器…...
RV32/64 特权架构 - 特权模式与指令
RV32/64 特权架构 - 特权模式与指令 1 特权模式2 特权指令2.1 mret(从机器模式返回到先前的模式)2.2 sret(从监管模式返回到先前的模式)2.3 wfi(等待中断)2.4 sfence.vma(内存屏障) …...
多微服务合并为一个服务
公司微服务细分太多,最近跟我提说需要将几个微服务合为单体,经过几天的查阅,决定用二次打包的方式进行合并,然后部署的时候在nginx改下合并的微服务转发路劲即可,不需要前端修改路劲了。 方案 采用二次打包的方式进行…...
Springboot企业级开发--开发入门01
目录 目录 一.Spring Boot的主要特点和优势包括: 二.Spring Boot的核心功能可以归纳为以下几点: 三.Springboot是如何解决问题? Spring Boot 是一个开源的Java框架,其设计目标是为了简化新Spring应用的初始搭建以及开发过程。…...
bash和sh和./的区别
bash和sh和./的区别 今天在执行一个脚本的时候,用的是sh script.sh,执行报错,使用bash script.sh执行时就能成功,才知道sh和bash是不一样的 sh sh表示 Bourne Shell,是 Unix 系统上的一种基本的命令解释器。它也可以…...
LeetCode 3:寻找最长不含重复字符的子串长度
LeetCode 3:寻找最长不含重复字符的子串长度 在字符串处理中,寻找最长不含重复字符的子串长度是一个经典问题。 问题描述 给定一个字符串 s ,我们需要找出其中不含有重复字符的最长子串的长度。 解决方案 我们可以使用滑动窗口的方法来解…...
【自然语言处理四-从矩阵操作角度看 自注意self attention】
自然语言处理四-从矩阵操作角度看 自注意self attention 从矩阵角度看self attention获取Q K V矩阵注意力分数softmax注意力的输出再来分析整体的attention的矩阵操作过程从矩阵操作角度看,self attention如何解决问题的?W^q^ W^k^ W^v^这三个矩阵怎么获…...
Unity脚本,串行端口的握手协议(流控制)
在Unity的SerialPort构造函数中,流控制并没有被直接包含。流控制,也被称为握手,是一种过程,它管理数据的传输速度,以防止接收方被发送方发送的数据量所淹没。 在.NET的SerialPort类中,流控制是通过Handshak…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
OCC笔记:TDF_Label中有多个相同类型属性
注:OCCT版本:7.9.1 TDF_Label中有多个相同类型的属性的方案 OCAF imposes the restriction that only one attribute type may be allocated to one label. It is necessary to take into account the design of the application data tree. For exampl…...
Android Settings 数据库生成、监听与默认值配置
一、Settings 数据库生成机制 传统数据库生成(Android 6.0 前) 路径:/data/data/com.android.providers.settings/databases/settings.db创建流程: SQL 脚本初始化:通过 sqlite 工具创建数据库文件…...
fast-reid部署
配置设置: 官方库链接: https://github.com/JDAI-CV/fast-reid# git clone https://github.com/JDAI-CV/fast-reid.git 安装依赖: pip install -r docs/requirements.txt 编译:切换到fastreid/evaluation/rank_cylib目录下&a…...
