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

HTTP初识

HTTP初识

HTTP

HTTP是处于**网络应用层的超文本**传输协议

超文本?那跟普通的文本有什么区别呢

  • 文本:字符串
  • 超文本:HTTP不仅只限于文本传输,还能传输图片、视频、音频、字体,且以二进制的形式来传输

另外,HTTP在传输层中主要依赖TCP的协议 ,但HTTP 3.0 版本开始就以UDP协议传输——主要是为了传输效率考虑

那HTTP一般能应用在什么场景呢?

  1. web开发中:负责网页前端与后端的通信

  2. 移动端APP:负责建立与服务器后端的通信

  3. 分布式系统的服务器之间的调用,这种应用近年来逐渐多了起来

    在以前的服务器之间的调用一般都是基于 TCP 或者 UDP + 自定义协议的方式来实现(如protobuf),这是Fiddler中抓包的其中一个网卡内容在这里插入图片描述

    随着时代变迁,Java版本的微服务兴起,研究出了一套SpringCloud框架应用于服务器之间的调用就直接使用HTTP,实现与SpringMVC的无缝对接,HTTPS也是基于HTTP,引入了“加密层”实现的


了解完了HTTP的历史,那就继续了解HTTP的性质

HTTP是典型的“一问一答”模型,即客户端发出一个请求,服务器就返回一个响应。但其实客户端与服务器之间的交互方式不仅仅只有这一种形式,还有一问多答、多问一答,多问多答的交互模型,以下是它们在应用之间的区别

  • 一问一答:HTTP
  • 一问多答:下载一个大的文件、流式传输
  • 多问多答:远程桌面(toDesk)

另外,HTTP也是不断发展的,比如现在的大模型,大多数都是采用流式传输的形式反馈,流式传输就是基于HTTP实现的“一问多答”的模式

既然HTTP是在应用层实现的传输协议,那也会有对应的报文格式,以客户端的角度来说有HTTP请求,服务器则有HTTP响应

  • HTTP请求
    在这里插入图片描述

  • HTTP响应
    在这里插入图片描述

从图中就能清楚的了解HTTP的请求和响应的框架,其他的都很容易理解,那HTTP请求中的URL是什么来的?既然叫唯一资源定位符,那定位了什么?接着看下去

URL

唯一资源定位符,用来标识网络上的一个资源的位置,其实URL不止在网络上,它是个通用的概念,很多协议都会用到URL,例如在JDBC中也能见到

在这里插入图片描述

那URL的格式一般都是怎么样的呢?我在华为的技术知识网页找到了关于URL格式的介绍以及参数解释

在这里插入图片描述
在这里插入图片描述

看到解释图我们会有一个疑问—— ?query 又是何方神圣

?query string

它是查询字符串,也是键值对结构的数据,其中 & 来分割键值对,= 分割键和值

例如上述的?name=tom&age=20​就分为了两个键值对分别是name=tom​和age=20

HTTP中会有很多的键值对,其中就包含query string和header里的键值对,那他们两有什么区分?

  • query string 的键值对,是程序员自定义,在开发的时候通过前后端的程序员对接,就能确定某些query string的定义
  • header的键值对是HTTP协议里就定义好的

urlencode

对于query string来说,有时候是需要进行encode转码,因为URL中包含了许多特殊的符号,都是有特定的含义

query string作为URL的一份子,如果在程序员定义的时候也包含了这些特殊符号,可能就会导致浏览器解析失败,无法正确地跳转

所以只要是包含了标点符号或者中英文字符,都要转义

其中中文字符的转义又需要特定封装以下——由于中文字符包含了多个字节,以utf8来讲,如果转义后的字节恰好和某个特殊符号的ascii码值一样就不好了

所以要把转义的内容的每个字节拿出来,使用十六进制标识,同时每个字节都要加上%

在这里插入图片描述

除此之外,我们还没有讲到HTTP的方法,接着看下去

方法-Method

在HTTP中,方法是请求中的一部分,表达要“做一个什么动作”

在这里插入图片描述

其中GET、POST是最常见的,其次就是PUT和DELETE,通过Fidder抓包HTTP请求也能看出大多数都是GET和POST方法
在这里插入图片描述

在这里插入图片描述

这次的HTTP初始就暂时讲到这里 后续会更进一步地拓展

希望对看到这里的你有所帮助,祝愿身体健康~(∠・ω< )⌒★

http://www.dtcms.com/a/473449.html

相关文章:

  • 【Linux网络】Socket编程:TCP网络编程
  • 离线docker安装jupyter(python网页版编辑器)
  • 自己怎么做彩票网站吗网站建设招标2017
  • 达梦守护集群部署安装
  • 农村电子商务网站建设wordpress不能安装插件
  • 每天五分钟深度学习:两个角度解释正则化解决网络过拟合的原理
  • 【Android Gradle学习笔记】第二天:Gradle工程目录结构
  • 【知识拓展Trip Six】宿主OS是什么,传统虚拟机和容器又有什么区别?
  • AI眼镜:作为人机交互新范式的感知延伸与智能融合终端
  • 开发网站 语言卡片式网站
  • 长乐市住房和城乡建设局网站在线购物商城网站建设
  • qt5.14查看调试源码
  • 深度学习实战:Python水果识别 CNN算法 卷积神经网络(TensorFlow训练+Django网页源码)✅
  • J1939基础通信
  • 前端开发与后端开发的区别是什么?
  • 模块使用教程(基于STM32)——蓝牙模块
  • BaseLine与BackBone
  • 多视图几何--密集匹配--视差平面推导
  • 官网和商城结合的网站网站推广合同模板
  • 微软新模型UserLM:如何为AI助手打造一个“真实世界”模拟器
  • Linux中页面分配alloc_pages相关函数
  • Qt---布局管理器
  • 基于单片机的图书馆智能座位管理平台
  • 中国机械工业建设集团有限公司网站高端网站建设论坛
  • Envoy Gateway + ext_authz 做“入口统一鉴权”,ABP 只做资源执行
  • vscode免密码认证ssh连接virtual box虚拟机
  • 3.6 JSON Mode与JSON Schema
  • React Native::关于react的匿名函数
  • 基于JETSON ORIN+FPGA+GMSL AI相机的工业双目视觉感知方案
  • 常规的鱼眼镜头有哪些类型?能做什么?