tcp session termination verständnis frage



  • Dieses Thema passt leider nicht in dieses Topic nicht ganz hinein aber ich wüsste nicht wo ich es sonst schreiben sollte.
    Wie der Titel schon sagt geht es um das schließen einer TCP-Verbindung.
    Ich muss in der Schule die Cisco unterlagen durcharbeiten doch irgendwie komm ich nicht ganz auf einen grünen Zweig.
    Und zwar habe ich das aus dem Skriptum so interpretiert:

    1. ClientA sendet ein Segment mit dem „FIN-Flag“
    2. Darauf antwortet ClientB mit einem „ACK“, was so viel bedeutet wie, dass das Segment angekommen ist.
    3. Anschließend versendet ClientB ebenfalls ein „FIN-Flag“
    4. Zuletzt muss ClientA nochmals mit ACK bestätigen und die Verbindung ist getrennt

    Doch irgendwie höre ich immer wieder von anderen sagen. Danach habe in wireshark nachgeschaut. Dort sieht das wieder anders aus und zwar:
    als erstes ein ACK, FIN flag dann wieder ein ACK, FIN flag (vom anderen client) und an schluss noch ein ACK.

    Wie ist es denn jetzt richtig?
    Aus wikipedia werde ich auch nicht schlau... bitte helft mir



  • Bist du dir sicher, dass das erste ACK nicht noch von der vorherigen Anfrage kommt?

    Ansonsten passt doch alles.

    als erstes ein ACK, FIN flag

    (siehe ersten Kommentar für das ACK).
    Das FIN erledigt dann punkt 1

    dann wieder ein ACK, FIN flag (vom anderen client)

    punkt 2. und 3.

    und an schluss noch ein ACK.

    Ich vermute mal vom Client der auch Punkt 1 gesendet hat: erfüllt Punkt 4.



  • Wie von otze gesagt: Der Client hat wohl das ACK aus dem letzten Segment und das FIN zusammengepackt.



  • nwtkhelp schrieb:

    Dieses Thema passt leider nicht in dieses Topic nicht ganz hinein aber ich wüsste nicht wo ich es sonst schreiben sollte.
    Wie der Titel schon sagt geht es um das schließen einer TCP-Verbindung.
    Ich muss in der Schule die Cisco unterlagen durcharbeiten doch irgendwie komm ich nicht ganz auf einen grünen Zweig.
    Und zwar habe ich das aus dem Skriptum so interpretiert:

    1. ClientA sendet ein Segment mit dem „FIN-Flag“
    2. Darauf antwortet ClientB mit einem „ACK“, was so viel bedeutet wie, dass das Segment angekommen ist.
    3. Anschließend versendet ClientB ebenfalls ein „FIN-Flag“
    4. Zuletzt muss ClientA nochmals mit ACK bestätigen und die Verbindung ist getrennt

    Doch irgendwie höre ich immer wieder von anderen sagen. Danach habe in wireshark nachgeschaut. Dort sieht das wieder anders aus und zwar:
    als erstes ein ACK, FIN flag dann wieder ein ACK, FIN flag (vom anderen client) und an schluss noch ein ACK.

    Wie ist es denn jetzt richtig?
    Aus wikipedia werde ich auch nicht schlau... bitte helft mir

    Was Wireshark dir zeigt ist richtig:

    TCP A                                                TCP B
    
      1.  ESTABLISHED                                          ESTABLISHED
    
      2.  (Close)
          FIN-WAIT-1  --> <SEQ=100><ACK=300><CTL=FIN,ACK>  --> CLOSE-WAIT
    
      3.  FIN-WAIT-2  <-- <SEQ=300><ACK=101><CTL=ACK>      <-- CLOSE-WAIT
    
      4.                                                       (Close)
          TIME-WAIT   <-- <SEQ=300><ACK=101><CTL=FIN,ACK>  <-- LAST-ACK
    
      5.  TIME-WAIT   --> <SEQ=101><ACK=301><CTL=ACK>      --> CLOSED
    
      6.  (2 MSL)
          CLOSED
    

    Siehe: http://www.ietf.org/rfc/rfc793.txt

    ACK
              A control bit (acknowledge) occupying no sequence space, which
              indicates that the acknowledgment field of this segment
              specifies the next sequence number the sender of this segment
              is expecting to receive, hence acknowledging receipt of all
              previous sequence numbers.
    
    FIN
              A control bit (finis) occupying one sequence number, which
              indicates that the sender will send no more data or control
              occupying sequence space.
    


  • also hab ich das richtig verstanden
    erst
    clienta fin
    clientb ack
    clientb fin
    clienta ack

    und das ist das einzige verfahren?
    hab noch was von nem threewayhandshake verfahren gehört.



  • nwtkhelp schrieb:

    also hab ich das richtig verstanden
    erst
    clienta fin
    clientb ack
    clientb fin
    clienta ack

    Nein,

    clienta fin,ack
    clientb ack
    clientb fin,ack
    clienta ack

    nwtkhelp schrieb:

    und das ist das einzige verfahren?

    Nein, es gibt noch die simultaneous close sequence, wenn beide gleichzeitig die Verbindung schließen wollen.

    nwtkhelp schrieb:

    hab noch was von nem threewayhandshake verfahren gehört.

    Das gilt für die Verbindungsaufnahme: SYN -> SYN,ACK -> ACK.

    Lies doch einfach das RFC, das ich verlinkte. 😕
    Da steht alles drin.



  • oh das habe ich ganz übersehen danke



  • ok eine Frage hätte ich noch. Und zwar heißt es in meiner Aufgabenstellung Typ des TCP-Segments

    In this activity, we will focus only on event information only at Layer 4. The first tab in the PDU Information window contains information about the inbound and outbound PDU as it relates to the OSI model. Click the Layer 4: boxes for both the inbound and outbound layers and read the content of the box and description in the box below the layers. Pay attention to the type of TCP segment. Click the Outbound PDU Details tab. In the TCP segment, note the initial sequence number.

    Examine the PDU information for the first four TCP events in the same fashion. These events show the three-way handshake that establishes the session. Note the type of TCP segment and the change in the sequence number.

    Examine the PDU information for the TCP events that follow the main HTTP exchange in the same fashion. These events show the session termination. Note the type of TCP segment and the change in the sequence number.

    Ich habe mein ganzes Skriptum durchgelesen und finde nirgends diesen Begriff. Meint man damit ob es ACK, FIN usw. ist?


Anmelden zum Antworten