zoukankan      html  css  js  c++  java
  • 计算机网络HTTP:长连接与短连接

    • HTTP协议与TCP/IP协议的关系

      • HTTP的长连接和短连接本质上是TCP长连接和短连接。
      • HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。
      • IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传输数据。
      • TCP协议可靠、面向连接。
    • HTTP协议是无状态的

      • HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议。
        image
    • 什么是长连接、短连接

      • 在HTTP/1.0中,默认使用的是短连接。

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

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

        • 短连接操作步骤:建立连接 -> 数据传输 -> 关闭连接 ... 建立连接 -> 数据传输 -> 关闭连接
        • 优点:对于服务器来说管理比较简单,存在的连接都是有用的连接,不需要额外的控制手段。
        • 缺点:如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
      • TCP长连接

        • 长连接的实现:

          • 利用TCP自身的保活机制(keep-alive)来实现,保活机制会定时发送探测报文来识别对方是否可达。
          • 上层应用主动的定时发送一个小数据包作为“心跳”,探测是否能成功送达到另外一端。保活功能大多数情况用于服务端探测客户端的场景,一旦识别客户端不可达,则断开连接,缓解服务端压力。
        • 长连接操作步骤:建立连接 -> 数据传输 ... (保持连接) ... 数据传输 -> 关闭连接

        • 优点:可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。

        • 缺点:存活功能的探测周期太长,客户端和服务端的连接一直不关闭的话,服务器早晚会扛不住。

        • 长连接的流水线技术(HTTP pipelining)

          • 在一个TCP连接内,多个HTTP请求可以并行,下一个HTTP请求在上一个HTTP请求的应答完成之前就发起。with pipelining,所有引用的对象一共只经历1个RTT的延时。而without pipelining每个引用的对象各有1个RTT的延迟。
    • 长连接短连接的使用场景

      • 长连接:

        • 多用于操作频繁,点对点的通信,而且连接数不能太多二点情况。例如数据库的连接使用长连接;即时通信(QQ)一般使用长连接(UDP长连接)
        • SMTP,POP3,TELNET
        • 网络游戏应用
      • 短连接:

        • 并发量大,但每个用户无需频繁操作的情况下使用短连接。如WEB网站的HTTP服务一般都使用短连接;
  • 相关阅读:
    由优化反射性能问题引发的思考
    Flash还能走多远?
    .net CLR 4.0垃圾回收机制的改进之3
    Silverlight 3引入了GPU加速的特性
    java 字符串
    JAVA 容器
    JAVA 反转链表
    JAVA 自定义比较器
    JAVA 类相关知识
    vscode 输出中文乱码
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12302046.html
Copyright © 2011-2022 走看看