《HTTP权威指南》4-连接管理
TCP连接
TCP/IP是全球计算机及网络设备都在使用的一种常见的分组交换网络分层协议集
客户端应用程序可以打开一条TCP/IP连接。连接到可能运行在世界任何地方的服务器应用程序
TCP的可靠数据管道
HTTP连接实际上就是TCP连接和一些使用连接的规则
TCP为HTTP提供了一条可靠的比特传输管道
从TCP连接一端填入的字节会从另一端以原有的顺序,正确的传送出来
TCP流是分段的,由IP分组传送
HTTP要传送一条报文时,会进行如下传送:
- 以流的形式将报文数据的内容通过一条打开的TCP连接按序传输
- TCP接收到数据流后,将数据流砍成被称作段的小数据块
- 将段封装在IP分组中,通过因特网进行传输
保持TCP连接的正确运行
任意时刻计算机都可以有几条TCP连接处于打开状态,TCP是通过端口号来保持所有这些连接的正确运行的。
TCP连接是通过4个值来是识别的:<源IP地址、源端口号、目的IP地址、目的端口号>
对TCP性能的考虑
HTTP事务的时延
HTTP事务时延有一下几种主要原因:
- 从URL中解析IP地址及端口号
- 建立TCP连接
- 传输请求报文,及服务器处理请求报文
- 返回响应报文
TCP网络时延的大小取决于硬件速度,网络和服务器的负载,请求和响应报文的尺寸,客户端和服务器的距离等
HTTP连接的处理
Connection首部
HTTP允许在客户端和最终的源端服务器之间存在一串HTTP中间实体,包括代理,网关,缓存等。
在某些情况下,两个相邻的HTTP应用程序会为它们共享的连接应用一组选项。
HTTP的Connection首部字段中有一个由逗号分隔的连接标签列表,这些标签为此连接指定了一些不会传播到其他连接中去的选项。
- 当HTTP应用程序收到一条带有Connection首部的报文时,接收端会接卸发送端请求的所有选项,并将其应用。
- 在将此报文转发给下一跳地址之前,删除Connection首部及Connection中列出的所有首部
并行连接
HTTP允许客户端打开多条连接,并行地执行多个HTTP事务
并行连接可能会提高页面的加载速度
并行连接不一定会更快
并行连接的速度可能会更快,但不一定总是更快。
当客户端的网络带宽不足时,大部分的时间肯能都是用来传送数据的,一个连接到速度较快的服务器上的HTTP事务很容易好近所有可能用的Modem带宽。
而且,打开大量连接会消耗很多内存资源,从而引发自身的性能问题
并行连接可能让人“感觉”更快一些
当更多的组件对象同时出现在屏幕上,使用户能够看到加载的进展,哪怕速度上没有变化,也会让人感觉更快
持久连接
Web客户端经常会打开同一个站点的连接。
HTTP/1.1允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便为未来的HTTP请求重用现存的连接。
在事务处理结束后仍然保持在打开状态的TCP连接被称为持久连接
管道化连接
HTTP/1.1允许在持久连接上可选地使用请求管道。
在响应到达之前,可以将多条请求放入队列。
当第一条请求通过网络流向地球另一端的服务器时,第二条和第三条也可以开始发送了
管道化连接有如下几条限制:
- 如果HTTP客户端无法确认连接是持久的,就不应该使用管道
- 必须按照与请求相同的顺序回送HTTP响应
- HTTP客户端必须做好连接会在任意时刻关闭的准备
- HTTP客户端不应该用管道化的方式发送会产生副作用的请求,如POST,否则,当出错时,就会存在某些方法永远不会被执行的风险。
几种连接图
《HTTP权威指南》4-连接管理的更多相关文章
- 和我一起学《HTTP权威指南》——连接管理
连接管理 1.TCP连接 几乎所有的HTTP通信都是由TCP/IP承载的. 浏览网页时客户端执行的操作: 如浏览http://www.joes-hardware.com:80/power-tools. ...
- HTTP权威指南之连接管理
TCP连接世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的, TCP/IP 是全球计算机及网络设备都在使用的一种常用的分组交换网络分层协议集. 客户端应用程序可以打开一条 TCP/IP 连 ...
- HTTP权威指南读书笔记
HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...
- 《HTTP权威指南》之HTTP连接管理及对TCP性能的考虑
在上一篇博客中(<HTTP权威指南>之HTTP相关概念详解)我们简单对HTTP相关的基本概念做了一些简单的了解,但未对HTTP连接管理的内容做一些详细的介绍.本篇博客我们就一起来看一下HT ...
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...
- HTTP连接管理
本文是<HTTP权威指南>读书笔记: 几乎所有的HTTP通信都是通过TCP/IP承载的,当HTTP要传送一些报文时,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输.因此HTT ...
- Netty权威指南
Netty权威指南(异步非阻塞通信领域的经典之作,国内首本深入剖析Netty的著作,全面系统讲解原理.实战和源码,带你完美进阶Netty工程师.) 李林锋 著 ISBN 978-7-121-233 ...
- Android开发权威指南(第2版)新书发布
<Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...
- Hadoop权威指南:HDFS-数据流
Hadoop权威指南:HDFS-数据流 [TOC] 剖析文件读取 客户端通过调用FileSystem对象的open()方法来打开希望读取的文件,对于HDFS来说, 这个对象是分布式文件系统的一个实例 ...
随机推荐
- python——jieba分词过程
import jieba """函数2:分词函数""" def fenci(training_data): ""&quo ...
- mysql学习笔记--数据库视图
一.视图 1. 概念 a. 视图是一张虚拟表,它表示一张表的部分或多张表的综合的结构 b. 视图仅仅是表结构,没有数据.视图的结构和数据建立在表的基础上 2. 创建视图 a. 语法: create [ ...
- ACM学习之路
2018-10-18 11:03:00 今天开始踏上实现梦想的道路,希望自己不要懈怠. 坚持做简单的事,坚持下来就会变得不简单.
- 新学python画一个爱心
from turtle import * def curvemove(): for i in range(200): right(1) forward(1) color('yellow','red') ...
- 词根:sol = sun(太阳) 词根:sol = alone/single, whole/entire (单独的)
词根:sol = sun(太阳) sol 这个词根有的书上如刘毅字典,刘洪波英文字根词源精讲等上面说来自拉丁语的sol(=sun),有的书如赢在单词上面说sol 来自拉丁语的solari,但不管哪种说 ...
- Linux(centos)下安装JDK
安装 JDK是运行java程序必不可少的环境,服务器上跑程序也不例外.首先在安装之前,要知道Linux下安装软件有两种,一种是使用yum等命令直接下载,一种是使用上传下载工具,上传至Linux下使用, ...
- eclipse创建scrapy项目
1. 您必须创建一个新的Scrapy项目. 进入您打算存储代码的目录中(比如否F:/demo),运行下列命令: scrapy startproject tutorial 2.在eclipse中创建一个 ...
- Java 调用执行其他语言的程序
以 Java 调用 Python 为例 1. 使用 Runtime 类 该方式简单,但是增加了 Java 对python 的依赖,需要事先安装python,及python程序依赖的第三方库 Runti ...
- eclipse配置逆向工程
eclipse单行注释:ctrl + shfit + c 或者 Ctrl+/: 添加//注释 快速查找某个类:Ctrl+Shift +T 查找这个类的子类是ctrl+t eclips ...
- @无痕客 https://www.cnblogs.com/wuhenke/archive/2012/12/24/2830530.html 通篇引用
无痕客 https://www.cnblogs.com/wuhenke/archive/2012/12/24/2830530.html 关于Async与Await的FAQ 关于Async与Await的 ...