1.两个问题1.HTTP如何使用TCP连接2.HTTP连接、并行连接、keep-alive(持久连接)和管道连接2.TCP连接1.什么是TCPTCP/IP是一种常见的世界各地的计算机和网络设备使用的分组交换网络层协议的分层协议集。客户端应用程序可以打开到可能在世界任何地方运行的服务器应用程序的TCP/IP连接。一旦建立连接,客户端和服务器计算机之间交换的消息永远不会丢失、损坏或乱序。2、浏览器的请求过程3、TCP的可靠数据管道HTTP连接其实就是一个TCP连接和一些使用连接的规则。TCP连接是Internet上的可靠连接。TCP为HTTP提供可靠的位传输管道。从TCP连接的一端填写的字节将按原来的顺序从另一端正确传输。4.TCP流被IP数据包分段传输。TCP数据以称为IP数据包(或IP数据报)的小数据块形式发送。HTTP位于TCP/IP协议栈的顶端。HTTP要传输消息时,会通过一个开放的TCP连接,以流的形式顺序传输消息数据的内容。TCP接收到数据流后,将数据流切成称为段的小数据块,并将这些段封装在IP数据包中,以便在Internet上传输。所有工作都由TCP/IP软件处理。每个TCP段都由一个IP数据包承载,从一个IP地址发送到另一个IP地址。每个IP包包括:1)一个IP包头(通常为20字节)2)一个TCP段头(通常为20字节)3)一个TCP数据块(0个或多个字节)IP包头包含源IP地址和目的IP地址,长度和其他一些旗帜。TCP报文段的头部包含TCP端口号、TCP控制标志,以及一些用于数据排序和完整性检查的数值。5、保持TCP连接的正确操作。在任何时候,计算机都可以打开多个TCP连接。TCP使用端口号来保持所有这些连接正常运行。一个TCP连接由四个值标识:<源IP地址,源端口号,目的IP地址,目的端口号>这四个值共同唯一定义了一个连接。两个不同的TCP连接不能有4个相同的地址分量值。6.TCP套接字编程操作系统提供了一些工具来操纵它的TCP连接。套接字API允许用户创建TCP端点数据结构,将这些端点连接到远程服务器TCP端点,以及读写数据流。TCPAPI隐藏了所有底层网络协议的握手细节,以及TCP数据流和IP数据包之间的分段和重组细节。客户端和服务器在实现HTTP事务时应该执行的步骤:三、几个HTTP连接1、串行连接串行事务处理延迟。当你打开一个index.html页面时,它包含3个页面如图所示,那么它的HTTP事务如图所示。缺点:每次事务都需要一个新的连接,所以连接延迟和慢启动延迟会加起来。2.并行连接每个事务都有自己的TCP连接,只有并行处理。3.持久连接HTTP/1.1允许HTTP设备在事务结束后保持TCP连接打开,以便为以后的HTTP请求重用现有的连接。在事务结束后保持打开状态的TCP连接称为持久连接。非持久连接在每个事务后关闭。持久连接在事务之间保持打开状态,直到客户端或服务器决定关闭它。通过重用对目标服务器打开的空闲持久连接,可以避免缓慢的连接建立阶段。而且,已经打开的连接可以避免慢启动的拥塞适应阶段,从而可以更快地传输数据。HTTP/1.0+:keep-aliveconnectionHTTP/1.1:persistentconnection4、pipelinedpersistentconnectionHTTP/1.1允许在persistentconnections上可选的使用requestpipelines。多个请求可以排队直到响应到达。当第一个请求通过网络流向另一端的服务器时,第二个和第三个请求也可以开始发送。在高延迟网络条件下,这样做可以减少网络回环时间,提高性能。
