HTTP事务时延的主要原因

本文探讨了HTTP通信中的时延问题,主要由TCP/IP协议的特性如TCP连接建立、DNS解析、TCP慢启动、Nagle算法、延迟确认以及TIME_WAIT状态导致。了解这些因素有助于优化网络性能。

        几乎世界上所有的HTTP通信都是由TCP/IP承载的。TCP/IP作为全球计算机及网络设备都在使用的一种常用的分组交换网络分层协议集,是一种可靠的网络传输协议,其数据是通过名为IP分组(或者IP数据报)的小数据块进行发送的。所以HTTP连接实际上也就是TCP连接及其使用规则。HTTP要传送一条报文时,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输,TCP收到数据流之后,会将数据流砍成被称作段的小数据块,并将段封装在IP分组中,通过因特网进行传输,而这些繁杂的工作是由TCP/IP软件来处理的,对于HTTP的使用者来说不用关心这些底层的细节。

        简单介绍一下IP分组。每个TCP段都是由IP分组承载,然后从一个IP地址发送到另一个IP地址的。每个IP分组中都包括:

  1. 一个IP分组首部(通常为20个字节),包含了源和目的IP地址、长度和其他一些标记;
  2. 一个TCP段首部(通常为20个字节),包含了TCP端口号、TCP控制标记以及用于数据排序和完整性检测的数字值;
  3. 一个TCP数据块(0或多个字节)。
        HTTP网络协议栈由上到下:HTTP(应用层)---->TCP(传输层)---->IP(网络层)---->网络接口(数据链路层)。而HTTP的安全版本,即HTTPS,就是在HTTP和TCP之间插入了一个密码加密层(TLS或SSL)。
言归正传,下面介绍HTTP事务时延的几种主要原因:
  1. 客户端首先需要根据URI确定Web服务器的IP地址和端口号,即DNS解析。如果我们是第一次访问某个URL中的主机名,那么这次DNS解析可能花费数十秒。
  2. 接下来,客户端向服务端发送一条TCP连接请求,并等待服务端的回复。每条新的TCP连接都会有最多一两秒钟的连接建立时延,但如果有数百个HTTP事务的话,这个值可能会快速叠加上去。
  3. 连接建立起来之后,客户端开始通过该TCP通道发送HTTP请求,Web服务器从TCP通道中读取到请求报文,对该报文进行解析处理,这个过程需要时间。这个过程中对报文的解析处理可能会占据较多时间。
  4. 最后,Web服务器回传HTTP响应,这也需要时间。
        而这些网络时延的大小取决于硬件速度、网络和服务器的负载,请求和响应报文的尺寸,以及客户端和服务器之间的距离。当然,TCP协议的技术复杂性也会对时延产生巨大影响。
        上面所说的HTTP事务时延的原因都是比较表层的原因,由于HTTP是位于TCP/IP协议上的,所以HTTP的性能绝大部分取决于TCP/IP的性能。以下是会对HTTP产生影响、最为常见的TCP相关时延:
  1. TCP连接建立握手;
  2. TCP慢启动拥塞控制;
  3. 数据聚集的Nagle算法;
  4. 用于捎带确认的TCP延迟确认算法;
  5. TIME_WAIT时延和端口耗尽 。
        如果要编写高性能的HTTP软件,我们就必须从TCP/IP这个层级去理解优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值