为什么长连接需要心跳协议

一般长连接都会附带着心跳保活机制,直观的理由就是为了确保这个连接一直有效,但是以前却没有往深层次去想为什么要这么做。本文尝试进行一下梳理。

一般互联网应用是“请求/响应”模式,即只能客户端主动发起请求,服务端被动响应请求(因为NAT的原因,服务端无法主动找到客户端)。对于一些需要服务器主动下发数据到客户端的场景,如果使用“请求/响应”模式,那么只能由客户端轮询的方式来服务端拉数据,这样不仅占用网络带宽,还给通信双方增加压力。如果客户端先主动发起建立长连接,然后一直保持连接有效,那么服务端相当于有一条主动通往客户端的通道。

一、什么是tcp长连接

tcp长连接是指通信双方在三次握手之后一直不关闭socket而维持着这个连接,然后在需要通信时,可以立刻发送tcp数据流,不需要每次通信前都经过三次握手和四次挥手的流程。这样做的优点有:

1)节省连接建立和终止的开销,提高网络带宽利用率。一个典型的例子是http1.1支持的pipeline

2)支持双向通信,比如实时通信或者消息推送之类的服务。

 那么,如何保证长连接一直有效?如果网络链路中间某个节点断了,双方是否能感知到?

二、无法感知tcp连接断开的一些场景

1NAT

IPv4环境下,客户端一般位于NAT

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值