长连接、短连接区别

目录

短链接

优点:

缺点:

使用场景:

长连接

优点:

缺点:

使用场景:

如何保持长连接:

易混淆概念:http的keep-alive和Tcp的keepalive区别

参考:


短链接

当通讯双方有数据交互时,会主动建立一个TCP连接,数据发送完成后断开此TCP连接。(Http1.0默认保持短链接)

例如Http请求:Http是无状态的(不代表不能保持TCP长连接),每次发起请求时步骤如下:

1、Client端会发起并建立TCP连接(三次握手)

2、Client端发送HttpRequest到Server端

3、Server端收到Request并处理

4、Server端响应HttpResponse给Client端,并立即调用socket.close()方法

5、Client端收到HTTPResponse之后也会收到断开TCP连接的信号。

6、Clinet端断开TCP连接(四次挥手)。

(建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接)

优点:

  • 短链接对于服务器来说管理较为简单,存在的连接都是有用的,不需要额外控制。
  • 每次都会断开连接安全性高。
  • 节省服务端连接资源

缺点:

  • 频繁建立、断开连接,网络开销比较大。效率低。

使用场景:

  • 适用于网页浏览等数据刷新频次较低的场景
  • 适用于并发量大的业务场景,

 

长连接

通讯双方建立连接传输数据后,连接不会马上断开,会保持一段时间,后续的传输继续使用此连接。连接通过发送心跳包来保持。(Http1.1默认保持长连接)

请求步骤如下:

1、Client端会发起并建立TCP连接(三次握手)

2、Client端发送HttpRequest到Server端

3、Server端收到Request并处理

4、连接不会关闭,后续传输继续使用此连接

5、最后一次发送后,Server端会进行等待,若等待超时,会主动关闭连接(四次挥手)

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

优点:

  • 省去TCP建立和关闭连接的操作,减少耗时。

缺点:

  • 连接复用存在安全问题
  • 连接数持续增加会对Server端造成压力

使用场景:

  • 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。例如游戏和聊天。

如何保持长连接:

设置Connection: Keep-alive,Keep-Alive: timeout=20

Httpd守护进程,设置keep-alive timeout超时时间,最后一个响应完成,若不再有请求,等待达到超时时间后就会关闭。

 

易混淆概念:http的keep-alive和Tcp的keepalive区别

HTTP的Keep-alive是要让一个TCP连接活久点。以便在同一个连接上传送多个http,提高socket效率。

TCP的keep alive是检查当前TCP连接是否活着。它们是不同层次的概

TCP keep alive支持三个系统内核配置参数:

1 echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time

2 echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl

3 echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes

TCP keep alive 是TCP的保鲜定时器,当建立连接后,闲置tcp_keepalive_time时间后,服务器内核就会尝试发送心跳包,判断TCP状态,若未收到Ack响应。在tcp_keepalive_intvl秒后重新发送。若一直未收到响应会重试tcp_keepalive_probes次。若依然未收到响应,则丢弃该TCP连接。(TCP连接默认闲置时间是2小时)

Http协议的短链接、长连接,本质是TCP协议的短连接、长连接。

参考:

1、https://www.jianshu.com/p/caeec6bd1d3f

2、https://www.cnblogs.com/cswuyg/p/3653263.html

3、https://www.cnblogs.com/yixianyixian/p/8401679.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值