linux-l: wie tcp verbindung killen

Oliver Bandel oliver at first.in-berlin.de
Mi Aug 29 16:26:38 CEST 2001


On Wed, 29 Aug 2001, Robert Sander wrote:

> On Wed, 29 Aug 2001 11:48:44 +0000 (UTC),
>  Volker Mueller <ml-belug at epigenomics.de> wrote:
> 
> >        int shutdown(int s, int how);

shutdown ist ein close mit ein paar Extras.

Das Ergebnis des close/shutdown führt aber doch
erst zum Herunterfahren der Verbindung.

Das heisst: Das shutdown oder close wurde schon längst abgeschickt
und der Kram hängt trotzdem auf halb-acht.

Man hängt also im CLOSING, weil man shutdown/close
aufrief und die Gegenseite auch.

Das ist extrem selten, aber kann passieren. Daß in dem
Moment auch noch ein harter Verbindungsabbruch
stattfindet, weil ein Rechner crasht oder so,
ist noch seltener. Man wird also im Normalfalle
solche Probleme garnicht bekommen.

Hat man aber solche Probleme, hilft shutdown auch nichts,
denn shutdown (oder close) war ja die Ursache, weshalb
in diesen zustand gelabg (weil man die Verbindung runter gefahren hat).
Und nur, wenn man die Verbindung runter fährt - egal ob
mit close oder shutdown - und es die Gegenseite gelichzeitig auch
tut, dann kommt man in den Zustand CLOSING.

Wenn beide TCP-Stacks sauber implementiert sind, sollte
auch die Verbindung sauber herunter gefahren werden, wenn
nicht gerade jemand die Verbindung hart unterbricht.

Wenn die Wahrscheinlichkeit, daß beide Seiten zur selben Zeit
schliessen, nicht so gering wäre, könnte man ja glatt
böse Buben dahinter vermuten.

Ciao,
   Oliver




Mehr Informationen über die Mailingliste linux-l