• Http 长连接、短链接是什么?


     

    短连接:

    建立连接 ---> 数据传输 ---> 关闭连接 …… 建立连接 ---> 数据传输 ---> 关闭连接

    长连接:

    建立连接 ---> 数据传输 … (保持连接)… 数据传输 ---> 关闭连接

       

    1Http 协议与 TCP/IP 协议的关系

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

       

    2、如何理解 Http 协议是无状态的

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

       

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

    • 短连接
      • Http 1.0 中默认使用短连接,即客户端和服务器没进行一次 Http 操作,就建立一次连接,任务结束就中断连接
      • 如果客户端浏览器访问的某个 Html 或其他类型的 Web 页中包含有其他的 Web 资源,如 JavaScript 文件、图像文件、CSS 文件等;当浏览器每遇到这样一个Web 资源,就会建立一个 Http 会话
      • 优点:对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段
      • 缺点:如果客服端请求频繁,将在 TCP 的建立和关闭操作上浪费大量的时间和带宽
    • 长连接
      • Http 1.1 起,默认使用长连接,用以保持连接特性
      • 使用长连接的 Http 协议,浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive TCP 连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求
      • 保持连接节省了为每个请求建立新连接所需的时间,还节约带宽
      • keep-alive 不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如 Apache )中设定这个时间
      • 实现长连接要客户端和服务端都支持长连接
      • 优点:在多次通信中可以省去建立连接和关闭连接的开销,从总体上看,进行多次数据传输的总耗时更少,减少浪费,节约时间
      • 缺点:需要花费额外的精力来保持这个连接是一直可用的;因为网络抖动、服务器故障等都会导致这个连接不可用,甚至是由于防火墙的原因。
        • 利用 TCP 自身的保活( keep-alive )机制来实现,保活机制会定时发送探测报文来识别对方是否可达。一般的默认定时间隔是 2 小时,你可以根据自己的需要在操作系统层面去调整这个间隔,不管是 linux 还是 windows 系统
        • 上层应用主动的定时发送一个小数据包作为"心跳",探测是否能成功送达到另外一端。 保活功能大多数情况下用于服务端探测客户端的场景,一旦识别客户端不可达,则断开连接,缓解服务端压力

    4TCP 连接

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

       

    三次握手

       

    四次挥手 

       

    请求过程

       

  • 相关阅读:
    python threading 锁的应用
    python线程threading处理任务并发一
    *,arg,*args,**kwargs的使用
    web services 接口调用
    jsonp与ajax
    无缝滚动详解
    手机端使用rem适配
    css3写的实用表单美化
    经典仿淘宝商城菜单多条件查询
    css3 flex写的移动端界面
  • 原文地址:https://www.cnblogs.com/sebastian-tyd/p/13581175.html
Copyright © 2020-2023  润新知