Sockets: Internet-IP und dann ...?



  • Guten Morgen,
    Ich habe ein kleines Verständnisproblem: Wenn ich Daten über das Internet an ein System schicke, dieses System Jedoch z.B. 2 LAN-CLient beinhaltet, wie unterscheidet man diese beiden dann am besten?

    Es fällt mir schwer das Problem in Worte zu fassen ... 😃

    Anders Ausgedrückt:
    Ich habe einen Host auf einem Server irgendwo im Internet. Mit diesem Host verbinden sich nun 10 Clienten, 2 davon kommen jedoch aus dem gleichen LAN, wie unterscheidet der Host nun diese beiden Clienten voneinander?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89, C99 und C11) in das Forum Themen rund um die IT verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vllt. über die mac im ethernet 😕



  • Wird die MAC-Adresse über UDP mitgeschickt?



  • kopfschmerznetzwerg schrieb:

    Wird die MAC-Adresse über UDP mitgeschickt?

    ja



  • Also du meinst 2 clients teilen sich über den Router die gleiche IP Adresse? Aus Sicht des Hosts laufen dann beide clients auf der gleichen Maschine, die beiden Verbindungen können aber trotzdem anhand des Ports unterschieden werden.



  • crispin kenton schrieb:

    kopfschmerznetzwerg schrieb:

    Wird die MAC-Adresse über UDP mitgeschickt?

    ja

    Nein, die MAC-Adresse wir nicht über UDP mitgeschickt.



  • Gruum schrieb:

    crispin kenton schrieb:

    kopfschmerznetzwerg schrieb:

    Wird die MAC-Adresse über UDP mitgeschickt?

    ja

    Nein, die MAC-Adresse wir nicht über UDP mitgeschickt.

    Aber natürlich, MAC ist OSI-Schicht 1/2... die ist immer dabei!



  • Über diese Möglichkeit habe ich auch schon nachgedacht, bin mir aber nicht sicher, ob es der Ideale weg ist.

    Ich will ein kleinen Login-Host machen, über denn dann mehrere Clienten chatten können, eig soweit kein Problem, bis auf die sache mit den Clienten aus dem Gleichen LAN. Ich hab auch an eine LOGIN-ID gedacht, die dann immer am anfang eines Datenpackets mitgeschickt wird. Diese Login id wird dann beim connecten zugewiesen.

    Oder wie du sagst, dass ich Clienten aus dem gleichen LAN jeweils einen anderen Port zuweise.

    Ich möchte mir nur sicher sein, welche Methode die gängiste wäre, würde dazu gern google anschmeißen, habe jedoch keine Ahnung wonach ich suchen soll. Das sind meine ersten Schritte in der Netzwerkprogrammierung.



  • crispin kenton schrieb:

    Gruum schrieb:

    crispin kenton schrieb:

    kopfschmerznetzwerg schrieb:

    Wird die MAC-Adresse über UDP mitgeschickt?

    ja

    Nein, die MAC-Adresse wir nicht über UDP mitgeschickt.

    Aber natürlich, MAC ist OSI-Schicht 1/2... die ist immer dabei!

    Nur bis zum nächsten Router


  • Mod

    crispin kenton, du hast das sicher schon so oft gehört, dass ich nur die ersten fünf Wörter zu sagen brauche: Wenn man keine Ahnung hat...

    Du kannst nicht an eine MAC kommen, die nicht in deinem Netz ist.

    Allgemein ist es tendenziell schwer bis unmöglich, Clients hinter einem Router zu unterscheiden, die nicht unterschieden werden wollen. Es gibt probabilistische Techniken, indem man die IPid auswertet und dann verschiedene Bereiche verschiedenen Clients zuordnet. Die meisten Router verwalten die IPids nämlich nicht zufällig sondern geben jedem Client einfach einen Bereich.
    http://www.heise.de/ct/artikel/Rechner-hinter-Routern-auffindbar-288696.html

    Das sind aber schon ziemlich invasive Schnüffelmethoden 👎 . @TE: Frag deine Clients doch einfach, wer sie sind. Wenn sie lügen, weil sie nicht unterschieden werden wollen*, ist das so schlimm für dich?

    *: Oder die sich für zwei Clients ausgeben, obwohl es nur einer ist.

    edit: Ich sehe gerade, dass dein Problem weitaus einfacher ist, als ich bei der ersten Frage erwartet hatte. Die richtige Zuweisung der Pakete an die Clients im LAN macht schon der Router, du brauchst dich auf dem Server um nichts zu kümmern. Für den Server ist das bloß so, als hätte der Router zwei Verbindungen zu ihm.



  • Kopfschmerznetzwerg schrieb:

    Ich will ein kleinen Login-Host machen, über denn dann mehrere Clienten chatten können, eig soweit kein Problem, bis auf die sache mit den Clienten aus dem Gleichen LAN.

    Das ist kein Problem, weil es dem Server egal ist. Der bekommt von seiner accept-Funktion einen Socket, der genau dem einen Client, der gerade connected hat, zugeordnet ist.



  • Ich dachte accept() nutzt man nur bei TCP?

    Wichtig ist mir halt auch, das Client A sich nicht einfach als Client B ausgeben kann. Sowas wie ein Passwortschutz ist auf lange sicht mit eingeplant.



  • eig soweit kein Problem, bis auf die sache mit den Clienten aus dem Gleichen LAN.

    Warum soll die IP zur Unterscheidung nicht ausreichen?

    wie unterscheidet der Host nun diese beiden Clienten voneinander?

    An der IP?

    Wichtig ist mir halt auch, das Client A sich nicht einfach als Client B ausgeben kann

    Was bedeutet das? Wo liegt das Unterscheidungsmerkmal? IP und Portnummer sind nicht ausreichend. Die Unterscheidung muss auf Applikationsebene erfolgen.



  • edit: Ich sehe gerade, dass dein Problem weitaus einfacher ist, als ich bei der ersten Frage erwartet hatte. Die richtige Zuweisung der Pakete an die Clients im LAN macht schon der Router, du brauchst dich auf dem Server um nichts zu kümmern. Für den Server ist das bloß so, als hätte der Router zwei Verbindungen zu ihm.

    Das verstehe ich nicht ganz. Die beiden LAN-Clienten teilen sich doch die gleiche Internet-IP. Wenn nun der server mit sendto() ein Paket an diese Adresse schickt, kommt das Paket doch an allen Clienten im Netzwerk an? Oder welche Daten schicke ich mit sendto() unbewusst mit, anhand dessen der Router die Clienten unterscheiden kann?



  • jeder rechner erstellt eine eindeutige ip/id kombination schickt die an den switch, da kommt dann die mac zum einsatz... und dann geht es weiter zum router, der erstellt eine eigene ip/id kombination und schickt die daten weiter.

    @edit: der router sollte sich natürlich merken, welche versendete kombination zu welchem rechner gehört...



  • UPS! Ich hab nochmal meinen ersten Post durchgelesen, ich glaub ich drücke mich da etwas unklar aus:

    Die beiden Clienten sind zwar im gleichen LAN, aber nicht im geichen LAN wie der Server. Ansonsten wär es ja kein Problem 😃


  • Mod

    Kopfschmerznetzwerg schrieb:

    Die beiden Clienten sind zwar im gleichen LAN, aber nicht im geichen LAN wie der Server. Ansonsten wär es ja kein Problem 😃

    Es ist auch keine Problem! Der Router löst die Probleme, die dabei auftreten könnten:
    http://en.wikipedia.org/wiki/NAT

    Aber ich bin verwirrt, ob es dir nun um die Technik des Sendens geht (da brauchst du gar nichts weiter zu tun) oder um Authentifizierung (die muss auf Anwendungsebene erfolgen).



  • Es geht mir um die Authetifizierung.

    Mal ein Beispiel:
    1 Server, irgendwo im Internet.
    3 Clienten, davon 2 im gleichen LAN, ich nenn die beiden mal A und B.

    Das erste Byte von jeder Nachricht ist entweder mit 'c', 'd', oder 'n' gefülllt.
    'c' steht für connect, mit dieser Nachricht wird name und passwort mitgeschickt und vom server geprüft. Wenn alles OK ist, merkt sich der Server, dass dieser Client nun den Namen hat, der mitgeschickt wird.

    Nun schicken jedoch 2 clienten ein connect, die im gleichen LAN sind, sprich der Server bekommt von client A name/pw zugeschickt und wird vom server gemerkt. Nun kommt client B, der die gleiche IP Adresse hat, und der Server ist verwirrt: Ist es nun der gleiche Client, oder ein anderer?

    Wenn nun der Server nur an Client B eine nachricht schicken will, wie soll er das machen? Beide haben die gleiche IP Adresse, das einzige worin die beiden sich unterscheiden ist halt der Benutzername mit dem sie sich eingelogt haben.

    Der Server kann nun mit jedem Packet den Nutzername mitschicken oder z.b. client A und B unterschiedliche Ports zuweisen oder sonst was. Ich frage mich, welche MEthode am geignetesten wäre, oder ob über UDP solche Daten automatisch über das Internet mitgeschickt werden, anhand dessen ich die beiden clienten unterscheiden kann.



  • Wovor willst du dich schuetzen? Was soll passieren, wenn mittendrin die LAN-Ips beider CLients vertauscht werden?


Anmelden zum Antworten