《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来说, 这个对象是分布式文件系统的一个实例 ...
随机推荐
- linux服务开机自动启动
zookeeper设置开机自动启动 第一种:直接修改/etc/rc.d/rc.local文件 在/etc/rc.d/rc.local文件中需要输入两行,其中export JAVA_HOME=/usr/ ...
- L3-021 神坛(极角排序求三角形最小面积)
在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...
- PCIe link up bug 分析
Xilinx两块开发版PCIe link up时间相差很大,Virtex-6开发版PCIe link up时间超过60ms,而Virtex-7 PCIe link up时间只有~25ms. 分析过 ...
- SQL Server数据库中的系统数据库?
SQL Server的系统数据库分为:master,model,msdb和tempdb 1.Master数据库 Master数据库记录SQL Server系统的所有系统级别信息(表sysobjects ...
- Mybatis 接口代理的实现(BeanDefinitionRegistryPostProcessor+FactoryBean)
相信在开发中,尤其是mybatis 配置操作中,我们只需要提供一个mapper 接口,然后注入到service 中,就可以进行调用. 按我们的一般逻辑来说,我们并没有进行接口的实现,应该会报空指针异常 ...
- Spring常用注解总结(2)
@Autowired "自动填装",作用是为了消除代码JAVA代码里面的getter/setter与bean属性中的property. @Autowired默认按类型匹配的方式,在 ...
- django filter or 多条件查询
功能:django中实现多条件查询 或关系: from django.db.models import Q return qs.filter(Q(notice_to_group__contains=' ...
- cocoapods 安装中出的太多问题
前言: 新欢的公司,新买的电脑,新安装 cocoapods.然后开开心心去百度如何安装 cocoapods,前面的步骤我就不说了. 在 pod setup 上之后,网速超慢然后就失败 fatal: T ...
- VMware 中安装KVM,模块不加载
# yum -y install qemu-kvm libvirt virt-install bridge-utils 通过以上命令在VMWare中centos7安装KVM模块 安装后使用 #lsmo ...
- Git merge 不同的branch
Git的优势是可以创建不同的branch,然后在每个branch上开发.那么问题是:如果不同的branch之间需要做同步,比如sourceBranch上做的修改也需要同步到targetBranch,改 ...