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

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

相关推荐
jun_bai18 小时前
python写的文件备份网盘程序
运维·服务器·网络
爱吃牛肉的大老虎18 小时前
网络传输架构之gRPC讲解
网络·架构
Warren9818 小时前
Python自动化测试全栈面试
服务器·网络·数据库·mysql·ubuntu·面试·职场和发展
云飞云共享云桌面20 小时前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑
骆驼102420 小时前
手机热点和无线路由器在 IPv6 工作模式上的区别
网络·ipv6
jenchoi41321 小时前
【2025-11-23】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·数据库·安全·web安全·网络安全
独行soc1 天前
2025年渗透测试面试题总结-258(题目+回答)
网络·python·安全·web安全·渗透测试·安全狮
AI绘画小331 天前
网络安全(黑客技术)—2025自学手册
网络·安全·web安全·网络安全·渗透测试
国服第二切图仔1 天前
Electron for 鸿蒙PC实战案例Gitcode口袋工具之HTTP请求封装的技术实现与设计解析
http·electron·gitcode
s09071361 天前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp