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

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

相关推荐
WJ.Polar3 小时前
FTP、Telnet、PPP、SNMP协议
服务器·网络
BLSxiaopanlaile3 小时前
《凤凰架构-构建可靠的大型分布式系统》读书笔记 -关于网络通信安全性的一些总结
http·加密·认证授权·网络通信安全
aesthetician3 小时前
实时通信的艺术:Server-Sent Events (SSE) 与 WebSocket 的深度解析
网络·websocket·网络协议
REDcker3 小时前
gRPC完整文档
服务器·网络·c++·网络协议·grpc
..过云雨3 小时前
多路转接select系统调用详解
网络·网络协议·tcp/ip
爱编码的傅同学4 小时前
【计算机网络】初识网络
网络·计算机网络
晚霞的不甘4 小时前
Flutter for OpenHarmony 打造沉浸式呼吸引导应用:用动画疗愈身心
服务器·网络·flutter·架构·区块链
CHENKONG_CK4 小时前
化工危化品桶装追溯:RFID 全流程可视化解决方案
网络
JMchen1234 小时前
Android UDP编程:实现高效实时通信的全面指南
android·经验分享·网络协议·udp·kotlin
临水逸4 小时前
一次路径穿越漏洞引发的NAS安全危机:飞牛fnOS漏洞深度剖析与用户自救指南
网络·安全·web安全