HTTP连接管理

HTTP通信是由TCP/IP承载的,TCP/IP是全球计算机及网络设备都在使用的一种常用的分组交换网络分层协议集。HTTP连接实际上就是TCP连接和一些使用连接的规则。TCP的数据是通过名为IP分组(或IP数据报)的小数据块来发送的。
这里写图片描述
HTTP要传送一条报文时,会以流的形式将报文数据的内容通过一条打开的TCP连接按序传输。TCP收到数据流之后,会将数据流砍成被称作段的小数据块,并将段封装在IP组中,通过因特网进行传输。
每个TCP段都是由IP分组承载,从一个IP地址发送到另一个IP的地址。每个IP分组中都包括:
.一个IP分组首部(通常为20字节)
.一个TCP段首部(通常为20字节)
.一个TCP数据块(0个或多个字节)
这里写图片描述

这里写图片描述

HTTP事务的延迟有以下几种原因:
1.客户端首先要根据URI确定Web服务器的IP地址和端口号,如果最近没有对URI中的主机名进行访问,通过DNS解析系统将URI中的主机名转换成一个IP地址可能要花费一定的时间。
2.客户端向服务器发送一条TCP连接请求,并等待服务器回送一个请求接受应答。每个新的TCP连接都会有连接建立时延,这个值通常最多只有一两秒钟,但如果有数百个HTTP事务的话,这个值会快速叠加上去。
3.传输请求报文,以及服务器处理请求报文都需要时间。
4.Web服务器回送HTTP响应。
这些TCP网络时延的大小取决于硬件速度、网络和服务器的负载,请求和响应报文的大小,以及客户端和服务器之间的距离。TCP协议的技术复杂性也会对时延造成影响。

TCP相关时延
1.TCP连接建立握手;
2.TCP慢启动拥塞控制;
3.数据聚集的Nagle算法;
4.用于捎带确认的TCP延迟确认算法;
5.TIME_WAIT时延和端口耗尽。

提高HTTP连接性能的方法:
1.并行连接:通过多条TCP连接发起并发的HTTP请求。
2.持久连接:重用TCP连接,以消除连接及关闭时延。
3.管道化连接:通过共享的TCP连接发起并发的HTTP请求。

Keep-Alive 操作
实现HTTP/1.0连接的客户端可以通过包含Connection:Keep-Alive首部请求将一条连接保持在打开状态。如果服务器愿意为下一条请求将连接保持在打开状态,就在响应中包含相同的首部。如果响应中没有Connection:Keep-Alive首部,客户端就认为服务器不支持Keep-alive,会在发回响应报文之后关闭连接。
Keep-Alive连接的限制和规则
1.在HTTP/1.0中,keep-alive并不是默认使用的。客户端必须发送一个Connection:Keeyp-Alive请求首部来激活keep-alive连接。
2.Connection:Keeyp-Alive首部必须随所有希望保持持久连接的报文一起发送,如果客户端没有发送Connection:Keeyp-Alive首部,服务器就会在那条请求之后关闭连接。
3.客户端探明响应中没有Connection:Keeyp-Alive响应首部,就可以知道服务器发出响应之后是否会关闭连接了。
4.实体的主体部分必须有正确的Content-Length,有多部件媒体类型,或者用分块传输编码的方式进行了编码。
5.代理和网关必须执行Connection首部的规则。代理或网关必须在将报文转发出去或将其高速缓存之前,删除在Connection首部中命名的所有首部字段以及Connection首部自身。

HTTP/1.1持久连接
HTTP/1.1持久连接在默认情况下是激活的。
持久连接的限制和规则
1.发送了Connection:close请求首部之后,客户端就无法在那条连接上发送更多的请求了。
2.只有当连接上所有的报文都有正确的、自定义报文长度时-也就是说,实体主体部分的长度都和相应的Content-Length一致,或者是用分块传输编码方式编码的-连接才能持久保持。
3.HTTP/1.1的代理必须能够分别管理与客户端和服务器的持久连接-每个持久连接都只适用于一跳传输。
4.HTTP/1.1的代理服务器不应该与HTTP/1.0客户端建立持久连接,除非它们了解客户端的处理能力。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值