C++Guns – RoboBlog

31.03.2009

TCP Verbindung beenden

Filed under: Allgemein — Thomas @ 22:03

Es sollte eigentlich nicht vorkommen, aber dennoch passiert es, dass sich TCP Verbindungen nicht abbauen, wenn die Verbindung eigentlich beendet wurde. Das passiert z.B. wenn man den Drucker ausschaltet, wenn er gerade Daten empfängt. Diese tote TCP Verbindung kann man sich mit netstat -ntpa anzeigen lassen

tcp 0 0 192.168.0.103:33419 192.168.0.200:631 VERBUNDEN -

Im letzten Feld steht normal die PID und der Name des Programmes. Die Verbindung würde sich beenden, wenn Daten durch sie geschickt werden. Da der Remote Rechner aber nicht läuft, würde kein Antwortpaket zurück kommen welches die Verbindung beendet.

Nun möchte man die Verbindung aber beenden, ohne neu zu starten. Unter BSD gibt es das Programm tcpdrop, welches Verbindungen ganz einfach beendet. Aber anscheinend hat es niemand nach Linux portiert. Also behelfen wir uns anders. Mit netstat -nptae kann man sich die inode der Verbindung anzeigen lassen

tcp 0 0 192.168.0.103:33419 192.168.0.200:ipp VERBUNDEN root 252919 -

Die inode ist im vorletzten Feld gelistet. Ein einfaches lsof | grep 252919 liefert auch endlich die passende PID

ipp 27904 root 6u IPv4 252919 0t0 TCP 192.168.0.103:33419->192.168.0.200:ipp (ESTABLISHED)

Die PID steht an zweiter Stelle. Nun kann man den Process auch mit kill 27904 beenden. netstat bestätigt dies mit einem FIN_WAIT1

tcp 0 1 192.168.0.103:33419 192.168.0.200:631 FIN_WAIT1 0 0 -

Und nach ein paar Minuten ist sie dann auch ganz weg.

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress