Christian Seiler: TCP/IP-Kommunikation: nachgefragt

Beitrag lesen

Hallo Tom,

Beim Client wird pro Browserfenster i.d.R. mindestens ein Port geöffnet.

Das wäre genauso falsch gewesen. Wie ich bereits gesagt habe, ist "offen" ein Fachbegriff, der hier schlichtweg nicht zutrifft. Eine clientseitig initiierte Verbindung von einem bestimmten Port aus heißt NICHT dass der Ausgangsport "offen" ist. "offen" heißt, dass auf diesem Port ein Dienst lauscht, der NEUE Verbindungen entgegen nimmt.

Ich habe noch keinen einzigen Browser gesehen, der beim Öffnen eines neuen Fensters (natürlich mit Inhalt, also beim Verbindungsaufbau mit dem Partner) keine Portöffnung verursacht hat.

Ich habe noch keinen Browser gesehen, der so etwas verursacht hat (naja, evtl. können einige Browser aktives FTP, aber das ist nochmal eine andere Geschichte). Du kannst es ja gerne mal selbst ausprobieren: Lade Dir eine große Datei herunter, schaue in netstat nach, welchen Client-Port Dein Browser verwendet, um den Webserver zu kontaktieren und versuche Dich z.B. per telnet localhost port mit dem Port zu verbinden - das wird fehlschlagen - weil der Port eben NICHT offen ist, sondern lediglich an einer Verbindung teilnimmt.

Was mir aber überhaupt nicht einleuchten will ist, was passiert, wenn ein Server einfach ein Response-Paket schickt auf eine Frage die der Client nie gestellt hat, oder die schon sehr lange her ist?

Dann wird sie wenn der Client freundlich ist mit einer Fehlermeldung beantwortet (z.B. einem TCP-Paket, in dem das RST-Flag gesetzt ist oder einer speziellen ICMP-Nachricht - wann welches Verfahren genau eingesetzt wird, müsste ich nachlesen) oder wenn der Client nicht so freundlich ist, wird das Paket einfach verworfen.

Das Paket kommt ja beim Client an dank IP, soll nun "zugestellt" werden dank TCP an den Port des Clients. Und der sagt gar nix, weil er nämlich gar keine Frage an die IP gestellt hatte in der letzten Stunde und auch sonst nix los aist auf dem Host. Was macht ein solcher Port dann?

Der Port macht gar nichts. Der Port ist wie ich schonmal gesagt habe nur eine Nummer, die vom Betriebsystem augsewertet wird. Das Betriebsystem sieht "oh, zu dem Port kenne ich nichts in meiner Verbindungstabelle, also ist das Paket ungültig, also ignoriere ich's entweder oder ich schicke ne Fehlermeldung zurück".

Und die zweite korrespondierende Frage wäre:
Wenn der Client ünter Nennung des Ports zwar mal eine Frage "an die IP" gestellt hat, und nun auch eine Antwort bekommt, aber der Absender hat nur mal eben schnell die Leitung angezapft ist nun also unrechtmäßiger Besitezr der IP, ist nur einfach schneller als der rechtmäßige Besitzer.

Ist das Szenario nun unsinnig oder ist es möglich?

Das Szenario ist möglich. Es gibt diverse Details des TCP/IP-Protokolls, die das erschweren (z.B. bestimmte Zähler, die korrekt hochgezählt werden müssen). Allerdings: Wenn jemand die komplette Kommunikation belauschen kann oder bestimmte Dinge ausnutzen kann (wie z.B. nicht zufällig gewählte Startwerte der Zähler), kann durchaus in die Kommunikation eingegriffen werden, ja. Deswegen sollte man wichtige Daten auch kryptographisch absichern, d.h. verschlüsseln und signieren.

Viele Grüße,
Christian