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

Http1.0和Http1.1的主要区别

1、HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理

HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。

HTTP 1.1则支持持久连接Persistent Connection, 并且默认使用persistent  connection. 在同一个tcp的连接中可以传送多个HTTP请求和响应. 多个请求和响应可以重叠,多个请求和响应可以同时进行. 更加多的请求头和响应头(比如HTTP1.0没有host的字段).

在1.0时的会话方式:
 1. 建立连接
 2. 发出请求信息
 3. 回送响应信息
 4. 关掉连接

 HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。例如:一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。  HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容。

2.HTTP 1.1增加host字段

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。

 HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。此外,服务器应该接受以绝对路径标记的资源请求。

3、100(Continue) Status(节约带宽)

HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码401(Unauthorized);如果服务器接收此请求就回送响应码100,客户端就可以继续发送带实体的完整请求了。100 (Continue) 状态代码的使用,允许客户端在发request消息body之前先用request header试探一下server,看server要不要接收request body,再决定要不要发request body。

4、HTTP/1.1中引入了Chunked transfer-coding来解决上面这个问题,发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度,最后用一个零长度的块作为消息结束的标志。这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载。

5、HTTP/1.1在1.0的基础上加入了一些cache的新特性,当缓存对象的Age超过Expire时变为stale对象,cache不需要直接抛弃stale对象,而是与源服务器进行重新激活(revalidation)。

转载于:https://www.cnblogs.com/zuoshoushizi/p/8464813.html

相关文章:

  • DOM操作表格
  • BZOJ1486 最小圈 [分数规划+负权环]
  • 医疗成像领域引进人工智能: AI 帮助医生进行成像分析
  • linux命令总结basename
  • 遍历字典 NSDictionary
  • 2012金华邀请赛解题报告
  • Java9 新特性 详解
  • 设置Google浏览器不缓存JS
  • IntelliJ Idea 常用快捷键列表
  • SpringCloud教程 | 第三篇: 服务消费者(Feign)
  • 前端远程调试
  • 与Brian Goetz聊Java的数据类
  • Git 系列(一):什么是 Git
  • 第十一章 LAMP架构
  • 《Arduino实战》——第1章 你好Arduino 1.1 Arduino简史
  • 30秒的PHP代码片段(1)数组 - Array
  • flutter的key在widget list的作用以及必要性
  • Gradle 5.0 正式版发布
  • JavaScript异步流程控制的前世今生
  • MD5加密原理解析及OC版原理实现
  • node 版本过低
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 订阅Forge Viewer所有的事件
  • 将回调地狱按在地上摩擦的Promise
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 全栈开发——Linux
  • 设计模式 开闭原则
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 怎样选择前端框架
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Java并发新构件之Exchanger
  • ​比特币大跌的 2 个原因
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #include
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (六)vue-router+UI组件库
  • (区间dp) (经典例题) 石子合并
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)jQuery 基础
  • (转)菜鸟学数据库(三)——存储过程
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • **PHP分步表单提交思路(分页表单提交)
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .libPaths()设置包加载目录
  • .Net Memory Profiler的使用举例
  • .net 程序发生了一个不可捕获的异常
  • .Net 知识杂记
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)