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

在这里插入图片描述

如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!💓 💓 💓

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试经典150题【21-30】

文章目录 面试经典150题【21-30】6.Z字形变换28.找出字符串中第一个匹配项的下标68.文本左右对齐392.判断子序列167.两数之和11.盛最多水的容器15.三数之和209.长度最小的子数组3.无重复字符的最长子串30.串联所有单词的子串 面试经典150题【21-30】 6.Z字形变换 对于“LEETC…

Redis实现滑动窗口限流

常见限流算法 固定窗口算法 在固定的时间窗口下进行计数&#xff0c;达到阈值就拒绝请求。固定窗口如果在窗口开始就打满阈值&#xff0c;窗口后半部分进入的请求都会拒绝。 滑动窗口算法 在固定窗口的基础上&#xff0c;窗口会随着时间向前推移&#xff0c;可以在时间内平滑控…

矩阵的导数运算(理解分子布局、分母布局)

矩阵的导数运算(理解分子布局、分母布局) 1、分子布局和分母布局 请思考这样一个问题&#xff0c;一个维度为m的向量y对一个标量x的求导&#xff0c;那么结果也是一个m维的向量&#xff0c;那么这个结果向量是行向量&#xff0c;还是列向量呢&#xff1f; 答案是&#xff1a…

【前端素材】推荐优质医院后台管理系统I-Health平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理和配置操…

如何用Pytest做性能测试?5个步骤轻松学会!

Pytest其实也是可以做性能测试或者基准测试的。是非常方便的。 可以考虑使用Pytest-benchmark类库进行。 安装pytest-benchmark 首先&#xff0c;确保已经安装了pytest和pytest-benchmark插件。可以使用以下命令安装插件&#xff1a; pip install pytest pytest-benchmark …

无需软件_暂停 Windows更新

按下 WIN 加 R 输入 regedit 进入注册表 点击 HKEY LOCAL-MACHINE 点击 SOFTWARE 点击 Microsoft 点击 WindowsUpdate 点击 UX 点击 Settings 然后空白区点击右键 选择新建&#xff0c;选择项&#xff0c;选择 dword 值 命名为 FlightSettingsMaxPauseDays 基数选择十…

创作纪念日:记录我的成长与收获

机缘 一开始是在我深入学习前端知识的Vue.js框架遇到了一个问题&#xff0c;怎么都解决不了&#xff0c;心烦意乱地来csdn上找解决方法。开心的是真被我找到了&#xff0c;真的很感恩&#xff0c;也意识到在这个平台上分享自己的经验是多么有意义的事情&#xff0c;可能随便的…

技术场景面试题

1.项目中遇到的比较棘手的问题&#xff0c;如何解决的。 第一个方向是设计模式在项目中的应用&#xff0c;遵循一系列的开发原则&#xff0c;设计模式都是前人总结出来的经验&#xff0c;对我们的开发有指导意义。 之前没有用设计模式&#xff0c;所有的登录都糅合在一个业务…

2024年云南事业单位报名流程!明天就开始报名啦,千万不要错过哦

注意啦&#xff01;注意啦&#xff01;2024年云南事业单位报名即将开始&#xff01; ▶️公告已发布&#xff0c;2月26日上午9&#xff1a;00开始报名‼️ 相关时间节点 **报名时间&#xff1a;**2024年2月26日9:00至3月1日18:00 **资格初审时间&#xff1a;**2024年2月26日…

新版Java面试专题视频教程——虚拟机篇①

新版Java面试专题视频教程——虚拟机篇① 1 JVM组成1.1 JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f;1.2 什么是程序计数器&#xff1f;1.3 你能给我详细的介绍Java堆吗?1.3.1 1.7和1.8 堆的区别1.3.2 元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.4.1 堆和栈的区…

centos7 docker 安装

1.卸载之前docker环境 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docke…

软件测试人员的基本功包括些什么?

软件测试人员的基本功包括哪些呢&#xff1f;接下来该问题的阐述结构如下&#xff1a; 1、一看软件测试基本流程 2、明确软件测试的基本功有哪些 3、如何牢固掌握这些基本功 软件测试基本流程 上图就是软件测试的基本流程 1&#xff09;需求评审 2&#xff09;计划编写 …

南京观海微电子---AXI总线技术简介——ZYNQ PS和PL的互联技术

1.AXI总线介绍 AXI全称Advanced Extensible Interface&#xff0c;是Xilinx从6系列的FPGA开始引入的一个接口协议&#xff0c;主要描述了主设备和从设备之间的数据传输方式。AXI协议在Xilinx的ZYNQ系列芯片中继续使用&#xff0c;协议版本是AXI4。 ZYNQ为Xilinx推出的首款将高…

PHATGOOSE:使用LoRA Experts创建低成本混合专家模型实现零样本泛化

这篇2月的新论文介绍了Post-Hoc Adaptive Tokenwise Gating Over an Ocean of Specialized Experts (PHATGOOSE)&#xff0c;这是一种通过利用一组专门的PEFT模块(如LoRA)实现零样本泛化的新方法 这个方法冻结整个模型&#xff0c;包括PEFT模块&#xff0c;并为每个模块训练一…

git之分支管理

一.理解分支 我们看下面这张图片&#xff1a; 在版本回退⾥&#xff0c;你已经知道&#xff0c;每次提交&#xff0c;Git都把它们串成⼀条时间线&#xff0c;这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前&#xff0c;只有⼀条时间线&#xff0c;在Git⾥&#xff0c;这个分⽀…

动态规划--状态转移

解码方法 1.题目 2.思路 1&#xff09;我们定义一个数组dp&#xff0c;其中dp[i]表示字符串s的前i个字符的解码方法总数。初始化时&#xff0c;dp[0]为1&#xff0c;因为空字符串有一种解码方式。dp[1]的值取决于第一个字符是否是0&#xff0c;如果不是0&#xff0c;则有一种…

LeetCode234.回文链表

题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true思路 找到链表的中间节点&#xff1a;可以使用快慢指针…

platform(驱动层+应用层)实现终端和中断开关点灯

设备树文件添加 myplatform{compatible"hqyj,myplatform";interrupt-parent<&gpiof>;interrupts<8 0>,<7 0>,<9 0>;led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>;reg<0x123…

锂电池SOC估计 | PyTorch实现基于Basisformer模型的锂电池SOC估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 PyTorch实现基于Basisformer模型的锂电池SOC估计 锂电池SOC估计&#xff0c;全新【Basisformer】时间序列预测 1.采用自适应监督自监督对比学习方法学习时序特征&#xff1b; 2.通过双向交叉注意力机制计算历史序列和…

从源码学习static的使用

从源码学习static的使用 前言 ​ static意味静态的&#xff0c;在Java中&#xff0c;主要用来修饰类级别的变量或方法等&#xff0c;被修饰的内容&#xff0c;表示随着类的加载而加载&#xff0c;而不是具体的实例级别。 ​ 具体到static的使用场景&#xff0c;主要有以下用…