欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HTTP权威指南之连接管理

程序员文章站 2022-03-03 08:44:41
...

连接管理

 

  • 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应用程序需要做好正确处理非预期关闭的能力。