Loco
07-26-2002, 11:09 PM
4.7 - What exactly does SO_KEEPALIVE do?
From Andrew Gierth (andrew@erlenstar.demon.co.uk):
The SO_KEEPALIVE option causes a packet (called a 'keepalive probe') to be sent to the remote system if a long time (by default, more than 2 hours) passes with no other data being sent or received. This packet is designed to provoke an ACK response from the peer. This enables detection of a peer which has become unreachable (e.g. powered off or disconnected from the net). See 2.8 Why does it take so long to detect that the peer died? for further discussion.
Note that the figure of 2 hours comes from RFC1122, "Requirements for Internet Hosts". The precise value should be configurable, but I've often found this to be difficult. The only implementation I know of that allows the keepalive interval to be set per-connection is SVR4.2.
From: Mahmoud Chilali
the value is configurable via sysctl on FreeBSD and friends. on these systems, keepalive is set by default on a per system basis, so applications do not need to set the option.
From Andrew Gierth (andrew@erlenstar.demon.co.uk):
The SO_KEEPALIVE option causes a packet (called a 'keepalive probe') to be sent to the remote system if a long time (by default, more than 2 hours) passes with no other data being sent or received. This packet is designed to provoke an ACK response from the peer. This enables detection of a peer which has become unreachable (e.g. powered off or disconnected from the net). See 2.8 Why does it take so long to detect that the peer died? for further discussion.
Note that the figure of 2 hours comes from RFC1122, "Requirements for Internet Hosts". The precise value should be configurable, but I've often found this to be difficult. The only implementation I know of that allows the keepalive interval to be set per-connection is SVR4.2.
From: Mahmoud Chilali
the value is configurable via sysctl on FreeBSD and friends. on these systems, keepalive is set by default on a per system basis, so applications do not need to set the option.