第四章 连接管理

来源:互联网 发布:大数据查询平台 编辑:程序博客网 时间:2024/05/29 07:17
第四章 连接管理
1、TCP连接
HTTP连接是HTTP报文传输的关键通道
TCP/IP是全球计算机及网络设备使用的一种常用的分组交换网络分层协议集
1)TCP的可靠数据管道
HTTP连接实际是TCP连接和一些使用连接的规则
TCP为HTTP提供了一条可靠的比特传输管道

2)TCP流是分段的、由IP分组传送
HTTPS就是在HTTP和TCP之间插入一个密码加密层(TLS或SSL)
IP分组:IP分组首部(20字节)、TCP段首部(20字节)和TCP数据块(0个或多个字节)
3)保持TCP连接的正确运行
TCP通过<源IP地址、源端口号、目的IP地址和目的端口号>唯一标识的
4)用TCP套接字编程


2、对TCP性能的考虑
HTTP事务的性能很大程度上取决于底层TCP通道的性能
1)HTTP事务的时延
主要是TCP网络时延构成的
①客户端根据URI解析IP地址和端口号
②客户端发送连接请求并等待服务器回送请求接收应答
③客户端发送HTTP请求,Web服务器处理请求
④Web服务器回送HTTP响应
2)性能聚焦区域
最常见的TCP相关时延
①TCP连接建立握手
②TCP慢启动拥塞控制
③数据聚集的Nagle算法
④用于捎带确认的TCP延迟确认算法
⑤TIME_WAIT时延和端口耗尽
3)TCP连接的握手时延
TCP三次握手存在时延

4)延迟确认
在一个特定时间内将输出确认存放在缓冲区,寻找能够捎带它的输出数据分组。如果没有输出数据分组,将确认信息放在单独的分组传送
5)TCP慢启动
TCP连接起初会限制连接的最大速度,如果成功传输,会随着时间提高传输的速度。
目的:防止因特网的突然过载和拥塞
每成功接收一个分组,确认后下次可以成倍发送——“打开拥塞窗口”
6)Nagle算法与TCP_NODELAY
Nagle算法试图在发送一个分组前,将大量TCP数据绑定在一起,提高网络效率。鼓励发送全尺寸
可能会等待额外数据而产生延迟
HTTP应用程序设置TCP_NODELAY,禁用Nagle算法,但需确保发送大块数据
7)TIME_WAIT累积与端口耗尽
TIME_WAIT状态一般为2MSL,确保该段时间不会创建相同的IP地址和端口号
限制了连接到服务器的IP地址数

3、并行连接
通过多条TCP连接发起并发的HTTP请求
HTTP允许客户端打开多条连接,并行地执行多个HTTP事务
问题:带宽不足;大量连接消耗内存
浏览器使用并行连接,但是连接总数限制(通常是4个)。服务器可以随意关闭来自特定客户端的超量连接


4、持久连接
重用TCP连接,以消除连接及关闭时延
持久连接:事务处理结束之后仍然保持在打开状态
优点:避免缓慢的连接建立阶段;避免慢启动的拥塞适应阶段,以便更快速地进行数据的传输
1)持久以及并行连接
避免出现大量的空闲连接,耗费本地以及远程客户端和服务器的资源
现在,Web应用程序会打开少量的并行连接,每一个都是持久连接
2)keep-alive
Connection:keep-alive
希望保持持久连接的请求必须包含
必须确定报文实体部分长度,才可将连接保持在打开状态

3)HTTP/1.1持久连接
默认情况下是激活的,需要关闭,必须显式添加connection:close首部
一个客户端对任何服务器或代理最多维护两条持久连接


5、管道化连接
通过共享的TCP连接发起并发的HTTP请求
多条请求放入队列。当第一条请求到达服务器,第二条可以开始发送


6、正常关闭连接
幂等性:一个事务,不管是执行一次还是很多次,得到的结果相同
完全关闭:close
半关闭:shutdown
方法:应用程序先半关闭其输出信道,然后周期性检查其输入信道状态。如果一定时间对端没有关闭输入信道,应用程序强制关闭连接
原创粉丝点击