当前位置: 首页 > news >正文

【计算机网络】深度学习使用应用层的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响应的状态码

在这里插入图片描述
例如:几个最常见的状态码

  1. 200 OK 这是⼀个最常见的状态码,表示访问成功.
  2. 301 Moved Permanently
    永久重定向.当浏览器收到这种响应时,后续的请求都会被自动改成新的地址.也是通过Location字段来表示要重定向到的新地址.
  3. 302 Move temporarily 临时重定向.实现登陆成功后自动跳转到主页.
  4. 403 Forbidden 表示访问被拒绝.有的页面通常需要用户具有⼀定的权限才能访问(登陆后才能访问).如果用户没有登陆 直接访问,就容易见到403.
  5. 405 Method Not Allowed 前面我们已经学习了HTTP中所支持的方法,有GET,POST,PUT,DELETE等.但是对方的服务器不⼀定都持支所有的方法(或者不允许用户使用一些其他的方法).
  6. 500 Internal Server Error
    服务器出现内部错误.⼀般是服务器的代码执行过程中遇到了⼀些特殊情况(服务器异常崩溃)会产生这 个状态码.
  7. 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协议

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【计算机网络】深度学习使用应用层的HTTP协议 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 一:HTTP是什么二:HTTP请求1.HTTP请求的组成2.HTTP请求的方法…...

Ubuntu18.04 系统上配置并运行SuperGluePretrainedNetwork(仅使用CPU)

SuperGlue是Magic Leap在CVPR 2020上展示的研究项目&#xff0c;它是一个图神经网络&#xff08;Graph Neural Network&#xff09;和最优匹配层&#xff08;Optimal Matching layer&#xff09;的结合&#xff0c;训练用于对两组稀疏图像特征进行匹配。这个项目提供了PyTorch代…...

协议-http协议-基础概念01-发展历程-http组成-http是什么-相关的应用-相关的协议

发展历程-http组成-http是什么-相关的应用-相关的协议 参考来源&#xff1a; 极客时间-透视HTTP协议(作者&#xff1a;罗剑锋)&#xff1b; 01-HTTP的发展历程 1989 年&#xff0c;任职于欧洲核子研究中心&#xff08;CERN&#xff09;的蒂姆伯纳斯 - 李&#xff08;Tim Ber…...

UI学习-学习内容

教程网址1&#xff1a;UI 新手如何从设计规范中提升自己 推荐一下高质量的设计规范 满屏干货 语雀 B站地址1&#xff1a;新像素 UI 新手如何从设计规范中提升自己 推荐一下高质量的设计规范 满屏干货 UI设计培训_哔哩哔哩_bilibili 教程地址2&#xff1a;UI 新手成长经验分享…...

Flink CDC 提取记录变更时间作为事件时间和 Hudi 表的 precombine.field 以及1970-01-01 取值问题

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…...

【网络安全】网络安全意识教育实用指南

随着科技的不断发展和数字世界的变革&#xff0c;我们不仅从中获得前所未有的力量&#xff0c;也同时面临着前所未有的风险挑战。多数CISO&#xff08;首席信息安全官&#xff09;时刻致力于协助企业抵御各种安全威胁。在“武器库”中有一件珍贵的法宝&#xff1a;网络安全意识…...

wordpress模板购买网站推荐

简站wordpress主题 老牌wordpress开发团队&#xff0c;开发过数百款wordpress主题&#xff0c;作品是最好的简历&#xff0c;靠作品说话&#xff0c;看作品喜欢不喜欢就可以了。 https://www.jianzhanpress.com WP模板牛 免费wordpress下载网站&#xff0c;上面有上百款免费…...

LeetCode 刷题 [C++] 第240题.搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题目分析 通过分析矩阵的特点发现&#xff0c;其左下角和右上角可以看作一个“二叉搜索树的根节…...

HP笔记本电脑如何恢复出厂设置?这里提供几种方法

要恢复出厂设置Windows 11或10的HP笔记本电脑,你可以使用操作系统的标准方法。如果你运行的是早期版本,你可以使用HP提供的单独程序清除计算机并重新安装操作系统。 恢复出厂设置运行Windows 11的HP笔记本电脑​ 所有Windows 11计算机都有一个名为“重置此电脑”的功能,可…...

Elasticsearch:了解人工智能搜索算法

作者&#xff1a;来自 Elastic Jessica Taylor, Aditya Tripathi 人工智能工具无处不在&#xff0c;其原因并不神秘。 他们可以执行各种各样的任务并找到许多日常问题的解决方案。 但这些应用程序的好坏取决于它们的人工智能搜索算法。 简单来说&#xff0c;人工智能搜索算法是…...

(HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕

一、电路接法 电路接法参照江科大视频。 二、相关代码及文件 说明&#xff1a;代码采用hal库&#xff0c;通过修改江科大代码实现。仅OLED.c文件关于引脚定义作了hal库修改&#xff0c;并将宏定义OLED_W_SCL(x)、OLED_W_SDA(x)作了相关修改。 1、OLED.c void OLED_I2C_Init(voi…...

分享便携式血氧仪单片机方案

血氧仪主要测量指标分别为脉率、血氧饱和度、灌注指数。血氧饱和度是临床医疗上重要的基础数据之一。以家用指压式血氧仪为例&#xff0c;一个血氧仪一般由MCU、存储芯片、两个控制LED的数模转换器、两个发光二极管驱动等组成。 灵动微电子的MM32MCU产品已被广泛地应用在了一些…...

【Java设计模式】四、适配器模式

文章目录 1、适配器模式2、举例 1、适配器模式 适配器模式Adapter Pattern&#xff0c;是做为两个不兼容的接口之间的桥梁目的是将一个类的接口转换成客户希望的另外一个接口适配器模式可以使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 最后&#xff0c;适配器…...

RV32/64 特权架构 - 特权模式与指令

RV32/64 特权架构 - 特权模式与指令 1 特权模式2 特权指令2.1 mret&#xff08;从机器模式返回到先前的模式&#xff09;2.2 sret&#xff08;从监管模式返回到先前的模式&#xff09;2.3 wfi&#xff08;等待中断&#xff09;2.4 sfence.vma&#xff08;内存屏障&#xff09; …...

多微服务合并为一个服务

公司微服务细分太多&#xff0c;最近跟我提说需要将几个微服务合为单体&#xff0c;经过几天的查阅&#xff0c;决定用二次打包的方式进行合并&#xff0c;然后部署的时候在nginx改下合并的微服务转发路劲即可&#xff0c;不需要前端修改路劲了。 方案 采用二次打包的方式进行…...

Springboot企业级开发--开发入门01

目录 目录 一.Spring Boot的主要特点和优势包括&#xff1a; 二.Spring Boot的核心功能可以归纳为以下几点&#xff1a; 三.Springboot是如何解决问题&#xff1f; Spring Boot 是一个开源的Java框架&#xff0c;其设计目标是为了简化新Spring应用的初始搭建以及开发过程。…...

bash和sh和./的区别

bash和sh和./的区别 今天在执行一个脚本的时候&#xff0c;用的是sh script.sh&#xff0c;执行报错&#xff0c;使用bash script.sh执行时就能成功&#xff0c;才知道sh和bash是不一样的 sh sh表示 Bourne Shell&#xff0c;是 Unix 系统上的一种基本的命令解释器。它也可以…...

LeetCode 3:寻找最长不含重复字符的子串长度

LeetCode 3&#xff1a;寻找最长不含重复字符的子串长度 在字符串处理中&#xff0c;寻找最长不含重复字符的子串长度是一个经典问题。 问题描述 给定一个字符串 s &#xff0c;我们需要找出其中不含有重复字符的最长子串的长度。 解决方案 我们可以使用滑动窗口的方法来解…...

【自然语言处理四-从矩阵操作角度看 自注意self attention】

自然语言处理四-从矩阵操作角度看 自注意self attention 从矩阵角度看self attention获取Q K V矩阵注意力分数softmax注意力的输出再来分析整体的attention的矩阵操作过程从矩阵操作角度看&#xff0c;self attention如何解决问题的&#xff1f;W^q^ W^k^ W^v^这三个矩阵怎么获…...

Unity脚本,串行端口的握手协议(流控制)

在Unity的SerialPort构造函数中&#xff0c;流控制并没有被直接包含。流控制&#xff0c;也被称为握手&#xff0c;是一种过程&#xff0c;它管理数据的传输速度&#xff0c;以防止接收方被发送方发送的数据量所淹没。 在.NET的SerialPort类中&#xff0c;流控制是通过Handshak…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址&#xff0c;您可以使用以下几种方法&#xff1a; 1. 查看所有远程仓库地址 使用 git remote -v 命令&#xff0c;它会显示项目中配置的所有远程仓库及其对应的 URL&#xff1a; git remote -v输出示例&#xff1a; origin https://…...