HTTP权威指南之连接管理

连接管理

 

  • TCP连接

tcp连接通过四个值来识别,<源ip地址,源端口号,目的IP地址,目的端口号>

TCP套接字 编程API,由操作系统提供。

常见的TCP相关时延:

  1. TCP连接的握手时延  syn --  syn+ack -- ack
  2. 延迟确认,TCP实现自己的确认机制来确保数据的成功传输,延迟确认算法会在一个特定的窗口时间内将确认放在缓冲区中,以寻找能够捎带它的输出数据分组。
  3. TCP慢启动,TCP连接会随着时间进行自我调谐,起初会限制连接的传输速度,如果数据传送成功,会随时间的推移,提高传输速度。
  4. Nagle算法及TCP_NODELAY, 如果TCP发送了大量只包含少量数据的包,则会严重影响网络性能,Nagle算法试图在发送一个分组之前,将大量TCP数据绑定在一起,提高网络效率。参数TCP_NODELAY禁用Nagle算法,防止小的http报文可能无法填满一个慢尺寸分组而产生的时延。
  5. TIME_WAIT和端口耗尽,TCP连接关闭时,会在内存中维护一个小的控制块,记录最近连接ip地址和端口号,时间为2msl,已确保这段时间内不会有具有相同地址和端口号的新连接。在性能基准测试环境下,该特性会限制客户端的连接数。
  • HTTP连接的处理
  1. Connection首部
  2. 串行事务,连接1--请求1--响应1--连接2--请求2--响应2--.........
  3. 并行连接

连接1--请求1--响应1

连接2--请求2--响应2

4. 持久连接:http在事务处理结束之后,将连接保持在打开状态,以便重用。去除了创建连接和关闭连接的开销。

    http/1.0+ keep-alive连接, 通过首部 Connection:keep-Alive指定,已经不在使用。

    http/1.1  persistent连接, 默认http连接即为persistent连接,要关闭连接,必须显示指定Connection:close首部。

5. 管道化连接,将多条请求放入队列,依次发送请求报文。这样可以降低网络的环回时间,提高性能。

6. 关闭连接,HTTP连接是随意解除连接,HTTP应用程序需要做好正确处理非预期关闭的能力。

 

你可能感兴趣的:(读书笔记)