HTTP权威指南(读书笔记)2

原创 2015年07月10日 14:52:25

第四章  链接管理

TCP连接
世界上几乎所有的HTTP 通信都是由TCP/IP 承载的,TCP/IP 是全球计算机及网络
设备都在使用的一种常用的分组交换网络分层协议集。客户端应用程序可以打开一
条TCP/IP 连接,连接到可能运行在世界任何地方的服务器应用程序。一旦连接建
立起来了,在客户端和服务器的计算机之间交换的报文就永远不会丢失、受损或
失序。
TCP 为HTTP 提供了一条可靠的比特传输管道。从TCP 连接一端填入的字节会从另
一端以原有的顺序、正确地传送出来

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

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

    套接字  API  调用                                                      描  述
s = socket(<parameters>)              创建一个新的、未命名、未关联的套接字
bind(s,<local IP:port>)                     向套接字赋一个本地端口号和接口
connect(s, <remote IP:port>)          创建一条连接本地套接字与远程主机及端口的连接
listen(s,...)                                         标识一个本地套接字,使其可以合法接受连接
s2 = accept(s)                                  等待某人建立一条到本地端口的连接
n = read(s, buffer, n)                        尝试从套接字向缓冲区读取n 个字节
n = write(s, buffer, n)                        尝试从缓冲区中向套接字写入n 个字节
close(s)                                             完全关闭TCP 连接
shutdown(s,<side>)                         只关闭TCP 连接的输入或输出端
getsockopt(s,...)                               读取某个内部套接字配置选项的值
setsockopt(s,...)                               修改某个内部套接字配置选项的值

图4-1 显示了Web 浏览器是如何用HTTP 从Joe 的五金商店下载power-tools.html
页面的。图4-6 中的伪代码说明了可以怎样通过套接字API 来凸显客户端和服务器
在实现HTTP 事务时所应执行的步骤。

图4-6 TCP 客户端和服务器是如何通过TCP 套接字接口进行通信的

   HTTP 紧挨着TCP,位于其上层,所以HTTP 事务的性能在很大程度上取决于底层
TCP 通道的性能。

本节其余部分列出了一些会对HTTP 程序员产生影响的、最常见的TCP 相关时延,
其中包括:
• TCP 连接建立握手;
• TCP 慢启动拥塞控制;
• 数据聚集的 Nagle 算法;
• 用于捎带确认的 TCP 延迟确认算法;
• TIME_WAIT 时延和端口耗尽。
如果要编写高性能的HTTP 软件,就应该理解上面的每一个因素。如果不需要进行
这个级别的性能优化,可以跳过这部分容。

  TCP连接的握手时延

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


每个TCP 段都有一个序列号和数据完整性校验和。每个段的接收者收到完好的段
时,都会向发送者回送小的确认分组。如果发送者没有在指定的窗口时间内收到确
认信息,发送者就认为分组已被破坏或损毁,并重发数据。






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《HTTP权威指南》读书笔记(6)-实体和编码

一、实体首部HTTP实体首部描述了HTTP报名的内容。HTTP/1.1版定义了以下10个基本字体首部字段。Content-Type:实体中所承载对象的类型Content-Length:所传送实体的长度...

《HTTP权威指南》读书笔记(一):初探缓存

缓存的原理:客户端向服务器发送一个请求时,会在本地保存返回的内容(HTML页面、图片、文件等);当下次用同一个URL访问时,如果本地有缓存,请求就不会到达服务器,会直接使用本地副本来构建响应。缓存的四...

计算机网络和http权威指南 读书笔记

计算机网络笔记 网络层 网络层向上提供无连接的,尽最大努力交付的数据报服务 网络层不提供数据质量承诺 物理层使用的中间设备叫转发器repeater 数据链路层叫网桥bridge 网络层叫路由器rou...

[HTTP权威指南读书笔记]第二章—URL与资源

URL对于网络相当与有彼岸

《HTTP权威指南》读书笔记(4)-缓存

概述  Web缓存可以自动保存常见文档副本的HTTP设备。当Web请求抵达缓存时,如果本地有“已缓存的”副本,就从本地存储设备而不是原始服务器中提取这个文档。使用缓存的优点减少了冗余的数据传输缓解了网...

《HTTP权威指南》读书笔记(5)-客户端识别与Cookie机制

一、Cookie的类型    可以笼统地将Cookie分为两大类:会话Cookie和持久Cookie。    会话Cookie是一种临时Cookie,它记录了用户访问站点时的设置和偏好。用户退出浏览器...

[HTTP权威指南读书笔记]第四章—连接管理

本文章是转载自:http://raytaylorlin.com/Tech/web/HTTP/HTTP-connection-management/。文章作者读

《HTTP权威指南》读书笔记(二)

HTTP的方法: GET:向服务器请求资源 POST:向服务器请求资源并提交数据eg:登录时输入用户名、密码后,点击登录按钮就是一个POST动作 HEAD:请求服务器,但仅返回首部,不包含主体内容可以...

CM3-读书笔记《Cortex-M3权威指南Cn》-2

目的:找到一种适合的多平台的开发环境 在本文后将详细描述ECLIPSE+GCC的免费开源环境搭建 和一系列demo工程  (时间紧凑,先摘录原文,回头会来写体会) 开发工具   在开始使用C...

《CSS权威指南》读书笔记2

《CSS权威指南》
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)