PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wie werden tcp/ip datenpakete dem korrekten programm zugeordnet?



newton
10.11.06, 13:33
Hi,

so wie ich es verstehe hat jedes Netzwerkpaket im haeder unter anderem einen Parameter fuer das Protokoll an das es weitergerreicht werden soll (z.b. tcp oder udp), als auch eine Portnummer, die angiebt an welchen service das Paket gehen soll (ssh, www, smtp, ...).
Jetzt giebt es aber fuer die verschiedenen Services unter Umstaenden mehr als eine Applikation, z.B. kann ich mit zwei verschiedenen Browsern gleichzeitig surfen (beide sicherlich tcp und port 80), oder aber edonkey auf port 80 laufen lassen und gleichzeitig surfen.

Ich habe mich nun gefragt wie das Betriebssystem die Netzwerkpakete dem richtigen Programm zuordnet. Bzw. wenn es noch ne andere Moeglichkeit giebt die Pakete aufzuteilen als ueber die Ports, wozu sind die dann ueberhaupt gut? Oder sind die Ports nur sowas wie ne "vorfilterung", und dann nehmen die Prozesse nur die Pakete an die sie auch haben wollen?:confused:

carstenj
10.11.06, 13:44
Hi,

gibt schreibt man übrigens ohne ie.

Es gibt sogenannte Sockets, anhand deren ein Betriebsystem Verbindungen unterscheidet. Ein Socket enthält folgende Informationen:
Protokolltyp (UDP o. TCP)
Src-IP
Src-Port
Dst-IP
Dst-Port

Diese Informationen sind einmalig, d. h. es kann unmöglich ein Socket geben, welches komplett die gleichen Informationen enthält.


beide sicherlich tcp und port 80
Ne, das sind ungefähr so aus:
Protokoll: TCP
Dst-IP: 192.168.1.2 - Webserver
Dst-Port: 80
Src-IP: 127.0.0.1 - Dein Rechner
Src-Port: 1025

So, nun kann es ja sein, dass du mehrere Verbindungen auf Port 80 offen hast. Dann ist eigentlich nur der Src-Port zwangsläufig anders, und somit ein anderes Socket.

newton
10.11.06, 14:02
Vielen Dank fuer Deine Erklaerungen :)


So, nun kann es ja sein, dass du mehrere Verbindungen auf Port 80 offen hast. Dann ist eigentlich nur der Src-Port zwangsläufig anders, und somit ein anderes Socket.

Das heist beim erstellen von Sockets wird ein noch unbelegter (lokaler) Port verwendet? (Zufaellig ausgewaehlt?) Imho ist aber doch bei ner firewall erstmal alles zu, ausser vielleicht port 80. Wuerde jetzt ein angefragter webserver seine Antwort an port 1025 senden wuerde das ja gar nicht ankommen.
Aber irgendwie funktionierts ja, was hab ich da falsch verstanden?

Leberwurstsaft
10.11.06, 14:27
Imho ist aber doch bei ner firewall erstmal alles zu, ausser vielleicht port 80. Wuerde jetzt ein angefragter webserver seine Antwort an port 1025 senden wuerde das ja gar nicht ankommen.
Ich bin zwar kein Netzwerkspezi, aber soweit ich das verstanden habe, ist hierfür die "stateful inspection" von iptables zuständig. Dadurch werden aus dem lokalen Netz/Rechner ausgehende Pakete erlaubt und so markiert, daß iptables die Antwortpakete erkennt und zuläßt. Man möge mich berichtigen wenn ich falschliege.

newton
10.11.06, 16:13
Das hoert sich nach einer guten Erklaerung an :)
Vielen Dank!

bla!zilla
10.11.06, 17:20
Anfragen kommen von deinem Rechner immer von unpriviligierten Ports, also Ports oberhalb von 1024 und unterhalb von 65536. Eine Firewall betrachtet immer outgoing und incoming Traffic. Es ist die Frage was geschlossen wurde. Ein häufig gemachter Firewall-Fehler (gerade von Leuten die keine Ahnung haben) ist es, Port 80/tcp incoming zu öffnen, "da die Leute ja sonst nicht surfen können". Ist natürlich quatsch.