HTTP权威指南------1.4连接管理

本文详细介绍了HTTP连接管理,包括TCP连接的建立、性能、HTTP连接的类型如串行、并行、持久和管道化连接,以及连接关闭的策略。讨论了TCP的握手延迟、慢启动、Nagle算法和TIME_WAIT状态对HTTP性能的影响,强调了持久连接和管道化连接在提高性能方面的作用。
摘要由CSDN通过智能技术生成

连接管理

HTTP是使用TCP连接的,HTTPS是在HTTP与TCP之间插入一层SSL的加密层保证传输安全,最后还是以TCP进行下层的传输。

TCP连接

TCP为HTTP提供可靠的比特传输,并且保证传输的有序性和正确性。

TCP流分段与IP分组传输

显然TCP还需要更下层的IP协议进行协助传输数据,TCP将HTTP报文的内容以流的形式进行有序传输,并将其划分为更小的TCP段,装到IP分组中交由IP协议进行传输,这些操作都是对上层透明的。

与HTTP报文类似,IP分组和TCP段也是含有首部的,于是一个IP分组中包含三个部分,IP分组与TCP段的首部,还有一个TCP数据块。其中TCP段首部与TCP数据块构成IP分组的数据部分。

IP分组的首部包含源与目的地址的IP,还有整个分组的相关信息,TCP首部则包含了相应的端口号,TCP控制标记等信息。

TCP连接识别

使用端口号来对同一时间内多个TCP连接进行区分,并以此保证其正确运行。相应的连接的表示以IP地址+端口号的组合来进行标记,一条连接对应一个源IP地址+端口号和一个目的IP地址+端口号
相应的连接之间可以使用相同的目的端口号,或者使用相同的源IP地址,但不存在两个连接使用的四个部分完全相同。

TCP套接字与编程

通过系统中的相关API(如UNIX中的套接字API),可以实现对于TCP连接的编程,而相应的API都隐藏了TCP与IP的细节(包括底层协议的握手细节,TCP流与IP分组间分段重装的细节);其允许操作进行TCP端点数据结构的创建,并与远程的服务器TCP端点连接与数据流的读写。

建立连接是需要时间的,从服务器监听开始等待连接,到建立TCP连接完成,其时间花费不仅取决于传输的距离,还有服务器的负载,网络的拥挤程度等。

TCP的性能

由于TCP于HTTP在协议栈中的位置精密相连,所以TCP的性能会直接影响HTTP事务的性能。

HTTP事务延迟


显然HTTP处理事务的时间在整个过程中的占比是极小的,除非服务器内部出现长时间的等待,否则HTTP的时延主要由TCP时延构成。

  • URL到IP+端口需要通过DNS服务器解析,相应的时间会有花费。
  • 客户端与服务器间建立TCP连接会有时间消耗(三次握手),如果有多个HTTP连接的话,就会有多个TCP的连接过程,对应的时间延迟会更大。
  • 连接建立后相应的请求发送也需要时间,请求到达后Web服务器会对其处理,相应的响应返回也需要时间。

总的来说时延的原因是复杂的,有硬件的因素,网络与服务器的负载,请求与响应报文的大小,传输距离等等,与TCP协议的复杂程度也有很大关系。

TCP的相关延迟大致可以包含以下几个因素:

  • TCP连接的握手延时
  • TCP慢启动拥塞控制
  • 数据聚集的Nagle算法
  • 用于捎带确认的TCP确认算法
  • TIME_WAIT时延与端口耗尽
TCP连接的握手延时

TCP通过一系列的IP分组来进行参数沟通,连接有关的参数会在这些交互中确定,如果传输的数据量过小,对应的有效传输率就会很低,HTTP性能就会下降。

  • 第一次握手:报文的SYN字段被置为1,客户端选取一个起始序号放到报文中一并发过去。连接的一方向对方说明自己的存在。
  • 第二次握手:服务器收到了数据包,从中提取SYN字段,并且进行相应的处理,发送一个数据包告知客户端。数据报中的确认字段为客户端传来的序号加一,同时服务器会选一个自己的起始序号放入报文序号段处,并将SYN字段置1。
  • 第三次握手:客户端收到服务端的报文后时,进行相应的处理,并发送第三次的握手包,其中的序号字段为之前的加一,确认字段为接受到的序号加一。在最后一个握手包中就可以进行相应的数据捎带传输了。

这些握手分组对上层都是透明的,上层只能察觉相应的时延,HTTP事务中的数据一般都不多,相应的用于数据传输的只有第三次握手

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值