[e2e] tcp connection timeout

rick jones perfgeek at mac.com
Thu Mar 9 19:18:23 PST 2006


> shutdown(SHUT_WR) isn't specified in the TCP API; I don't have the 
> Linux
> source code, but it should issue a CLOSE() call as well.

that basically says it won't be sending any more data but might be 
receiving more data.

> The FIN_WAIT_2 results in kept state until a new connection is tried
> that collides.

That could be a very long time indeed.

> That happens on the local end when an app tries to open a new 
> connection
> or send data on the old one; either return an error, at which point the
> application can decide to issue an ABORT() so it can proceed with a new
> connection. The same would occur when an application dies, i.e., when 
> it
> 'disconnects' from the socket, where the OS can issue an ABORT.

Perhaps it is implementation specific, but how about when another 
application, or instance of that application tries to start a listen 
endpoint.  I guess you would consider that a new connection being tried 
that collides?

> It happens on the remote end when the old connection tries to open a 
> new
> connection, where at some point the other side sends a RST or a FIN.

Which may never happen when the remote simply goes poof.

> I.e., overall, the APPLICATION on one side or the other has to decide
> what to do. This can be accomplished by a global OS parameter that
> effectively emulates the timeout for the application, but to TCP it's 
> an
> application-layer decision.

Isn't that global OS parameter that effectively emulates the timeout 
for the application effectively a TCP keepalive?

rick jones
there is no rest for the wicked, yet the virtuous have no pillows



More information about the end2end-interest mailing list