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初始就暂时讲到这里 后续会更进一步地拓展

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

相关推荐
yychen_java44 分钟前
当算法成为武器:AI泛滥时代的多维危机透视与治理路径
网络·人工智能·ai
漫途科技1 小时前
精准盯防危房隐患,智守人居安全|MTB46-4-2A 4G数据采集终端专项应用方案
网络·安全
奥利奥夹心脆芙2 小时前
辅助排查 HTTP 接口代码报错,实操完整案例分享
http
Misnearch2 小时前
抓包Packet Capture
网络·抓包
zhangfeng11332 小时前
ps aux讲解,结合国家超算中心 hpc apptainer
linux·服务器·网络
吠品2 小时前
一次 Nginx 报错 unexpected end of file 的排查记录
网络协议·https·ssl
代码中介商3 小时前
TLS握手全解析:从1.2到1.3的加密演进
网络·网络协议·http
xlq223223 小时前
66.ip
网络·网络协议·tcp/ip
tudoSearcher3 小时前
手机、平板、电脑同时控制Claude Code / Codex ?:Paseo实战指南
网络·开源·开源软件·个人开发·ai编程
加农炮手Jinx3 小时前
Flutter for OpenHarmony:pub_updater 命令行工具自动更新专家(DevOps 运维必备) 深度解析与鸿蒙适配指南
android·运维·网络·flutter·华为·harmonyos·devops