1.通过请求和响应的交换达成通信

应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色。仅从一条通信线路来说,服务器端和客服端的角色是确定的。HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

2.HTTP 是不保存状态的协议

HTTP 是一种无状态协议。协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。
可是随着 Web 的不断发展,我们的很多业务都需要对通信状态进行保存。于是我们引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

3.使用 Cookie 的状态管理

Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

 

4.请求 URI 定位资源

HTTP 协议使用 URI 定位互联网上的资源。正是因为 URI 的特定功能,在互联网上任意位置的资源都能访问到。

5.告知服务器意图的 HTTP 方法(HTTP/1.1)

 
 
HTTP 方法
     

6.持久连接

HTTP 协议的初始版本中,每进行一个 HTTP 通信都要断开一次 TCP 连接。比如使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无畏的 TCP 连接建立和断开,增加通信量的开销。
为了解决上述 TCP 连接的问题,HTTP/1.1 和部分 HTTP/1.0 想出了持久连接的方法。其特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。旨在建立一次 TCP 连接后进行多次请求和响应的交互。在 HTTP/1.1 中,所有的连接默认都是持久连接。

7.管线化

持久连接使得多数请求以管线化方式发送成为可能。以前发送请求后需等待并接收到响应,才能发送下一个请求。管线化技术出现后,不用等待亦可发送下一个请求。这样就能做到同时并行发送多个请求,而不需要一个接一个地等待响应了。
比如,当请求一个包含多张图片的 HTML 页面时,与挨个连接相比,用持久连接可以让请求更快结束。而管线化技术要比持久连接速度更快。请求数越多,时间差就越明显。

最新文章

  1. 使用UITableView展示数据
  2. Java中的弱引用
  3. Java如何解决脆弱基类(基类被冻结)问题
  4. ORACLE数据库删除表中记录报record is locked by another user
  5. 【转】PS学堂之一:展示一下自己做的圆形印章
  6. [大牛翻译系列]Hadoop(4)MapReduce 连接:选择最佳连接策略
  7. Linux Versus Windows, Ubuntu/Mint V XP/Vista/7
  8. c++中的隐藏、重载、覆盖(重写)
  9. 微信公众平台--网页授权获取用户基本信息(snsapi_base方式)
  10. eclipse中新建maven项目
  11. vs2013 创建网站
  12. Strategic game(POJ 1463 树形DP)
  13. javascript调试
  14. hdu Max Sum Plus Plus(dp+滚动数组)
  15. Oracle的闪回技术--闪回错误的DML操作
  16. nodejs 路径
  17. Fluent动网格【11】:弹簧光顺
  18. 安卓测试【二】eclipse离线安装ADT
  19. 设计模式 笔记 中介者模式 Mediator
  20. 【ARTS】01_01_左耳听风-20181112~1116

热门文章

  1. Tomcat源码分析——请求原理分析(中)
  2. Spring MVC 数据绑定流程分析
  3. SSIS教程:创建简单的ETL包 -- 4. 增加错误处理流程(Adding Error Flow Redirection)
  4. [转]深入Java单例模式
  5. java自学-流程控制语句
  6. 撩课-MySQL详解1-数据库简介
  7. poj 3104 dring 二分
  8. Java基础小结
  9. python中类变量和实例变量
  10. AJAX 概念 优势 发展前景 工作原理 底层技术 状态 缺点 框架