Ist es möglich, mehrere Streams über ein Socket zu haben?



  • Hallo zusammen,
    Wenn einer Reassembling von TCP- Streams macht, soll man den Fall zu betrachten, wenn über ein Socket mehrere Streams erstell werden ?
    Ein Stream ist harakterisiert durch QuellIP, ZielIP, PortNr, Sequenzial Nr, Acknolegment NR.
    Zum Beispiel, wenn eine FTP- VErbundung erstellt wird, können mehrere Files über den gleichen Socket zugesandt werden? Was passiert dann mit Seq. Nr und Ack Nr - ?



  • ... ich habe meine unpräzise Antwort nochmals überarbeitet:

    o4kareg schrieb:

    Ist es möglich, mehrere Streams über ein Socket zu haben?

    Das kann man verschieden beantworten. Aus TCP Sicht geht das nicht. Natürlich kann man ein Applikations-Protokoll machen, welches einem wieder die Möglichkeiten zu mehreren logischen Kanälen gibt.

    o4kareg schrieb:

    Wenn einer Reassembling von TCP- Streams macht, soll man den Fall zu betrachten, wenn über ein Socket mehrere Streams erstell werden ?

    Der Produzent und Konsument vom Stream bekommt das normalerweise gar nicht mit, wenn TCP Probleme intern behandelt (Retransmission, etc).

    o4kareg schrieb:

    Ein Stream ist harakterisiert durch QuellIP, ZielIP, PortNr, Sequenzial Nr, Acknolegment NR.

    Nur der Endpoint (IP:Port) bestimmt den Stream.

    o4kareg schrieb:

    Zum Beispiel, wenn eine FTP- VErbundung erstellt wird, können mehrere Files über den gleichen Socket zugesandt werden? Was passiert dann mit Seq. Nr und Ack Nr - ?

    Die Files werden (meines Wissens) nacheinandern übermittelt - oder aber es werden mehrere Streams (=Sockets) geöffnet (ich kenne das FTP Protokoll zuwenig). Gleichzeitig geht jedenfalls nicht. Die Seq. und Ack. Nr. interessieren einem gar nicht, die werden komplett vom TCP Stack behandelt.



  • o4kareg schrieb:

    Ein Stream ist harakterisiert durch QuellIP, ZielIP, PortNr, Sequenzial Nr, Acknolegment NR.

    Nö.
    Ein "Stream" ist ein (unüblicher) Ausdruck für eine Connection.
    Und eine Connection wird durch Local-IP:Local-Port:Remote-IP:Remote-Port definiert.
    Sequenznummern etc. sind lediglich Werte die vom Protokoll gebraucht werden um zu garantieren dass nix verlorengeht etc. - mit dem logischen Stream haben die gar nix zu tun.



  • Nur der Endpoint (IP:Port) bestimmt den Stream.

    Ne also dann vielleicht auch die Quelladresse wenn ich z.B. nicht nur localhost sniffe sondern die ganze Lan.

    Ist also den Szenario nicht möglich:

    FTP wird erstellt mit gewissem Port Files zu senden,

    der Sender beginnt ein File zu senden,

    dann wird ein neuer File aufgefordert, mit neuem Seq. Nummer in diesem Stream,

    und dann werden parallel 2 Files zu diesem Socket gesenden und anhang von Seq.Nummern macht ein Empfänger die Reassembly?

    Wo kamm man detailiert über FTP zu lesen im Wikipedia steht nicht viel.



  • Dir fehlen die Grundlagen, beginne hier fuer alles praktische: http://beej.us/guide/bgnet/ . Es ist moeglich mehrere Connections ueber einen Socket bei TCP entgegenzunehmen. Ftp ist aber ein Protokoll auf Anwendungsebene, waehrend ein Socket viel tiefer angesiedelt ist.



  • knivil schrieb:

    Es ist moeglich mehrere Connections ueber einen Socket bei TCP entgegenzunehmen.

    Uff. Jetzt wird er endgültig verwirrt sein.

    So vonwegen Socket vs. Port vs. Connection.



  • Server
    tcp: socket (create socket for listening) -> bind -> listen -> accept (get a socket for that connection)
    udp: socket -> bind -> recvfrom (client identification through metainformation from udp packet)

    Edit: Falscher Thread.


Log in to reply