分享

《图解HTTP》读书笔记 – 第2章 简单的 HTTP 协议 – 博客歪歪

 yliu277 2016-03-17

HTTP 规定,请求由客户端发出。

客户端发出请求报文,服务器发出响应报文,如下图:

HTTP 请求具体示例 - 客户端发出 HTTP 报文,服务器端也响应一份报文
HTTP 请求具体示例 – 客户端发出 HTTP 报文,服务器端也响应一份报文

HTTP 请求报文中,使用不同的方法(Method)可以用以告知服务器意图。例如 GET 是获取, PUT 是上传,DELETE 是删除,OPTIONS 是询问支持的方法, TRACE 是追踪路径等。具体可以看下图中的表格:

HTTP/1.0 和 HTTP/1.1 支持的方法HTTP/1.0 和 HTTP/1.1 支持的方法
HTTP/1.0 和 HTTP/1.1 支持的方法

HTTP 协议是不保存状态的协议,如下图所示:

HTTP 协议自身不具备保存之前发送过的请求或响应的功能
HTTP 协议自身不具备保存之前发送过的请求或响应的功能

HTTP 协议是不保存状态的协议,因此引入了 Cookie 技术。服务器端可以往客户端浏览器写 Cookie,客户端会自动在每次请求时都往服务器发这个 Cookie

最初的 HTTP 协议是每进行一次 HTTP 通信就要断开一次 TCP 连接。由于 TCP 协议的(三次握手等)保证可靠性的机制,很多时间浪费在连接和断开上了。

这个问题的解决方案是持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connecttion reuse)的方法。其特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内未标准化。现在的服务器端基本都是 HTTP/1.1 了。除了服务器端,客户端也需要支持持久连接。

持久连接还使得管线化(pipelining)方式发送成为可能。从前发送一个请求需等待并收到响应,才能发送下一个请求。管线化出现后,不用等待响应便可发送下一个请求。

还是上图说明持久连接和管线化,如下:

早期的HTTP协议中,每次都要断开TCP连接
早期的HTTP协议中,每次都要断开TCP连接
早期的HTTP协议中,每次都要断开TCP连接。增加通信量的开销。
早期的HTTP协议中,每次都要断开TCP连接。增加通信量的开销。
持久连接旨在建立1次TCP连接后进行多次请求和响应的交互
持久连接旨在建立1次TCP连接后进行多次请求和响应的交互
管线化连接不用等待响应,直接发送下一个请求。效率大大提升。
管线化连接不用等待响应,直接发送下一个请求。效率大大提升。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多