TCP连接

TCP/IP是全球计算机及网络设备都在使用的一种常见的分组交换网络分层协议集
客户端应用程序可以打开一条TCP/IP连接。连接到可能运行在世界任何地方的服务器应用程序

TCP的可靠数据管道

HTTP连接实际上就是TCP连接和一些使用连接的规则
TCP为HTTP提供了一条可靠的比特传输管道
从TCP连接一端填入的字节会从另一端以原有的顺序,正确的传送出来

TCP流是分段的,由IP分组传送

HTTP要传送一条报文时,会进行如下传送:

  1. 以流的形式将报文数据的内容通过一条打开的TCP连接按序传输
  2. TCP接收到数据流后,将数据流砍成被称作段的小数据块
  3. 将段封装在IP分组中,通过因特网进行传输

保持TCP连接的正确运行

任意时刻计算机都可以有几条TCP连接处于打开状态,TCP是通过端口号来保持所有这些连接的正确运行的。
TCP连接是通过4个值来是识别的:
<源IP地址、源端口号、目的IP地址、目的端口号>

对TCP性能的考虑

HTTP事务的时延


HTTP事务时延有一下几种主要原因:

  1. 从URL中解析IP地址及端口号
  2. 建立TCP连接
  3. 传输请求报文,及服务器处理请求报文
  4. 返回响应报文

TCP网络时延的大小取决于硬件速度,网络和服务器的负载,请求和响应报文的尺寸,客户端和服务器的距离等

HTTP连接的处理

Connection首部

HTTP允许在客户端和最终的源端服务器之间存在一串HTTP中间实体,包括代理,网关,缓存等。
在某些情况下,两个相邻的HTTP应用程序会为它们共享的连接应用一组选项。
HTTP的Connection首部字段中有一个由逗号分隔的连接标签列表,这些标签为此连接指定了一些不会传播到其他连接中去的选项。

  1. 当HTTP应用程序收到一条带有Connection首部的报文时,接收端会接卸发送端请求的所有选项,并将其应用。
  2. 在将此报文转发给下一跳地址之前,删除Connection首部及Connection中列出的所有首部

并行连接

HTTP允许客户端打开多条连接,并行地执行多个HTTP事务

并行连接可能会提高页面的加载速度

并行连接不一定会更快

并行连接的速度可能会更快,但不一定总是更快。
当客户端的网络带宽不足时,大部分的时间肯能都是用来传送数据的,一个连接到速度较快的服务器上的HTTP事务很容易好近所有可能用的Modem带宽。
而且,打开大量连接会消耗很多内存资源,从而引发自身的性能问题

并行连接可能让人“感觉”更快一些

当更多的组件对象同时出现在屏幕上,使用户能够看到加载的进展,哪怕速度上没有变化,也会让人感觉更快

持久连接

Web客户端经常会打开同一个站点的连接。
HTTP/1.1允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便为未来的HTTP请求重用现存的连接。
在事务处理结束后仍然保持在打开状态的TCP连接被称为持久连接

管道化连接

HTTP/1.1允许在持久连接上可选地使用请求管道
在响应到达之前,可以将多条请求放入队列。
当第一条请求通过网络流向地球另一端的服务器时,第二条和第三条也可以开始发送了
管道化连接有如下几条限制:

  • 如果HTTP客户端无法确认连接是持久的,就不应该使用管道
  • 必须按照与请求相同的顺序回送HTTP响应
  • HTTP客户端必须做好连接会在任意时刻关闭的准备
  • HTTP客户端不应该用管道化的方式发送会产生副作用的请求,如POST,否则,当出错时,就会存在某些方法永远不会被执行的风险。

几种连接图

《HTTP权威指南》4-连接管理的更多相关文章

  1. 和我一起学《HTTP权威指南》——连接管理

    连接管理 1.TCP连接 几乎所有的HTTP通信都是由TCP/IP承载的. 浏览网页时客户端执行的操作: 如浏览http://www.joes-hardware.com:80/power-tools. ...

  2. HTTP权威指南之连接管理

    TCP连接世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的, TCP/IP 是全球计算机及网络设备都在使用的一种常用的分组交换网络分层协议集. 客户端应用程序可以打开一条 TCP/IP 连 ...

  3. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  4. 《HTTP权威指南》之HTTP连接管理及对TCP性能的考虑

    在上一篇博客中(<HTTP权威指南>之HTTP相关概念详解)我们简单对HTTP相关的基本概念做了一些简单的了解,但未对HTTP连接管理的内容做一些详细的介绍.本篇博客我们就一起来看一下HT ...

  5. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  6. 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令

    2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...

  7. HTTP连接管理

    本文是<HTTP权威指南>读书笔记: 几乎所有的HTTP通信都是通过TCP/IP承载的,当HTTP要传送一些报文时,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输.因此HTT ...

  8. Netty权威指南

    Netty权威指南(异步非阻塞通信领域的经典之作,国内首本深入剖析Netty的著作,全面系统讲解原理.实战和源码,带你完美进阶Netty工程师.) 李林锋 著   ISBN 978-7-121-233 ...

  9. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  10. Hadoop权威指南:HDFS-数据流

    Hadoop权威指南:HDFS-数据流 [TOC] 剖析文件读取 客户端通过调用FileSystem对象的open()方法来打开希望读取的文件,对于HDFS来说, 这个对象是分布式文件系统的一个实例 ...

随机推荐

  1. python_Tkinter1

    一个更详细的Tkinter笔记: 首先是最重要基础的,如何 创建一个窗口 窗口代码: #coding:utf8 import Tkinter show = Tkinter.Tk() show.titl ...

  2. 使用syslog服务器存储cp防火墙日志配置

    版本:R80.20 step1:创建syslog 服务器,如下图: step2:配置syslog 服务器,如下图:   step3:配置网关日志服务器,添加设定的syslog服务器,如下图:   st ...

  3. Tigase-02 tigase-server7.1.0使用git 克隆下来,并在eclipse 上运行调试

    继 Tigase-01 使用spark或spi登录Tigase服务器,这节说明下使用 eclipse git克隆 tigase-server7.1.0,并运行调试!最近有不少同学尝试去git clon ...

  4. mvc @html.action() 跨area调用controller 中的action

    @{Html.RenderAction("ActionName", "ControllerName", new { area = "Manager&q ...

  5. srs之深入浅出看流媒体

    本文转载:https://blog.csdn.net/zjqlovell/article/details/50786040 CDN这几年爆炸式增长,带宽提速是根源,而HTTP始终还是那个屌样,因此目前 ...

  6. github ignore 规范

    转自:https://www.cnblogs.com/xuld gitignore 应该包含 5 块内容: 当前项目需要忽略的文件 项目性质需要忽略的文件(比如是 nodejs 项目,有些文件就需要忽 ...

  7. 记一次mac下使用mamp集成环境配置lumen项目自定义域名遇到的花样问题

    1.安装好mamp集成环境,自行百度. 2.从公司项目版本库里将项目克隆到本地. 好了,开始配置自定义域名来访问项目,以下是遇到的问题集锦... 1.web服务器使用的nginx,配置完域名访问报40 ...

  8. C# 互通操作 (二)基础知识1

    [DllImport("user32.dll", EntryPoint = "MessageBox")] public static extern int De ...

  9. java中的 java.util.concurrent.locks.ReentrantLock类中的lockInterruptibly()方法介绍

    在java的 java.util.concurrent.locks包中,ReentrantLock类实现了lock接口,lock接口用于加锁和解锁限制,加锁后必须释放锁,其他的线程才能进入到里面执行, ...

  10. 常用JSON接口

    地图接口阿里云根据地区名获取经纬度接口http://gc.ditu.aliyun.com/geocoding?a=苏州市 官方文档参数解释: 纬度,经度 type 001 (100代表道路,010代表 ...