This preview shows page 1. Sign up to view the full content.
Unformatted text preview: ///D|/Documents%20and%20Settings/bigini/Docum.../homenet2run/tcpip/tcp-ip-illustrated/tcp_keep.htm (1 of 9) [12/09/2001 14.47.30] Chapter 23. TCP Keepalive Timer personal computer users use TCP/IP to login to a host using Telnet. If they just power off
the computer at the end of the day, without logging off, they leave a half-open
connection. In Figure 18.16 we showed how sending data across a half-open connection
caused a reset to be returned, but that was from the client end, where the client was
sending the data. If the client disappears, leaving the half-open connection on the server's
end, and the server is waiting for some data from the client, the server will wait forever.
The keepalive feature is intended to detect these half-open connections from the server
side. 23.2 Description
In this description we'll call the end that enables the keepalive option the server, and the
other end the client. There is nothing to stop a client from setting this option, but
normally it's set by servers. It can also be set by both ends of a connection, if it's
important for each end to know if the other end disappears. (In Chapter 29 we'll see that
when NFS uses TCP, both the client and server set this option. But in Chapter 26 with
Rlogin and Telnet, only the servers set the option, not the clients.)
If there is no activity on a given connection for 2 hours, the server sends a probe segment
to the client. (We'll see what the probe segment looks like in the examples that follow.)
The client host must be in one of four states.
1. The client host is still up and running and reachable from the server. The client's
TCP responds normally and the server knows that the other end is still up. The
server's TCP will reset the keepalive timer for 2 hours in the future. If there is
application traffic across the connection before the next 2-hour timer expires, the
timer is reset for 2 hours in the future, following the exchange of data.
2. The client's host has crashed and is either down or in the process of rebooting. In
either case, its TCP is not...
View Full Document
- Spring '12