`
chenshangge
  • 浏览: 87851 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类

转载:http长连接与短连接

 
阅读更多
1. HTTP协议与TCP/IP协议的关系

HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。



2. 如何理解HTTP协议是无状态的

HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。



3. 什么是长连接、短连接?

在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。

但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

3.1 TCP连接

当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接 时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的

3.2 TCP短连接

我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在 client/server间传递一次读写操作

短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段

3.3 TCP长连接

接下来我们再模拟一下长连接的情况,client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。

首先说一下TCP/IP详解上讲到的TCP保活功能,保活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源。如果客户已经消失,使得服务器上保留一个半开放的连接,而服务器又在等待来自客户端的数据,则服务器将应远等待客户端的数据,保活功能就是试图在服务 器端检测到这种半开放的连接。

如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4个状态之一:

客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。
客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测 ,每个间隔75秒。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。
客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。


4. 长连接和短连接的优点和缺点

由上可以看出,长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可 以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。

短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

长连接和短连接的产生在于client和server采取的关闭策略,具体的应用场景采用具体的策略,没有十全十美的选择,只有合适的选择。


转载:http://m635674608.iteye.com/blog/2299799
分享到:
评论

相关推荐

    JAVA数据库连接大全-转载

    这篇博客"JAVA数据库连接大全-转载"可能详细介绍了在Java中如何管理和使用数据库连接,包括使用JDBC API,数据库连接池以及相关的工具。这里我们将深入探讨JDBC、数据库连接池的重要性和配置方法。 1. **JDBC基础**...

    长压短抽除尘系统在快速掘进工作面的应用

    采用了以掘锚机、破碎机、跨骑式转载机、带式输送机为主要设备的快速掘进系统,集成了可直接连接到原掘锚机风筒的可移动的湿式除尘风机,并以通风系统参数计算为基础,对相关通风设备进行选型,形成了快速掘进工作面的长...

    关于贴片电感压敏电阻连接线问题详解

    将贴片压敏电阻接入电路的连接线要足够粗,推荐的连接线的尺寸注:接地线为5.5mm2以上连接线要尽可能短,且走直线,因为冲击电流会在连接线电感上产生附加电压,使被保护设备两端的限制电压升高。 本文由好电感 金...

    FastSocketLibrary.h [Version=1.0]

    介绍:DEV-C++上的快速套接字开启与连接;同时还搭载有其他扩展块,可以在很短的代码里实现多种功能。当然也可能会因为代码单一,无法实现自己的想法。但是没问题!FSL系列允许在原基础上进行修改,在保证原著作版权...

    分时图+量比--转载新浪博客.pdf

    而量比则是衡量股票成交量变化的一个指标,它反映了当前交易日的成交量与过去一段时间平均成交量的比较。 首先,让我们深入理解分时图。分时图以时间为横轴,价格为纵轴,通过线条连接每分钟或每5分钟的价格点,...

    RTS5732DL主控固态硬盘开卡教程

    2. **REALTEK专用开卡板:** 用于连接硬盘与计算机之间的特殊适配器。 3. **镊子:** 在某些操作中用于短接电路。 4. **开卡软件:** Realtek RTS5732DL专用开卡工具。 #### 二、修复步骤详解 ##### 步骤1:硬件...

    蓝牙手机控制的懒人专用智能房间控制器设计资料(转载、开源原理图、源码).zip

    在这个智能房间控制器中,蓝牙扮演了关键角色,使用户能够通过智能手机与控制器建立连接,发送控制指令,如开关灯光、调节温度等。 2. **手机应用程序开发**:调试版_蓝牙房间控制器.apk文件表明有一个安卓应用用于...

    单片机与DSP中的使用短路并联短截线设计带通滤波器

    连接3个并联短截线的04传输线段把中间的并联短截线转变成一个串联阻抗,该串联阻抗是一个串联谐振电路。  等效电路在图1(b)中给出。用这种方式设计窄带带通滤波器最为有效。如果其中的短截线为开路型,则可得到...

    套接字编程学习套接字编程学习

    `accept`函数用于接收新连接,返回一个新的套接字句柄,用于与客户端的通信。这个新的套接字将在处理完客户端请求后关闭,而原始侦听套接字将继续等待新的连接。 在实际应用中,服务器端还需要实现一个循环来持续...

    转载EB-308对讲机编程软件

    EB-308对讲机是一款常见的无线电通信设备,主要用于短距离无线通讯,常被用于户外活动、工地作业、公共安全等领域。对于这样的设备,编程软件是其功能扩展和个性化设置的重要工具。本文将深入探讨EB-308对讲机编程...

    秒杀应用的MySQL数据库优化 (转载)

    首先,我们要理解秒杀业务的特点:短时间内产生大量请求,这可能导致数据库连接池过载,进而影响整个系统的响应速度。因此,优化的第一个关键点是**连接池管理**。合理的设置最大连接数、最小连接数以及超时策略,...

    TC35调试性能(转载)

    - 必须保证VBATT+电压不低于3.3V,避免发射脉冲时的电压跌落超过400mV,建议使用短的FFC电缆和低输出阻抗的电源。 5. POWER端口: - 用于外部电源供电,如充电器,最大电流500mA,输入电压5.5-8V。 6. /IGT端口...

    如何在企业环境中使用+Windows+部署服务(转载).pdf

    - Client2将自动连接到DC1的Windows部署服务, 并根据配置下载并安装Windows XP系统。 #### 实验总结 通过以上步骤, 我们成功地在企业环境中利用Windows部署服务实现了Windows XP系统的批量远程部署。这种方法不仅...

    十天学会php基础 转载

    - 字符串运算:使用`.`连接字符串,例如`echo $a.$b;`。 - 逻辑运算:`、`>`、`、`>=`、`==`、`!=`、`&&`、`and`、`||`、`or`、`xor`、`!`。 ### 6. 流程控制 流程控制是程序的重要组成部分,PHP提供了丰富的控制...

    性能测试种类_转载网友

    5. 稳定性测试:稳定性测试用于验证系统在长时间运行下的表现,检查是否存在一些潜在的缺陷,比如内存溢出或数据库连接问题。为缩短测试时间,通常会使用二八原则,将预期一天的压力在短时间内集中加载,比如在2小时...

    (煤矿机电运输战线)管子工操作规程.docx

    1. **装载与固定**:软质管或较短的管材、配件可以装入矿车进行运输;对于无法放入矿车的大型管材,则需使用叉车进行运输。装载时,必须确保管材的高度不超过矿车或叉车两侧的高度,并采取牢固的捆绑措施以防止在...

    跟姐姐学JSP —— JSP系统清晰的初级教程

    短连接是指:请求响应一次,服务器就关闭与浏览器之间的网络连接。 无状态是指,任意两次请求响应之间,没有直接的联系。 浏览器发出一个请求,服务器才能返回一个响应。一个请求对应一个响应,每个过程都是完全...

    输送机司机考试培训试题及答案.docx

    - **定义与功能**:堆煤保护是一种用来检测煤仓是否装满,或转载点是否堆积堵塞的保护装置。其主要功能在于避免因煤堆过高而导致的输送机损坏或安全事故。 - **工作原理**:通过煤位传感器监测煤位深度,一旦煤位...

Global site tag (gtag.js) - Google Analytics