socket und ports ...



  • möchte gerne wissen, was 1. der genaue unterschied zwischen einem socket und einem port ist.. ich könnte es erahnen, aber möchte es trotzdem von paaren von euch gehört bekommen. 😉

    2. ist der port gleichzeitig auch die adresse im speicher, an dem die daten von der netzwerkkarte als erstes hingeschickt werden ? (oder umgekehrt, dass sie von dort aus zur netzwerkkarte geschickt werden ; dann müssten z.b. die zeichen eines strings erst zum port gehen wo dann auch die netzwerkkarte die einzelnen bytes per in/out nur abholen braucht so ganz grob ausgedrückt). ich lese von einem TCP/IP stack.. , wo ist dieser stack ? ist die adresse des stacks gleich der portadresse ??

    danke

    mfg
    haMMer



  • Hmm..

    Der Socket ist eigentlich nur ein Pointer, über den Netzwerkfunktionen (die zu den sockets gehören) sich zurecht finden. Man kann einen Socket auf einen Port festlegen, diesen aber jederzeit ändern.

    Ein Port ist nichts weiter, als die Aufteilung der Netzwerkverbindung.
    Stell Dir einen Flughafen vor, der nur eine Landebahn hat. Es kann immer nur ein Flugzeug abgefertigt werden. Hast Du nun mehrere Landebahnen (Ports) auf dem Flughafen (Netzwerkverbindung), kannst Du auch mehrere Flieger gleichzeitig bearbeiten. Genauso ist das auch mit den Ports. Hättest Du die nicht, könntest Du immer nur eine Applikation übers Netzwerk laufen lassen..

    cYa
    DjR



  • ein socket identifiziert eine bestimmte anwendung auf einem
    bestimmten computer in einem netzwerk.
    zur identifikation des computers dient die ip-adresse
    (es gibt noch andere protokolle).
    der port identifiziert die anwendung.

    der port ist dabei keine adresse im speicher. er ist eine art index.
    die tcp/ip software hat eine liste mit allen auf dem lokalen rechner
    registrierten anwendungen. der port ist der index der anwendung in dieser
    liste.

    kommen daten zu einem rechner (ip/port), so werden die daten von der tcp/ip software zwischengespeichert. eine anwendung kann dann auf diese daten zugreifen.
    der zugriff der software auf die daten geschieht ueber das socket.

    beispiel:

    // neuesSocket ist der identifikator fuer alle spaeteren aktionen mit dem socket
    neuesSocket = socket( tcp/ip ); // ein socket erstellen
    bind( neuesSocket, portNr ); // der anwendung einen bestimmten port zuweisen
    ...
    // kommunikation ueber read/write, es muss ein socket angegeben werden
    // von dem gelesen/in den geschrieben wird
    read( neuesSocket,....);
    write( neuesSocket,...);
    


  • aber diese daten, die von der netzwerkkarte geholt werden, die werden alle
    erst von der tcp/ip software zwischengespeichert und dann anhand der portnummer
    erst an den richtigen socket weitergeleitet oder ? Oder gehen diese daten direkt gleich zum richtigen socket ..? sodass das ganze dann praktisch echt parallel abläuft...



  • der TCP/IP Stack befindet sich im Kernel und kümmert sich um das ganze LowLevel Protokoll Zeugs. Dort werden auch die Daten gespeichert, bis du diese einliest in deinem Programm (außer bei asynchronem I/O, da werden die Daten dann in den Buffer von dir geschrieben und dir wird nur ein Signal gesand, dass die Daten fertig übertragen wurden)



  • jo... wollte nur wissen, ob jeder socket sozusagen seinen eigenen tcpip-stack hat oder es nur einen stack gibt und von dort aus die daten von verschiedenen programmen abgeholt werden so als gemeinsamer topf... ?

    also ob das so etwa aussieht ? :

    ...
                                              /--->socket1<--->prog A
                                             /
                                            /----->socket2<--->prog B
                                           /
                                          /------->socket3<--->prog C
    Kabel-->Netzwerkkarte---->TCP/IP-stack
                                          \------->socket4<--->prog D
                                           \
                                            \----->socket5<--->prog E
                                             \
                                              ...
    

    mfg 😉



  • Also rein netzwerktechnisch ist ein SOCKET die Kombination aus IP-Adresse + IP-Port.

    Ein Quake 3 Server könnte also z.B. auf Socket > 192.168.0.3:27960 < laufen.

    Das nur so nebenbei. Aber Dich interessiert sicher der Socket im Sinne von WinSock etc. 🙂


Anmelden zum Antworten