Home  >  Article  >  Java  >  How does TCP Keep-Alive Prevent Stale Connections?

How does TCP Keep-Alive Prevent Stale Connections?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 00:11:31439browse

How does TCP Keep-Alive Prevent Stale Connections?

Does TCP Socket Connection Have a "KeepAlive"?

Introduction

Establishing TCP connections involves setting up sockets on both sides. Under normal circumstances, these sockets remain open indefinitely. However, situations may arise where one end closes the connection without informing the other. To address this, TCP employs a mechanism known as Keep-Alive.

TCP Keep-Alive Process

TCP Keep-Alive operates based on three configurable parameters:

  • tcp_keepalive_time: Time in seconds before sending an ACK packet to check connection status (default 7200).
  • tcp_keepalive_probes: Number of ACK probes to send before terminating the connection (default 9).
  • tcp_keepalive_intvl: Interval in seconds between sending ACK probes (default 75).

The process works as follows:

  1. After an idle period of tcp_keepalive_time, the sender sends an ACK packet.
  2. If the receiver responds with an ACK, the process resets and returns to step 1.
  3. If no response is received, the sender waits tcp_keepalive_intvl seconds and repeats step 2.
  4. If tcp_keepalive_probes ACKs are sent without response, the connection is terminated with an RST packet.

Gotchas

  • 2-Hour Default: Due to the default tcp_keepalive_time of 2 hours, stale connections can persist for extended periods.
  • Keep-Alive Optionality: Keep-Alive is not mandatory for TCP implementations. Some devices may not support it, potentially leading to issues.

Changing TCP Timeouts

If necessary, you can modify the TCP Keep-Alive settings on your system. The specific method depends on your operating system:

  • Linux: Set values in /proc or use sysctl.
  • Mac OS X: Set values with sysctl or modify /etc/sysctl.conf.
  • Windows: Adjust settings in the registry.

Conclusion

TCP connections have a Keep-Alive mechanism that detects and terminates stale connections. By default, Keep-Alive is enabled and set to terminate connections after 2 hours and 11 minutes of inactivity, but these settings can be customized for specific requirements.

The above is the detailed content of How does TCP Keep-Alive Prevent Stale Connections?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn