HTTP权威指南之连接管理

TCP连接
世界上几乎所有的 HTTP 通信都是由 TCP/IP 承载的, TCP/IP 是全球计算机及网络
设备都在使用的一种常用的分组交换网络分层协议集。 客户端应用程序可以打开一
条 TCP/IP 连接, 连接到可能运行在世界任何地方的服务器应用程序。 一旦连接建
立起来了, 在客户 端和服务器的计算机之间 交换的报文就永远不会丢失、 受损或
失序。尽管报文不会丢失或受损, 但如果计算机或网络崩溃了, 客户端和服务器之间的通信仍然会被断开。
在这种情况下, 会通知客户端和服务器通信中断了。

TCP 为 HTTP 提供了一条可靠 的比特传输管道。 从 TCP 连接一端填入的字节会从另
一端以原有的顺序、 正确地传送出来

HTTP 要传送一条报文时, 会以流的形式将报文数据的内容通过一条打开的 TCP 连
接按序传输。 TCP 收到数据流之后, 会将数据流砍成被称作段的小数据块, 并将段
封装在 IP 分组中, 通过因特网进行传输 所有这些工作都是由 TCP/
IP 软件来处理的, HTTP 程序员什么都看不到。

每个 TCP 段都是由 IP 分组承载, 从一个 IP 地址发送到另一个 IP 地址的。 每个 IP
分组中都包括:
• 一个 IP 分组首部(通常为 20 字节) ;
• 一个 TCP 段首部(通常为 20 字节) ;
• 一个 TCP 数据块( 0 个或多个字节)。
IP 首部包含了源和目 的 IP 地址、 长度和其他一些标记。 TCP 段的首部包含了 TCP
端口 号、 TCP 控制标记, 以及用于数据排序和完整性检查的一些数字值。

保持TCP连接的正确运行
在任意时刻计算机都可以有几条 TCP 连接处于打开状态。 TCP 是通过端口 号来保持
所有这些连接的正确运行的。
端口 号和雇员使用的电话分机号很类似。 就像公司的总机号码能将你接到前台, 而
分机号可以将你接到正确的雇员 位置一样, IP 地址可以将你连接到正确的计算机,
而端口 号则可以将你连接到正确的应用程序上去。 TCP 连接是通过 4 个值来识别的:
< 源 IP 地址、 源端口 号、 目 的 IP 地址、 目 的端口 号 >
这 4 个值一起唯一地定义了一条连接。 两条不同的 TCP 连接不能拥有 4 个完全相同
的地址组件值(但不同连接的部分组件 可以拥有相同的值)

HTTP 事务的时延有以下几种主要原因。
(1 ) 客户端首先需要根据 URI 确定 Web 服务器的 IP 地址和端口 号。 如果最近没有对
URI 中的主机名进行访问, 通过 DNS 解析系统将 URI 中的主机名转换成一个 IP
地址可能要花费数十秒的时间 3。
(2) 接下来, 客户端会向 服务器发送一条 TCP 连接请求, 并等待服务器回 送一个请
求接受应答。 每条新的 TCP 连接都会有连接建立时延。 这个值通常最多只有一
两秒钟, 但如果有数百个 HTTP 事务的话, 这个值会快速地叠加上去。
(3) 一旦连接建立起来了, 客户 端就会通过新建立的 TCP 管道来发送 HTTP 请求。
数据到达时, Web 服务器会从 TCP 连接中 读取请求报文, 并对请求进行处理。因特网传输请求报文,

以及服务器处理请求报文都需要时间。
(4) 然后, Web 服务器会回送 HTTP 响应, 这也需要花费时间。
这些 TCP 网络时延的大小取决于硬件速度、 网络和服务器的负载, 请求和响应报文
的尺寸, 以及客户端和服务器之间的距离。 TCP 协议的技术复杂性也会对时延产生
巨大的影响。

最常见的 TCP 相关时延,
其中包括:
• TCP 连接建立握手;
• TCP 慢启动拥塞控制;
• 数据聚集的 Nagle 算法;
• 用于捎带确认的 TCP 延迟确认算法;
• TIME_WAIT 时延和端口 耗尽。

TCP 连接握手需要经过以下几个步骤。
(1) 请求新的 TCP 连接时, 客户端要向服务器发送一个小的 TCP 分组(通常是 40 ~
60 个字节)。 这个分组中设置了一个特殊的 SYN 标记, 说明这是一个连接请求。
(2) 如果服务器接受了 连接, 就会对一些连接参数进行计算, 并向 客户端回 送一个
TCP 分组, 这个分组中 的 SYN 和 ACK 标记都被置位, 说明连接请求已被接受。
(3) 最后, 客户端向服务器回送一条确认信息, 通知它连接已成功建立。
现代的 TCP 栈都允许客户端在这个确认分组中发送数据。

程序员永远不会看到这些分组——这些分组都由 TCP/IP 软件管理, 对其是不
可见的。 HTTP 程序员看到的只是创建 TCP 连接时存在的时延。

通常 HTTP 事务都不会交换太多 数据, 此时, SYN/SYN+ACK 握手会产生一个可测量的时延。

TCP 连接的 ACK 分组 通常都足够大, 可以承载整个 HTTP 请求报文, 而且很多 HTTP 服务器响应报文都可
以放入一个 IP 分组中 去( 比如, 响应是包含了装饰性图 片的小型 HTML 文件, 或
者是对浏览器高速缓存请求产生的 304 Not Modified 响应)。

时间: 2024-11-10 13:52:40

HTTP权威指南之连接管理的相关文章

《Javascript权威指南》学习笔记之十九--HTML5 DOM新标准---处理文档元信息和管理交互能力

一.了解DOM 1.DOM是Document Object Model的缩写,即文档对象类型,是文档在内存中的表示形式,是一个应用程序接口,定义了文档的逻辑结构以及一套访问和处理文档的方法. 2.HTML DOM与Core DOM的区别:前者提供了大量的方法和属性,与现有的程序模型一致,更便于脚本的编写者控制. 二.document对象 使用window.document属性返回一个document对象,代表当前window内加载的文档.window可以省略.winName.document返回

Netty权威指南

Netty权威指南(异步非阻塞通信领域的经典之作,国内首本深入剖析Netty的著作,全面系统讲解原理.实战和源码,带你完美进阶Netty工程师.) 李林锋 著   ISBN 978-7-121-23343-2 2014年6月出版 定价:79.00元 524页 16开 编辑推荐 - 资深一线专家诚意之作,总结多年实践经验,带你全面掌握Java高并发异步通信的首选框架——Netty. - Facebook.阿里巴巴.1号店.并发编程网.JBoss等多位资深技术专家联名力荐. <Netty权威指南>

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

五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  输出执行过程信息verbose mode (-vvv for more, -vvvv to enable connection debugging)    -i INVENTORY, --inventory-file=INVENTORY    指定inventory信息,(default=/etc/ansi

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

2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会改进,还没买的小伙伴们可以买第二版. 一.安装1.安装要求:控制服务器:需要安装Python2.6/2.7被管理服务器:需要安装Python2.4 以上版本,若低于Python2.5 需要安装pythonsimplejson;若启用了selinux,则需要安装libselinux-python 2.yum安装

《Javascript权威指南》学习笔记之十六:BOM之源---BOM基本应用

BOM的基本应用包括:管理浏览器历史.解析地址和获取浏览器信息,本文将介绍这些应用. 一.浏览历史管理 1.history对象的方法和属性 History 对象包含用户(在浏览器窗口中)访问过的 URL,是 window 对象的一部分,可通过 window.history 属性对其进行访问.没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象. length属性:返回浏览器历史列表中的URl数量.是"前进"和"后退"两个按钮之下包含的地址数的总和.

Hadoop权威指南读书笔记

本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系统. MapReduce:分布式数据处理模型和执行环境,运行于大型商业集群. HDFS:分布式文件系统,运行于大型商用机集群. Pig:一种数据流语言和运行环境,用以检索非常大的数据集.Pig运行在MapReduce和HDFS的集群上. Hive:一个分布式.按列存储的数据仓库.Hive管理HDFS

《Hadoop权威指南》读书笔记

<Hadoop权威指南>读书笔记 Day1 第一章 1.MapReduce适合一次写入.多次读取数据的应用,关系型数据库则更适合持续更新的数据集. 2.MapReduce是一种线性的可伸缩编程模型. 3.高性能计算HPC和网格计算比较适合用于计算密集型的作业,但如果几点需要访问的数据量更庞大,很多节点就会因为网络带宽的瓶颈问题不得不闲下等数据.(HPC和网格计算的数据存储与SAN中,数据存储比较集中,数据访问一般通过网络) 4.MapReduce尽量在计算节点上存储数据,以实现数据的本地化快速

HTML5与CSS3权威指南.pdf4

拖放API HTML5实现了直接拖放操作API,简化HTML4利用mousedown.mousemove等事件实现的操作 实现拖放的步骤 1要将被拖动元素的draggable属性设置为true,img元素与a元素(必须指定href)默认允许拖放 2编写有关拖放的事件处理代码 DataTransfer对象的属性与方法 设定拖放时的视觉效果 dropEffect属性(目标元素)与effectAllowed属性(源元素)结合起来可以设定拖放时的视觉效果, 1如果effectAllowed属性设定为no

《HTTP权威指南》高清中文版pdf

下载地址:网盘下载 图书简介 编辑 <HTTP权威指南>由古尔利所著,<HTTP权威指南>详细解释了如何用HTTP来开发基于Web的应用程序,核心的因特网协议如何与架构构建块交互,如何正确实现因特网客户和服务器等.<HTTP权威指南>的中心内容是HTTP,本质是理解Web的工作原理,以及如何将这些知识应用到Web编程和管理之中,主要涵盖HTTP的技术运作方式.产生动机.性能和目标以及一些相关技术问题. <HTTP权威指南>适合所有想了解HTTP和Web底层结