当前位置: 首页 > news >正文

关于长连接服务器和客户端之间要加入心跳的一些讨论

在之前的章节里深入浅出TCPIP之深入浅出TCPIP之TCP重传机制 我们都知道了TCPIP协议栈有个默认的TCP心跳机制,这个心跳机制是和socket绑定的,可以对指定的套接字开启协议栈的心跳检测机制。默认情况下,协议栈的心跳机制对socket套接字是关闭的,如果要使用需要人为开启的。

比如在windows中,默认每隔2个小时发一次心跳包,客户端程序将心跳包发给服务器后,接下来会有两种情况:

1)网络正常时:服务器收到心跳包,会立即回复ACK包,客户端收到ACK包后,再等2个小时发送下一个心跳包。其中,心跳包发送时间间隔时间keepalivetime,Windows系统中默认是2小时,可配置。如果在2个小时的时间间隔内,客户端和服务器有数据交互,客户端会收到服务器的ACK包,也算作心跳机制的心跳包,2个小时的时间间隔会重新计时。

2)网络异常时:服务器收不到客户端发过去的心跳包,没法回复ACK,Windows系统中默认的是1秒超时,1秒后会重发心跳包。如果还收不到心跳包的ACK,则1秒后重发心跳包,如果始终收不到心跳包,则在发出10个心跳包就达到了系统的上限,就认为网络出故障了,协议栈就会直接将连接断开了。其中,发出心跳包收不到ACK的超时时间称为ke

http://www.lryc.cn/news/37605.html

相关文章:

  • LeetCode——1590. 使数组和能被 P 整除
  • 12N65-ASEMI高压MOS管12N65
  • cushy-serial 一个轻量级Python serial库
  • 音视频开发系列(7)——Opengl常用Api介绍part1
  • linux时间的特殊用法
  • axios 封装,API接口统一管理
  • SpringBoot使用Redis实现缓存
  • [失业前端恶补算法]JavaScript leetcode刷题top100(三)
  • Spark RDD的设计与运行原理
  • Golang的下载与安装
  • 广州蓝景分享—8大Web前端开发的趋势
  • Java学习-MySQL-创建数据库表
  • Ethercat学习-GD32以太网学习
  • 项目规模估算如何精准 4大注意事项
  • 低代码:助力乡村振兴事业开启“智慧模式”
  • Flutter——Isolate主线机制
  • 提取游戏《Limbus Company》(边狱公司)内素材
  • 学生信息表
  • FOTA在AUTOSAR中的应用
  • 2023/3/10 Vue核心知识的学习- Vue - v-model双向绑定原理
  • 面朝大海,春暖花开丨2023年Kaadas凯迪仕全国经销商大会成功召开
  • 【ubuntu】安装cuda+anaconda的docker环境,并用Vscode远程访问
  • Python(青铜时代)——容器类的公共方法
  • 利用canvas给图片添加水印
  • 保姆级使用PyTorch训练与评估自己的MobileViT网络教程
  • Giscus,由 GitHub Discussions驱动的评论系统
  • 【JSON文件解析】JSON文件
  • OpenGL超级宝典学习笔记:纹理
  • 主辅助服务市场出清模型研究【旋转备用】(Matlab代码实现)
  • 不用费劲,这5款效率工具为你解决学习工作烦恼