TCP keepalive 的典型用法是什么?

2024-01-01

考虑存在一台服务器和多个客户端的场景。每个客户端都会创建 TCP 连接来与服务器交互。 TCP live有三种用法:

  1. 服务器端keepalive:服务器发送TCP keepalive以确保客户端处于活动状态。如果客户端死亡,服务器将关闭与客户端的 TCP 连接。
  2. 客户端keepalive:客户端发送TCP keepalive以防止服务器关闭与客户端的TCP连接。
  3. 双向保活:服务器和客户端均发送 TCP 保活,如 1 和 2 中所述。

上述 TCP keepalive 的哪些用法是典型的?


实际上,服务器和客户端都可以使用 TCP keepalive。确保操作系统最终释放与死连接相关的任何资源非常有用。请注意,如果两台主机之间的连接由于它们之间的路由器出现问题而丢失,那么两台主机都必须独立检测连接是否已断开,并自行清理。

现在,每个主机将在每个连接上维护一个计时器,指示它最后一次收到与该连接关联的数据包的时间。当计时器超过本地定义的某个阈值时,主机将发送保活数据包(即主机不交换有关其自己的保活配置的信息)。因此保活时间最短的任一主机都会主动向另一台主机发送保活数据包。如果数据包确实通过了,另一台主机(即保活时间较长的主机)将响应该数据包并重置自己的计时器;因此,具有较高保活时间的主机肯定永远不会达到需要发送保活数据包本身,除非连接确实已经丢失。

可以说,服务器在保活方面通常比客户端计算机更积极(也就是说,它们通常会配置较短的保活时间),因为挂起的连接通常会对服务器软件产生不良影响(例如,软件可能会接受有限数量的并发连接,否则服务器可能会分叉与每个连接关联的新流程实例)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP keepalive 的典型用法是什么? 的相关文章

  • 使用 boost 异步发送和接收自定义数据包?

    我正在尝试使用 boost 异步发送和接收自定义数据包 根据我当前的实现 我有一些问题 tcpclient cpp include tcpclient h include
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • ADO.NET SQLServer:如何防止关闭的连接持有S-DB锁?

    i Dispose http msdn microsoft com en us library system data sqlclient sqlconnection close aspx一个 SqlConnection 对象 但是当然它并
  • 为什么tcp终止需要4次握手?

    当连接建立时 有 客户端 SYN gt 服务器 客户端 客户端 ACK gt 服务器 当终止到来时 有 客户端 FIN gt 服务器 客户端 客户端 客户端 ACK gt 服务器 我的问题是为什么 和 不能像 那样设置在同一个包中 即ACK
  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • 使用 InputStream 通过 TCP 套接字接收多个图像

    每次我从相机捕获图像时 我试图将多个图像自动从我的 Android 手机一张一张地发送到服务器 PC 问题是read 函数仅在第一次时阻塞 因此 从技术上讲 只有一张图像被接收并完美显示 但在那之后当is read 回报 1 该功能不阻塞
  • 使用 TCP 时是否需要使用校验和来保护我的消息?

    使用 TCP 作为网络协议 在通过线路发送消息之前 我会为每条消息的大小 以及可能的校验和 添加前缀 我想知道 计算和传输消息的校验和是否有意义 以确保消息将被不变地传递 如果以及何时传递 例如因为一些网络错误 目前 我在发送消息本身之前发
  • StreamWriter的正确使用

    经过几次尝试后 我无法让 StreamWriter 正确构建 工作 所以我做了一些根本错误的事情 C Visual Studio 我有一个现有的 TCP 客户端 它连接并充当读取器 它工作正常 private System Net Sock
  • 用 C 语言进行非阻塞 udp 套接字编程:我能得到什么?

    我在理解从非阻塞 UDP 套接字返回什么recv recvfrom 时遇到问题 与 TCP 相比更具体一点 如果我错了 请纠正我 阻塞套接字 TCP 或 UDP 在缓冲区中有一些数据之前不会从 recv 返回 这可以是一定数量的字节 TCP
  • Silverlight 套接字:模仿框架 Bind、Listen 和 Accept 方法?

    我有这个 NET Framework C 类 它实际上充当 TCP 连接的包装器Socket http msdn microsoft com en us library attbb8f5 aspxSystem Net Sockets 命名空
  • 使用 NestJS 的 TCP 服务器

    是否可以使用 NestJS 创建 TCP 服务器 我有一个仅通过 TCP 进行通信的 GPS 跟踪器 由于 NestJS 可以通过 TCP 在微服务之间进行通信 我认为也许 NestJS 可以用作低级网络应用程序 例如 java netty
  • Jmeter TCP Sampler - 如何重用线程之间的连接?

    我在 JMeter 的 ThreadGroup 下设置了一个 TCP 采样器 数据是从 CSV 文件中选取的 第一行数据用于认证 后续行为实际参数数据 像下面这样的东西 AAAAAAA21 BBBBBBBCCCCCCCDDDDDDD BBB
  • 多个客户端如何同时连接到服务器上的一个端口(例如 80)? [复制]

    这个问题在这里已经有答案了 我了解端口工作原理的基础知识 但是 我不明白的是多个客户端如何同时连接到端口 80 我知道每个客户端都有一个唯一的 对于他们的机器 端口 服务器是否从可用端口回复客户端 并简单地声明回复来自 80 这是如何运作的
  • 对卡在 CLOSE_WAIT 状态的连接进行故障排除

    我有一个在 Windows 上的 WebLogic 11g 中运行的 Java 应用程序 几天后它变得没有响应 我注意到的一个可疑症状是大量连接 大约 3000 个 出现在netstat即使服务器空闲 也具有 CLOSE WAIT 状态 由
  • 可以访问每个套接字的 TCP 统计数据/信息吗? (C/C++)

    我需要一些信息 例如我创建的特定 TCP 套接字发生的重新发送包 数据包丢失的数量 有人知道如何直接从我的 C C 程序访问或请求此类信息吗 也许是 Linux 特有的东西 或者我是否需要 作为解决方法 捕获和分析我自己的流量 提前致谢 通
  • 参数无效”设置键“net.core.somaxconn”

    我尝试设置Linux内核 编辑后 etc sysctl conf并执行sysctl p它显示错误 Invalid argument setting key net core somaxconn Linux 发行版 Ubuntu 12 04
  • 通过 SSH 隧道访问 LDAP

    我通过 SSH 根访问 访问了客户办公室网络内的一台机器 我正在我的计算机上编写一个需要集成到 LDAP 的 PHP 应用程序 LDAP 服务器位于我客户网络的另一台服务器中 并且not可以从外部访问 但是我可以通过可以通过 SSH 连接的
  • UNIX 域 STREAM 和 DATAGRAM 套接字之间的区别?

    这个问题是NOTSTREAM 类型和 DATAGRAM 类型 INTERNET 套接字之间的区别 我知道 STREAM 套接字使用 TCP 数据报套接字使用 UDP 以及所有 TCP UDP 内容 按顺序到达的数据包 ACK NACK 等

随机推荐

  • Sqlite 中的 NVARCHAR (MAX)

    我正在 Sqlite 中创建一个表 其中的列具有最大长度 create table Log Id int identity not null constraint PK Log Id primary key Data nvarchar ma
  • 从函数返回数据框

    我在函数中有以下代码 Myfunc lt function directory MyFiles id 1 332 uncomment the 3 lines below for testing directory lt local id c
  • 服务注入仅在同一类的某些功能上失败

    从 symfony 3 迁移到 4 我开始根据此注入服务 我注入 helper 服务的大多数功能都工作正常 但由于某种原因 其中一些功能失败了 我无法弄清楚我做了什么不同的事情 这是错误 无法解析参数 helper of App Contr
  • 使用 .htaccess 删除 .html 和 .php 扩展名

    如何从网页中删除该文件类型而不创建新目录并将文件命名为index php 我想http example com google html http example com google html to http example com goo
  • HAProxy 无法启动,无法绑定 UNIX 套接字 [/run/haproxy/admin.sock]

    我尝试使用 空 配置文件启动 haproxy 版本 1 5 8 2014 10 31 我得到 user server sudo service haproxy start Starting haproxy haproxy ALERT 126
  • Java 实现构建器模式的最佳方式

    以下哪项是实现构建器模式的更好方法 1 使用对象来构建而不是构建器中的所有属性 并在构建器构造函数中创建它 public class Person private String firstName other properties priv
  • “let”在Scheme 中如何工作?

    I use let创建一个临时变量 然后在下一条语句中使用该临时变量 然而 DrScheme 抱怨道 let bad syntax not an identifier and expression for a binding in temp
  • 以 Java 编程方式使用 TableLayout 实现 ScrollView

    我已经尝试了一切 但我的 ScrollView 在我的活动中不起作用 我有一个活动 用户单击按钮后打开一个表格 我找不到让我的桌子双向滚动的方法 如何以编程方式制作 ScrollView 我的代码 TableLayout tableLayo
  • iMessage 应用程序 - 以编程方式从 .apng 创建动画贴纸

    您好 有没有人尝试过使用动画 apng 文件以编程方式创建自定义贴纸 我没有成功 但可以声明以下内容 apng 文件具有正确的尺寸和文件大小 300px 300px 且 可以将其添加为 png 并显示第一帧 非动画 将文件名更改为 apng
  • 从 PInvoke 返回字符串? [复制]

    这个问题在这里已经有答案了 我使用 PInvoke 实现本机代码 C 和托管代码 C 之间的互操作性 我只是编写一个简单的函数 它从 C 代码中获取字符串 我的代码看起来像 C Code DllImport MyDll dll privat
  • ExtJs 应用程序缓存警告

    我有一个用 ExtJs 编写的单页应用程序 我没有使用应用程序缓存 但当应用程序启动时 我在 Chrome 中看到以下警告 弃用 应用程序缓存 API 的使用已弃用 并将于 2020 年 4 月左右在 M82 中删除 请参阅https ww
  • 如何在 Django 分页器中使用 get_elided_pa​​ge_range ?

    有一个新选项可以创建分页范围 get elided pa ge rangehttps docs djangoproject com en 3 2 ref paginator django core paginator Paginator g
  • Entity Framework 6.1.1 的 Async/Await 和模拟

    我有一个托管在 IIS 中的 WCF 服务 它从多个源 所有 SQL Server 检索数据 对于每个数据源 我必须模拟不同的 Active Directory 用户才能连接到数据库 我将 Entity Framework v6 1 1 用
  • 浏览器与独立组件的插件进行反应,可供插件使用

    我正在尝试一些 React 和 browserify 并有以下愿望 我想将我编写的所有代码捆绑到一个文件中 我想将所有第 3 方依赖项 react react router lodash 等 捆绑到单独的文件中 每个库一个 以最大化缓存的可
  • 如何在 CSS 和 HTML(印刷媒体)中正确对脚注进行分页

    有没有办法让脚注正常工作 即使用动态脚注区域大小并且每个页面只有该页面的脚注 当使用 media printCSS3 与 X HTML 的模式 或者你能给我指出一个实现这样的事情的 Javascript 秘诀吗 I have found a
  • 从 .NET 调用非托管代码

    我正在尝试在我的 C 程序中使用 dll 但我似乎无法让它工作 我制作了一个测试应用程序 如下所示 返回值是 0 但它实际上并没有做它应该做的事情 而以下命令确实有效 rundll32 cmproxy dll SetProxy source
  • 如何验证服务器上的 FCM 注册令牌?

    我获得了用于 Web 推送的 Firebase Cloud Messaging 注册令牌 我将其发送到我的服务器以保存在数据库中以供以后推送 但是我如何验证这个令牌是有效的还是假的呢 我努力了this https firebase goog
  • 使用 Sidekiq 进行 Active Job 并获取 ActiveJob::DeserializationError

    我正在尝试使用 Sidekiq 来运行以下作业 该作业在未排队时执行良好 perform now 但在使用 Sidekiq 调用 perform later 时失败 AddEmployeesToRoomJob perform now roo
  • “ionic-app-scripts”不被识别为内部或外部命令,

    我遇到了一些计算机问题 当我尝试ng serve我的 ionic 2 应用程序收到此错误 c xampp htdocs themill gt ionic 服务 ionic hello world ionic serve c xampp ht
  • TCP keepalive 的典型用法是什么?

    考虑存在一台服务器和多个客户端的场景 每个客户端都会创建 TCP 连接来与服务器交互 TCP live有三种用法 服务器端keepalive 服务器发送TCP keepalive以确保客户端处于活动状态 如果客户端死亡 服务器将关闭与客户端