Netzwerke und Server



  • Hallo Freunde der Sonne,

    Es gibt da etwas was ich nicht verstehe. Deswegen frage ich jetzt blöd.
    Ich hatte mal einen einfachen Chat-Client entwickelt, dazu einen Server, der die Nachricht entgegennimmt.
    Im lokalen Netzwerk hat das funktioniert. Der eine Computer konnte per Chat-Client eine Nachricht zum Computer mit dem Server-Programm über den Port 50000 schicken.

    Über das Internet hat das dann nicht mehr funktioniert. Der Grund: Der Port 50000 wird vom Router blockiert und müsste erst freigeschaltet werden.

    Mir wurde dann gesagt, man müßte einen Server programmieren, der zentral alle Nachrichten empfängt und versendet. Aber das läuft doch auf das selbe hinaus: Der Server muss ja letztenendes auch wieder über einen bestimmten Port die Nachrichten verschicken, der erst freigeschaltet werden muss, oder nicht?

    Könnte man vielleicht auch einfach Ports benutzen, die standardmäßig freigeschaltet sind, und dann beispielsweise über das HTTP-Protokoll Daten senden und empfangen?

    Wobei sich da ja noch eine zusätzliche Problematik ergeben würde: Beispielsweise verschickt ein Programm eine Nachricht über den Standard HTTP-Port, und im Netzwerk, zu dem die Nachricht hingeschickt wird, haben mehrere Leute ihren Webbrowser offen, was dann wieder heißen würde, dass jeder mit geöffneten Webbrowser die Daten empfängt, weil ja jeder Webbrowser Internetseiten über HTTP empfängt und über HTTP Daten sendet, also auch auf den HTTP-Port lauscht (Gut, heutzutage gibt es noch dieses HTTPS und andere Dinge die Webbrowser benutzen, das habe ich jetzt der Einfachheit halber mal wegabstrahiert).

    Könnte mal ein Fachmann einen Kommentar zu meinen Gedankengängen abgeben, um sie ein wenig zu entwirren? Das wäre sehr nett!



  • Ich bin zwar kein Mann vom Fach, aber Webbrowser horchen z.B. nicht standardmäßig auf Port 80 (dem HTTP-Port). Müssen sie auch nicht, denn sie nehmen ja keine Anfragen entgegen, sondern nur Antworten. Außerdem bekommt nicht jede Anwendung, die auf einem Port X lauscht, auch alle Daten mit, die an einen Port X gehen sollen, sondern nur, wenn auch ihre IP-Adresse mit der Ziel-Adresse der Nachricht übereinstimmt.
    Wenn du einen Server über Port X betreibst, dann muss auch Port X weitergeleitet werden, wenn du dich hinter einem Router befindest (die Technik wird NAT genannt). Der HTTP-Port ist in der Hinsicht Nichts besonderes. Port-Weiterleitungen sind hingegen unnötig, wenn der Server direkt im Netz ohne ein NAT-Gateway hängt.



  • Es geht nur um den Aufbau einer Verbindung. Wenn ein Client hinter einem Router eine Verbindung mit einem Server im Internet aufgebaut hat, darf der Server auch Daten senden. Die Verbindung muss halt schon stehen
    Der Server kann nicht einfach eine Verbindung mit irgendeinem Rechner hinter einem Router herstellen. Nicht nur dass er das nicht darf, das geht einfach auch nicht. Denn woher sollte der Router wissen, an welchen Rechner im lokalen Netzwerk die Anfrage gerichtet ist? Dazu musst du im Router eben Portforwarding aktivieren.



  • Aha, also muss sich ein Client, der von einem Server Daten bekommen will, vorher bei diesem Server anmelden, und schon müssen keine Ports mehr freigeschaltet werden, richtig?



  • Dexter1997 schrieb:

    richtig?

    Nein.



  • Dexter1997 schrieb:

    Aha, also muss sich ein Client, der von einem Server Daten bekommen will, vorher bei diesem Server anmelden, und schon müssen keine Ports mehr freigeschaltet werden, richtig?

    In dem Fall müssten clientseitig keine incoming Ports freigeschaltet werden. Serverseitig allerdings schon. Und natürlich muss der Client outgoing können/dürfen.



  • Mechanics schrieb:

    Der Server kann nicht einfach eine Verbindung mit irgendeinem Rechner hinter einem Router herstellen. Nicht nur dass er das nicht darf, das geht einfach auch nicht. Denn woher sollte der Router wissen, an welchen Rechner im lokalen Netzwerk die Anfrage gerichtet ist? Dazu musst du im Router eben Portforwarding aktivieren.

    so wie du das schreibst, ist das erst einmal falsch.

    selbstverstaendlich darf ein router einfach so in das lokale netz routen. auch wohin weiss er prinzipiell.
    ausnahme: das lokale netz nutzt private adressen und der router routet nicht nur, sondern betreibt auch nat. nur dann stimmt was du schreibst.


Log in to reply