mikrocontroller.net

Forum: PC-Programmierung Frage: Warum können z.B. zwei Explorer auf Port 80 gemeinsam zugreifen ?


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

könnt ihr mir eine kleine Verständinsfrage beantworten ?


- Nehmen wir an ich hab fünf Programme (z.B. Email, Explorer etc. ) 
offen, die alle über Port 80 senden  -  woher weiß ein Paket dann 
welches Programm über Port 80 die Information erhalten soll ???


vielen Dank !

Gruß

Tom

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Zielport ist immer Port 80, der lokale Port ist aber (in Grenzen) 
beliebig!
Dann hast du immer Tupel aus Quell- und Zielport und Welt schön.

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Client sendet nicht von Port 80 (das macht nur der Server). Er sucht 
sich einen lokal noch nicht verwendeten Port in einem Bereich aus, der 
nicht fest für ein bestimmtes Protokoll verwendet wurde. Daher hat jede 
Software eine für deine Ip einmalige Portnummer, somit lassen sich die 
Verbindungen auseinanderhalten.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,

ist es dann richtig:


Der Router speichert sich, was für Anfragen er gesendet hat und ordnet 
diese dann wieder zu -  oder meine Frage anders  -  warum brauche ich 
keinen Port freigeben, wenn ich Daten ( nach einem Senden ) empfangen 
will

?

Also geht das dann so  :


von 2222 --->  80

und dann kommt :

80- ---> 2222   wird angenommen.



Jedoch:

80---> 2222  "einfach so" dann -> wird abgelehnt ?


richtig?

Gruß

Tom

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jaha, Moment. Wo kommt den jetzt der Router her? Wahrscheinlich meinst 
du so einen "Homeroute", wie ihn wahrscheinlich fast jeder in der Ecke 
liegen hat? Die machen NAT:
http://de.wikipedia.org/wiki/Network_Address_Translation

Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
r klemmt

Autor: Stefan B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Paket weiß das gar nicht.
Auf einem Port kann immer nur ein Programm gleichzeitig lauschen.

Außerdem sendest du mit ziemlicher Sicherheit nicht über Port 80, du 
sendest vielleicht an Port 80.
Gesendet wird normalerweise über einen Port >= 1024.

Nehmen wir mal an, du hast sowohl den IE als auch den FF offen, und 
siehst dir auf beiden die gleiche Seite an.
Dein IE schickt von deiner IP über deinen Port 10.000 (z.B.) eine 
Anfrage an den Server auf Port 80.
Dein FF schickt von deiner IP über deinen Port 11.000 (z.B.) eine 
Anfrage an den gleichen Server auf Port 80.

Der Server hat ja die IP und den Port, von dem die Anfrage kam.
Und die Antwort schickt er dann an diese Adresse zurück.
Also schickt er einmal die Seite an deine IP auf Port 10.000, und einmal 
an deine IP auf Port 11.000.

Dein IE lauscht auf Port 10.000, und wenn eine Antwort auf diesem Port 
kommt, zeigt er die Seite an.
Dein FF lauscht auf Port 11.000, und wenn der Server an diesen Port eine 
Antwort schickt, zeigt er sie an.
Von den jeweils anderen Antworten bekommen die Programme gar nichts mit.

Eigentlich ganz einfach... ;)

MfG

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom schrieb:
> Also geht das dann so  :
> von 2222 --->  80
> und dann kommt :
> 80- ---> 2222   wird angenommen.
> Jedoch:
> 80---> 2222  "einfach so" dann -> wird abgelehnt ?
> richtig?

Was verstehst du unter "einfach so"? Zwischen deinem Browser und dem 
Webserver läuft die Übertragung per TCP. Da ist ein 
verbindungsorientiertes Protokoll, was bedeutet, daß dein Browser erst 
eine Verbindung zum Server aufbaut und dann zwischen den beiden Daten 
übertragen werden. Der Router hat diesen Verbindungsaufbau mitbekommen 
und weiß deshalb, zu welcher Verbindung die Pakete gehören. "Einfach so" 
kann man bei TCP keine Daten übertragen. Das ginge nur über UDP, und da 
ist es tatsächlich nicht ohne weiteres möglich, von außen etwas durch 
den Router zu senden.

Autor: PI314 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein "Paket" muss das gar nicht wissen, weil es am port 80 nur ein 
Prozess gibt, das dort ein server socket geöffnet hat. Dieses Prozess 
(ein legitimer Webserver oder auch ein Trojaner :) ) nimmt jede 
Verbindung entgegen und entscheidet, wohin damit. Der Port selbst bleibt 
aber stets für die neue Verbindungen offen.
Zum Überprüfen: probiere mal zwei solche Programme (z.B. IIS und Apache) 
gleichzeitig auf dem gleichen Port laufen zu lassen... klappt nicht.

Autor: timtom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan B. schrieb:
> Nehmen wir mal an, du hast sowohl den IE als auch den FF offen, und
> siehst dir auf beiden die gleiche Seite an.
> Dein IE schickt von deiner IP über deinen Port 10.000 (z.B.) eine
> Anfrage an den Server auf Port 80.
> Dein FF schickt von deiner IP über deinen Port 11.000 (z.B.) eine
> Anfrage an den gleichen Server auf Port 80.

Dann müsste ich, sofern ich eine Firewall einsetze, jedesmal eine 
Freigabe für diesen Port setzen, damit die Daten ausgehen bzw. empfangen 
werden können. Dies muss ich aber nicht, die Firewall ist aber aktiv.

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Müsstest du auch, wenn der Firewallentwickler doof wäre und nicht 
wüsste, dass der Quellport beim Verbindungsaufbau dynamisch und 
vollkommen irrelevant ist, sprich wenn er nach diesem filtern würde.

Da aber die Entwickler normalerweise halbwegs was von der Sache 
verstehen, funktionierts auch so.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
timtom schrieb:
> Stefan B. schrieb:
>> Nehmen wir mal an, du hast sowohl den IE als auch den FF offen, und
>> siehst dir auf beiden die gleiche Seite an.
>> Dein IE schickt von deiner IP über deinen Port 10.000 (z.B.) eine
>> Anfrage an den Server auf Port 80.
>> Dein FF schickt von deiner IP über deinen Port 11.000 (z.B.) eine
>> Anfrage an den gleichen Server auf Port 80.
>
> Dann müsste ich, sofern ich eine Firewall einsetze, jedesmal eine
> Freigabe für diesen Port setzen, damit die Daten ausgehen bzw. empfangen
> werden können. Dies muss ich aber nicht, die Firewall ist aber aktiv.

Firewalls/Nat-Router lassen normalerweise Pakete die von 'innen' kommen 
ungehindert passieren.
Und sie merken sich, dass da ein Paket von Innen/Port_10000 nach aussen 
ging. Wenn innerhalb einer vernünftigen Zeit eine Antwort von genau 
diesem 'aussen' nach Innen/Port_10000 eintrudelt, dann darf sie 
passieren.

Schon vergessen? In jedem Paket steht drinnen von wem das Paket an wen 
geschickt wurde. Das genügt der Firewall/Nat-Router um zu entscheiden, 
ob das jetzt eine Antwort auf ein Paket war dessen Ursprung innerhalb 
seines zu überwachenden Netzes lag oder ob es sich um ein willkütlich an 
dich geschicktes Paket handelt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.