持续连接和非持续连接(持续连接和非持续连接优缺点)

      最后更新:2023-07-02 00:39

      【计算机网络】http协议的持久连接的非流水线方式和非持久连接有区别么?

      有区别。 非持续连接是每访问一个对象就要建立一次TCP连接,TCP连接的三次握手加上HTTP的响应报文总共所需时间是2RTT,文件传送结束后断开TCP连接。而持续连接的非流水线方式特点是(既然是持续连接TCP连接就不断开),每访问一个对象要等到收到前一个响应后才能发出下一个请求,因此客户每访问一个对象要用去一个RTT时间。 综上,持续连接的非流水线方式比非持续连接节省了建立TCP连接的一个RTT时间。
      【计算机网络】http协议的持久连接的非流水线方式和非持久连接有区别么?

      php持久化连接和非持久化连接的区别

      php红连接mysql的 函数为 mysql_connect() 和 mysql_pconnect()mysql_connect()  非持久化连接mysql_pconnect() 持久化连接两者区别:简单的来说mysql_pconnect是用来在php与mysql间建立一条持续连接, 一般php的执行模式是脚本开始执行时初始化所有资源, 脚本运行结束后释放所有资源. 而mysql_pconnect的方式则不这样, mysql_connect每次都是重新通过tcp 或者unix domian socket跟sql服务器建立关系, 每次握手都是要消耗不少服务器资源的.使用pconnect时, 有请求连接mysql时, php会检查是否之前有条相同的连接(以相同的用户名密码连接到同一个mysql服务器)已经建立, 如果有的话就直接使用这条连接。mysql_connect与mysql_pconnect不会带来功能的差异, 只有性能上的差别.
      用 http的内容来类比。 场景:去请求两个图片持久化连接:建立一个tcp连接,发送两个请求并接收,关闭连接。 非持久化连接:建立一个tcp连接,发送一个请求,接收到第一张图片,关闭连接。再建立一个tcp连接,发送一个请求,接收到第二张图片,关闭连接。
      php持久化连接和非持久化连接的区别

      究竟什么叫“连接”?

      服务器有一个IP池,分配给每台电脑一个IP,并且是独一无二的. 建立连接的过程就是服务器给你一个ip的过程,配对好了之后就"连接"上了持续连接是指你客户机开机状态不断开与服务器的"连接". 结束"连接"后,这个IP可以分配给其他用户使用
      这是指通过tcp/ip协议的三次连接 分别是:a>b,b>a,a>b(a是你,b是服务器) a向b发送连接请求,b回应这个请求,a确定这个请求
      验证用户密码这是必须的。就算物理连接了,密码不对还是不让你上网不是麻?
      究竟什么叫“连接”?

      HTTP1.0和HTTP1.1的区别

      区别: 1,HTTP/1.0协议使用非持久连接,即在非持久连接下,一个tcp连接只传输一个Web对象,;2,HTTP/1.1默认使用持久连接(然而,HTTP/1.1协议的客户机和服务器可以配置成使用非持久连接)。 在持久连接下,不必为每个Web对象的传送建立一个新的连接,一个连接中可以传输多个对象!
      1、HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。HTTP 1.1则支持持久连接Persistent Connection, 并且默认使用persistentconnection. 在同一个tcp的连接中可以传送多个HTTP请求和响应. 多个请求和响应可以重叠,多个请求和响应可以同时进行. 更加多的请求头和响应头(比如HTTP1.0没有host的字段).在1.0时的会话方式:1. 建立连接2. 发出请求信息3. 回送响应信息4. 关掉连接HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。例如:一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容。2.HTTP 1.1增加host字段在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。此外,服务器应该接受以绝对路径标记的资源请求。3、100(Continue) Status(节约带宽)HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码401(Unauthorized);如果服务器接收此请求就回送响应码100,客户端就可以继续发送带实体的完整请求了。100 (Continue) 状态代码的使用,允许客户端在发request消息body之前先用request header试探一下server,看server要不要接收request body,再决定要不要发request body。4、HTTP/1.1中引入了Chunked transfer-coding来解决上面这个问题,发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度,最后用一个零长度的块作为消息结束的标志。这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载。 5、HTTP/1.1在1.0的基础上加入了一些cache的新特性,当缓存对象的Age超过Expire时变为stale对象,cache不需要直接抛弃stale对象,而是与源服务器进行重新激活(revalidation)。
      版本不同。
      HTTP1.0和HTTP1.1的区别

      【小白学爬虫笔记】持久连接、非持久连接

      1.  对比 HTTP 0.9 已过时HTTP1.0:非持续连接,每个连接只处理一个请求响应事务,有些服务器端甚至还在用此,可以在一定时间内复用连接,具体复用时间的长短可以由服务器控制,一般在15s左右。HTTP 1.1 默认使用持续连接,不必为每一个WEB对象建立一个新的连接,一个连接可以传送多个对象,但是服务器端可能还是会设置一个限制,太长时间没有读写事件,服务器可能关闭之。HTTP 2.0  多路复用(一个域只要一个TCP连接)实现真正的并发请求,降低延时,提高了带宽的利用率。在持久连接或者HTTP pipelining出现之前,每个连接的获取都需要创建一个独立的TCP连接。2.  非持久连接示意每个WEB对象都要建立新的连接。假设某简单页面包含1个HTML,2个PNG图像,且都存储在一台服务器主机中。客户端输入URL访问首页,http://www.abcdefg.com/path/index.html第一步,客户端与服务器主机中的HTTP服务端口(默认为)建立TCP连接第二步,客户端发送HTTP请求/path/index.html第三步,服务器接收请求消息,从服务器主机内存或硬盘拿去拿对象/sompath/index.html,发出该对象的响应。第四步,服务器告知TCP关闭这个TCP连接(TCP要等客户收到这个响应消息后,才会真正终止这个连接)。第五步,HTTP客户接收响应消息。TCP连接终止。 该消息标明所拆装的对象是一个HTML文件。客户取出文件,分析后发现2个JPEG对象的引用。第六步, 给每一个引用到的JPEG对象重复第一步到第四步非持久连接,每个对象有2个RTT延迟持久连接,带管道线,所有引用对象,共经历一个RTT延时;持久连接,无管道线,每个引用对象一个RTT延时。首先:HTTP的长连接和短连接本质上是TCP长连接和短连接。1. 在HTTP1.0中,默认的是短连接,没有正式规定 Connection:Keep-alive 操作;在 HTTP1.1 中所有连接都是Keep-alive的,也就是默认都是持续连接的(Persistent Connection)。2. 两种的连接方式的区别如下图所示3. 从上图可以看出,客户端与服务器建立持续连接后,在连接期间可以处理多个请求/响应(Request/Response)HTTP权威指南:HTTP/1.1 允许HTTP设备在事务处理结束以后将TCP连接保持在打开状态,后面的HTTP Request/Response 依然可以通过这个TCP连接继续传送。在事务结束之后仍然保持在打开状态的TCP连接成为持久链接。非持久连接会在每个事务结束后关闭,持久连接会在不同事务(Request/Response)之间保持打开状态,直到客户端或服务器决定将其关闭为止。可以提高HTTP连接性能的方法:并行连接通过多条连接发起并发的HTTP请求。并行连接可以提高复合页面的传输速度,但其连接也有一些缺点每个事务都会打开/关闭一条新的连接,会耗费时间和带宽。由于TCP慢启动特性存在,每条连接的性能都会有所降低。可打开的并行连接数量实际上是有限的持久化连接Web客户端经常会打开到同一个站点的连接。比如,一个Web页面上的大部分内嵌图片通常来自同一个Web站点,而且相当一部分指向其他对象的超链通常都指向同一个站点。初始化了对某服务器HTTP请求的应用程序很可能会不久的将来对那台服务器发起更多的请求,这种性质称为站点局部性。因此, HTTP/1.1允许HTTP设备在事务处理结束之后将TCP连接保持在打开状态,以便为未来的HTTP请求重用现存的连接 。在事务处理结束之后仍然保持在打开状态的TCP连接称之为持久连接。持久连接会在不同事务之间保持打开状态,直到客户端或服务器决定其关闭为之。重用已对目标服务器打开的空闲持久连接,就可以避开缓慢的连接建立阶段。而且,已经打开的连接还可以避免慢启动的拥塞适应阶段,以便更快速地进行数据传输。所以,持久连接降低了时延和连接建立的开销,将连接保持在已调谐状态,而且减少了打开连接的潜在数量。持久连接和并行连接配合使用可能是最高效的方式。很多Web应用程序都会打开少量的并行连接,其中每个都是持久连接。持久连接有两种类型1)HTTP/1.0 + keep-alive 连接2) HTTP/1.1 + persistent 连接HTTP/1.0  keep-alive连接现在很多客户端和服务器仍然在使用这些早期的keep-live连接。实现HTTP/1.0 keep-live连接的客户端可以通过包含Connection:Keep-Alive 的请求头将一条连接保持在打开状态。响应中Keep-Alive首部是可选的,但只有在提供Connection:Keep-Alive时才能使用它。Connection:Keep-AliveKeep-Alive:max=5,timeout=120这个例子说明了服务器最多还会为另外5个事务保持连接的打开状态,或者将打开状态保持到连接空闲了2分钟以后。注意:1 在HTTP/1.0中,keep-alive并不是默认使用的。客户端必需发送一个Connection:Keep-Alive 请求首部来激活keep-alive连接。2 如果服务器愿意为下一条请求将连接保持在打开状态,就在响应头中说明,如果响应头中没有Connection:Keep-Alive ,客户端就认为服务器不支持keep-live,会在发回响应报文后关闭连接。3 只有在无需检测到连接的关闭就可以确定报文实体主体部分长度的情况下,才能将连接保持在打开状态--也就是说实体的主体部分必需有正确的Content-Length,有多部件媒体类型(multipart/form-data ?  有boundary)或者用分块传输编码的方式进行了编码。在一条keep-live信道中回送错误的Content-Length是很糟糕的事情,这样的话,事务处理的另一端就无法精确地检测出一条报文的结束和另一条报文的开始了。HTTP/1.1  持久连接 Persistent ConnectionHTTP/1.1逐渐停止了对keep-alive连接的支持,用一种名为持久连接的改进型设计取代了它。持久连接的目的与keep-alive连接的目的相同,但是工作机制更优些。HTTP/1.1就吃连接在默认情况下是激活的,除非特别指明,否则HTTP/1.1假定所有的连接都是持久的。要想在事务处理结束之后将连接关闭,HTTP/1.1应用程序必须向报文中显示地添加一个Connection:close首部。HTTP1.1客户端加载在收到响应后,除非响应中包含了Connection:close首部,不然HTTP/1.1连接就仍然维持在打开状态。但是,客户端和服务器仍然可以随时关闭空闲的连接。不发送Connection:close并不意味这服务器承诺永远将连接保持在打开状态。注意:1 只有当连接所有的报文都有正确的、自定义报文长度时,也就是说,实体主体部分的长度都和相应的Content-Length一致,或者用分块传输编码方式编码的,连接才能持久保持。2 如果客户端不想在连接上发送其他请求了,就应该在最后一条请求中发送一个Connection:close请求首部管道化连接HTTP/1.1允许在持久连接上可选的使用请求管道。是相对于keep-alive连接的又一性能优化。在响应到达之前,可以将多条请求放入队列,当第一条请求通过网络流向服务器时,第二条和第三条请求也可以开始发送了。在高时延网络条件下,这样做可以降低网络的环回时间,提高性能。对管道连接的说明:1)如果HTTP客户端无法确认连接是持久的,就不应该使用管道2)必须按照与请求相同的顺序回送HTTP响应。3)HTTP客户端必须做好连接会在任意时刻关闭的准备,还要准备好重发所有未完成管道化的请求。 4)出错的时候,管道连接会阻碍客户端了解服务器执行的是一些列管道化请求中的哪一些。由于无法安全地重试POST这样的非幂请求,所以出错时,就存在某些方法永远不会被执行的风险。
      【小白学爬虫笔记】持久连接、非持久连接

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类