首页 > Java > java教程 > 正文

TCP 保持活动状态如何工作以及套接字连接保持打开状态多长时间?

Mary-Kate Olsen
发布: 2024-10-26 14:05:03
原创
512 人浏览过

How Does TCP Keep-Alive Work and How Long Do Socket Connections Remain Open?

TCP 套接字连接是否具有“保持活动状态”?

与 HTTP 保持活动状态不同,TCP 套接字连接不会无限期地保持打开状态。相反,它们受到 TCP Keep-Alive 强制执行的超时限制。

简介

TCP 连接涉及两个套接字,每个套接字驻留在连接的一端。通常,这些套接字保持打开状态,直到一端终止连接(由 FIN 数据包指示)。但是,如果发生意外的套接字终止,TCP Keep-Alive 会检测并关闭过时的连接。

Keep-Alive Process

在 Linux 系统上,TCP Keep-Alive使用以下默认设置运行:

  • tcp_keepalive_time:7200 秒(2 小时)
  • tcp_keepalive_probes:9
  • tcp_keepalive_intvl:75 秒

如果连接空闲时间超过 tcp_keepalive_time,则会向另一端发送 ACK 数据包。如果在指定次数的探测后没有响应,则通过 RST 终止连接。

问题

2 小时默认值: 默认,Keep-Alive 过程仅在 2 小时不活动后启动,这可能会导致过时的连接持续存在。

Keep-Alive 是可选的: 响应 Keep-Alive 数据包是可选的,并且某些实现可能会丢弃它们。

更改 TCP 超时

要修改 TCP 超时,请参阅以下特定于操作系统的说明:

Linux:

  • 每个插槽: Java 目前不支持
  • 系统范围: 使用 echo 来调整 / proc/sys/net/ipv4/[tcp_keepalive_time|tcp_keepalive_probes|tcp_keepalive_intvl]

Mac OS X:

  • 系统范围: 使用 sysctl -w 设置 net.inet.tcp.[keepidle|keepintvl|keepcnt]
  • 持久: 将设置添加到 /etc/sysctl.conf

Windows:

  • 系统范围: 编辑 HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters
中的注册表值

以上是TCP 保持活动状态如何工作以及套接字连接保持打开状态多长时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!