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

HTTP相关

HTTP

什么是http - 蘑菇声活

http特点

1.基于TCP协议之上的应用层协议

2.基于请求--响应

3.无状态(每次发送请求对服务端都是新的)

4.无/短连接(客户端不会一直跟服务端连接)

http请求协议与响应协议

请求协议

请求首行:请求方式,请求地址,请求协议版本

请求头:key-value形式

请求体:get请求一般没有请求体,post请求有请求体

响应协议

响应首行:协议版本,响应状态码,响应描述符  HTTP/1.1 200 OK\r\n

响应头

响应体:一般给HTML标签

http各个版本间的差别

0.9 版本

特点:
1、最早出现的一个版本
2、只支持 GET 请求
3、只支持传输 HTML 的数据格式
4、无状态性(客户端发送请求,服务端接受请求并返回结果给客户端后,客户端和服务端的链接会马上断开)
缺点:
1、只支持 GET 方法单一
2、只支持服务端返回 HTML

1.0 版本

1.0 的版本出现是为了解决 0.9 版本的缺陷问题
优点:
1、支持 GET POST 和 HEAD
2、支持传入多种数据格式(视频、图片、二进制等)
3、新增状态码、缓存等
缺点:
1、一个 TCP 链接只能发送一个请求

1.1 版本

1.1 版本的出现是为了解决 1.0 版本的缺陷
优点:
1、持久性连接,即 TCP 连接不关闭,可以被多个请求复用
2、管道机制(同一个 TCP 连接,客户端可以同时发送多个请求)
3、新增了一些请求方法: PUT DELETE OPTIONS
缺点:
1、会造成队头阻塞问题(虽然同一个TCP 可以同时发送多个请求,但是服务端还是会一个一个请求进行处理进行返回,如果上一个返回延迟,会阻塞后面的流程)

2.0 版本

优点:
1、二进制传输(1.1 版本是通过文本进行传输,内容不能分开传递,2.0版本将请求的数据转换成二进制格式,然后标记索引,将数据包分成一片一片,相当于并发传输数据给到服务端)
2、多路复用(多个请求通过一个 TCP 连接)
3、头部压缩 (多个请求中,可能会存在相同的请求头,于是在客户端和服务端维护一张静态表,通过索引来将多个请求中的请求字段合并,传递时,只需传递索引即可)
4、服务器端推送(浏览器刚请求 HTML 时,就会把可能用到的 CSS JS 发送给客户端,减少等待的延迟)
缺点:
1、队头阻塞

3.0 版本

3.0 不同于以往的版本,基于谷歌的QUIC,底层是基于 UDP 协议
优点:
1、基于UDP,提高了传输效率,降低延迟(没有三次握手和四次挥手)
2、使用stream进一步扩展HTTP2.0 的多路复用,传输多少文件就可以产生多少stream,若发生丢包,只需要传输丢失的stream

http://www.lryc.cn/news/250907.html

相关文章:

  • Armv8.x和Armv9.x架构扩展简介
  • node的proxy-server使用
  • FO-like Transformation in QROM Oracle Cloning
  • Redis - 多数据源切换
  • 采集工具-免费采集器下载
  • 使用MD5当做文件的唯一标识,这样安全么?
  • 【算法通关村】链表基础经典问题解析
  • 【华为OD题库-056】矩阵元素的边界值-java
  • zabbix_sender——向zabbix交互的sdk
  • JDBC概述(什么是JDBC?JDBC的原理、Mysql和Sql Server入门JDBC操作)
  • 【android开发-06】android中textview,button和edittext控件的用法介绍
  • 【JMeter】BeanShell了解基础知识
  • Unity | 渡鸦避难所-0 | 创建 URP 项目并导入商店资源
  • SQL Server数据库部署
  • YOLOv8界面-目标检测+语义分割+追踪+姿态识别(姿态估计)+界面DeepSort/ByteTrack-PyQt-GUI
  • MiniDumpWriteDump函数生成dmp文件
  • 【Qt开发流程】之事件系统1:事件系统描述及事件发生流程
  • 初始数据结构(加深对旋转的理解)
  • Android 13 - Media框架(18)- CodecBase
  • 关于微信公众号授权的几件事
  • Docker监控Weave Scope的安装和使用
  • 为自己创建的游戏编程源码申请软件著作权详细流程(免费分享模板)
  • 代币化:2024年的金融浪潮预示着什么?
  • [学习记录]Node event loop 总结流程图
  • 【LeetCode热题100】【双指针】移动零
  • Mybatis 分页查询的三种实现
  • 各类声音数据集大合集—乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集
  • java设计模式学习之【原型模式】
  • 链表数组插入排序
  • MyBatis的创建,简单易懂的一篇blog