Page 112 - HTTP权威指南
P. 112
图 4-1 显示了 Web 浏览器是如何用 HTTP 从 Joe 的五金商店下载 power-tools.html
页面的。图 4-6 中的伪代码说明了可以怎样通过套接字 API 来凸显客户端和服务器
在实现 HTTP 事务时所应执行的步骤。
客户端 服务器
(S1)创建新的套接字(socket)
(S2)将套接字绑定到端口80上去(bind)
(S3)允许套接字进行连接(listen)
(S4)等待连接(accept)
čC1)获取IP地址和端口号
čC2)创建新的套接字(socket)
čC3)连接到服务器IP:port上去(connect)
čS5Ď通知应用程序有连接到来
čC4)连接成功 čS6Ď开始读取请求(read)
čC5)发送HTTP请求(write)
čC6)等待HTTP响应(read)
čS7)处理HTTP请求报文
čS8)回送HTTP响应(write)
čC7Ď处理HTTP响应 čS9)关闭连接(close)
čC8)关闭连接(close)
图 4-6 TCP 客户端和服务器是如何通过 TCP 套接字接口进行通信的 79
我们从 Web 服务器等待连接(参见图 4-6,S4)开始。客户端根据 URL 判定出 IP
地址和端口号,并建立一条到服务器的 TCP 连接(参见图 4-6,C3)。建立连接可
能要花费一些时间,时间长短取决于服务器距离的远近、服务器的负载情况,以及
因特网的拥挤程度。
一旦建立了连接,客户端就会发送 HTTP 请求(参见图 4-6,C5),服务器则会读取
请求(参见图 4-6,S6)。一旦服务器获取了整条请求报文,就会对请求进行处理,
执行所请求的动作(参见图 4-6,S7),并将数据写回客户端。客户端读取数据(参
见图 4-6,C6),并对响应数据进行处理(参见图 4-6,C7)。
4.2 对TCP性能的考虑
HTTP 紧挨着 TCP,位于其上层,所以 HTTP 事务的性能在很大程度上取决于底层
TCP 通道的性能。本节重点介绍了一些很重要的、对这些 TCP 连接的性能考虑。理
解了 TCP 的某些基本性能特点之后,就可以更好地理解 HTTP 的连接优化特性,这
样就能设计实现一些更高性能的 HTTP 应用程序了。
连接管理 | 85