`
苏er
  • 浏览: 24012 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

4.5长连接

 
阅读更多

HTTP1.1和HTTP1.0的高版本,允许使用已有的连接发送不同的请求,这种在连接成功后一直保持开启的连接可称为持久连接(长连接)。长连接一直保持开启状态,直到客户端发起关闭连接的请求。

4.5.1 长连接和并发连接

长连接有时比并发连接更具备优势:

降低建立http连接的资源开销和延迟,原因是不必新增连接;

保持连接状态可调整;

降低潜在的连接数;

劣势:

长连接需要精心维护,否则有可能使应有产生巨大的连接数;

开销大量本地资源;

开销大量远端客户端和服务器端资源;

长连接和并发连接同时使用才能得到更好性能,现在有不少浏览器都使用多个长连接的方式工作。

目前有两种模式:HTTP/1.0+"Keep-alive",HTTP/1.1"persistent' 两种方式。

4.5.2 HTTP/1.0+"Keep-alive"连接

许多HTTP1.0浏览器和服务器都被升级来支持一种早期实验性长连接Keep-alive模式长连接.这种早期的长连接诟病于一些互通性的设计问题,尽管此问题已经在HTTP1.1做了修正,但仍然有很多客户端使用这种长连接。

一个长连接内的四次请求-响应交互,相比于建立四次连接的时间优势,我想再次不用多少,大家都应该知道。原因是,长连接内的四次交互回避了建立连接的开销。

4.5.3长连接操作

不赞成使用keep-alive属性,并且HTTP1.1说明文档 中已经不再描述此属性。然而,keep-alive握手在浏览器和服务端的应用中还经常被使用,因此HTTP协议的实现者必须做好准备用此属性做互动操作。

客户端要实现HTTP1.0长连接,可以通过报文头中添加Keep-Alive的属性的方式获得。

如果服务器端愿意保持这个连接的长开启状态,它将在响应报文的报文头中添加相同的属性。如果响应报文中没有此属性,那么客户端假设服务器不支持长连接,并且认为服务器在返回消息后就关闭了这个连接。

4.5.4Keep-Alive选项

要注意,keep-alive报文头支持作为保持长连接的请求,但并不意味着肯定可以获取长连接。客户端、服务器端并不需要都同意去建立一个长连接会话。他们可以在任何时间关闭空闲的长连接,并且可以无限制的控制长连接内的交互处理量。

在http报文头中,可以通过多个属性(以逗号分割)控制长连接的行为。

-timeout参数,在服务器端的响应报文中,用以预估此长连接的大概最长会话时间;

-max参数,在服务器端的响应报文中,用以预估长连接存活期大概能处理多少次交互;

-keep-alive头也可以支持一些自定义的http不会做处理的属性,用户系统检查或debug等,语法为name=[value];

keep-alive头也是完全可以选的,只有当keep-alive参数出现在Connection属性中,才会允许长连接。

例如:

Connection:Keep-Alive

Keep-Alive:max=5,timeout=120

4.5.5Keep-Alive连接的限制和规则

Keep-Alive连接连接中有一些限制和需要明确注意的东西:

-keep-alive不是HTTP1.0默认开启的。客户端必须发送Connection:Keep-Alive请求报文头以激活长连接;

-Connection:Keep-Alive头必须和所有需要持久化交互的信息一起发出;

-在服务器端的响应报文头中如果不再有Connection:Keep-Alive,客户端必须能够识别出来;

-只有当报文体长度可以在不关闭连接的情况下就可以断定,才能保持连接长开启状态,这意味着报文体必须有一个正确的Content-length,多种载体类别,或者被分段编码。发送错误包体长度信息是非常不好的,因为这样交易的结束点就不可能探测的不准确了;

-代理和网关必须加强连接头的规则,在转发或缓存之前,代理和网关必须移除所有Connection header中的域,以及Connection header自身;

-正规的来说,keep-alive连接 不应该在不支持这种Connection header的代理服务器之间建立,以避免和dumb代理之间的交互问题,接下来会进行讲解,实际上keep-alive在实际中并不总是可用的;

-技术角度来讲,任何Connection header域(包括Connection:Keep-Alive)在被HTTP1.0设备接收后,都应该被忽略,因为,他们可能是被其他过时的代理服务器转发过来的。实际情况中,一些客户端和服务器端转变了此规则,当然这要承担来自过时代理服务器转发的风险;

-如果客户端在收到响应报文前,连接就被关闭了,那么他必须做好重复请求的准备,除非重复请求会给客户端带来不良的其他影响。

to be continue ...

分享到:
评论

相关推荐

    emmc协议,里面有4.4和4.5和4.51和5.0四个pdf

    本压缩包包含了EMMC协议的四个版本:4.4、4.5、4.51和5.0,每个版本都有其特定的改进和新增特性。下面将分别介绍这些版本的关键知识点: 1. EMMC协议4.4版: - 这个版本主要加强了对高容量存储的支持,最大容量可...

    Flex 4.5''中文资料

    3. **机械手套连接参考**:Flex 4.5''弯曲度传感器还可以用于制作机械手套等智能穿戴设备。在机械手套的设计中,传感器可以安装在手指关节处,以检测手指的弯曲程度。通过这种方式,机械手套能够更加精确地模仿人手...

    httpclient 4.5 api文档

    - **定义**:定期检查连接池中的连接,关闭闲置时间过长的连接。 - **目的**:防止资源浪费。 ##### 2.6 连接保活策略 - **定义**:维护连接活动状态,防止服务器端关闭空闲连接。 - **实现方法**:定期发送空闲...

    松下连接部品4.5毫米方形SMD轻触开关样本.pdf

    松下连接部品4.5毫米方形SMD轻触开关是一类专为便携式电子设备设计的开关组件,适用于如摄像机、便携式音响设备等多种操作开关。从给出的样本内容来看,这些开关具有一定的技术参数和特点,这些对于理解产品特性和...

    secureCRT4.5

    同时,它还提供了会话锁定功能,如果用户长时间无操作,会话将自动锁定,防止未经授权的访问。 总的来说,secureCRT4.5是一款功能全面、安全可靠的远程访问工具,无论是在日常的系统维护、代码部署还是自动化工作中...

    c3p0(0.8.4.5 /0.9.1.1)

    3. **自动关闭连接**:当连接长时间未被使用,c3p0会自动将其回收,释放资源。 4. **连接配置**:c3p0提供了丰富的配置选项,允许开发者根据实际需求调整连接池的大小、连接超时时间、空闲连接测试频率等参数。 5....

    flex4.5中文文档

    ### Flex 4.5 中文文档关键知识点概览 #### 1. 引言与概述 - **Flex 4.5 发行版介绍**:此版本着重于将Flex框架拓展至移动设备领域,如智能手机和平板电脑。通过Adobe AIR技术的支持,开发者能够以接近桌面应用的...

    sqlite 驱动 .net4.5 x64

    6. **异步操作**:考虑到.NET 4.5引入了异步编程模型,SQLite驱动也提供了异步版本的方法,如ExecuteNonQueryAsync、ExecuteReaderAsync等,以便在执行长时间运行的数据库操作时,不阻塞UI线程,提升用户体验。...

    migrating oracle forms 4.5 to 6i

    - **兼容性问题**:在迁移过程中需要注意新旧版本之间的兼容性问题,尤其是在数据库连接、API调用等方面的差异。 - **代码重写**:可能需要对部分代码进行重写以适应新版本的要求,特别是那些使用了已被弃用功能的...

    手机电脑同步管理软件ActiveSyn4.5

    至于安装,我们可以看到压缩包内的"手机与电脑连接软件ActiveSyn45.msi"文件,这是ActiveSyn4.5的安装程序。只需双击运行,按照提示步骤即可轻松完成安装,开启你的手机电脑同步之旅。 总的来说,ActiveSyn4.5作为...

    Node.js-短网址基于nodejsv4.5redismongodb开发

    项目中应包括对无效短网址、数据库连接问题等常见错误的处理。 10. **测试**:为了确保服务的稳定性和准确性,项目应该包含单元测试和集成测试,验证各个组件和整个系统的功能。 11. **部署与运维**:项目最终需要...

    PSCAD4.5建模与仿真(新手必看).doc

    调节方法:点击一段导线,它的两端就会出现两个绿色的方块,此时点住某个方块对导线进行拉长或者缩短,直到想要的长度用适当长度的导线将各个元件按照原电路的拓扑结构连接起来。 模型建立注意事项 在建立电路模型...

    SuperSocket(服务端 客户端winform) net 4.5 最新代码写法.7z

    一个基于WPF + SuperSocket的TCP长连接小示例 SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,我们可以有更...

    Advanced Defrag V4.5

    1. 安装与启动:下载并安装Advanced Defrag V4.5,运行后软件会自动检测连接的硬盘,并显示相关信息。 2. 分析磁盘:点击“分析”按钮,软件会扫描磁盘,展示碎片分布情况和可能的性能提升空间。 3. 选择整理模式...

    天正建筑 TS4.5

    76.[连接线段]修改:增加一种连接方式,可以将不闭合的Pline线首尾连接。选择集取连接的线段时,增加锁定层过滤。 77.[加剖断线]改错:当不选“按当前比例自动调整”且内涵比例不是1:100时,双线遮挡剖断的位置不在...

    debugview v4.5

    5. **内核模式支持**:除了用户模式的调试信息,DebugView还能在连接到内核调试器后,接收内核级别的调试消息。这对于操作系统级别的调试和驱动程序开发至关重要。 6. **命令行选项**:DebugView支持命令行参数,...

    使用Flex4.5开发Android应用程序

    你可以直接在模拟器或连接的Android设备上运行和测试应用,以确保其在真实环境中的表现。 八、发布和部署 完成开发后,通过Flash Builder将应用打包成AIR应用,然后可以通过Google Play或其他分发渠道发布到Android...

    4.5电容触摸屏结构尺寸pdf4

    文件中提到了K1A1、K2A2等区域定义,这些通常是触摸屏设计时的内部标记,用于指示不同功能区,比如触控感应区、边界区域或者连接器位置等。 4. 铁框(K1A1K2A2K1A1K2A2): 铁框是指围绕在触摸屏边缘的金属框架,...

    vmware view 4.5功能面面观

    ### VMware View 4.5 功能详析 #### 一、概述 VMware View 4.5 是一款专为将桌面作为托管服务交付而设计的虚拟桌面解决方案。它结合了VMware vSphere的强大功能,提供了从平台搭建到用户体验的一系列完善的服务。...

Global site tag (gtag.js) - Google Analytics