zoukankan      html  css  js  c++  java
  • HTTP短连接和长连接

    HTTP是无状态的,无状态指的是HTTP协议不具备保存之前发送过的请求或响应的功能。每次的请求是相互独立的,请求结果不会互相影响,服务器也不会保存客户端的状态,客户端必须每次带上自己的状态去请求服务器。在无状态的http协议下,服务器会保存客户端每次网络请求对数据的修改,但这跟保留每次访问的数据是不一样的,保留的只是会话产生的结果,而没有保留会话。

    一、短连接和长连接

    1.短连接

    连接——>传输数据——>关闭连接

    浏览器和服务器每进行一次通信,就建立一次连接,但通信结束就中断连接,这就是短连接。也就是说短连接是指socket连接后,发送接收完数据后马上断开连接。但是,通过设置cookie和session,能够让网络请求是有状态的。

    2.长连接

    连接——>传输数据——>保持连接——>传输数据——>......——>直到某一方关闭连接(一般是客户端关闭连接)

    长连接是指建立连接后,不管是否使用都保持连接,但安全性较差。

    3.长连接和短连接比较

    短连接
    优点:管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。
    缺点:如果客户端请求频繁,将在TCP的建立和关闭操作上浪费较多的时间和宽带。

    长连接
    优点:省去较多的TCP建立和关闭操作,减少浪费,节约时间
    缺点:随着客户端的连接越来越多,服务器会保持过多的连接。解决方法就是:
        1.关闭一些长时间没有发生请求的连接;
        2.限制每个客户端的最大连接数,避免恶意的客户端拖垮服务器。

    二、HTTP长连接与TCP/IP长连接的关系

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

    HTTP1.0中默认使用短连接,但从HTTP1.1开始,默认使用长连接。使用长连接的HTTP协议,会在响应头加上如下信息:

    Connection:keep-alive

    keep-alive会使客户端和服务器有一个保持时间,可以在不同的服务器中设定这个时间。实现长连接需要客户端和服务器都支持长连接。

    不积跬步,无以至千里。不积小流,无以成江海!
  • 相关阅读:
    在VS Code中配置GO开发环境并调试
    go文件操作实践[读写zip tar xlsx文件]
    go 文件操作实践[读写json xlm gob txt]
    go inject 实践
    go的反射reflect
    go goroutine channel 和C# Task BlockingCollection 以及python该如何实现
    beego redis作为缓存
    beego Session redis存储以及是否阻塞
    Beego generate自动生成代码 以及注解路由 @router
    bee go用base64Captcha生成base64的验证码
  • 原文地址:https://www.cnblogs.com/rouqinglangzi/p/9470918.html
Copyright © 2011-2022 走看看