Tuma,
     take a look at this state diagram from

<http://www.faqs.org/rfcs/rfc793.html>

personally, I don't think you can describe this diagram in words and
get it right, especially if you're trying to get it by playing
"20 questions"...

hope this helps,
-Pete.

(actually, you should take a look at the rfc webpage, and read the
 information around this diagram....)







September 1981
                                           Transmission Control Protocol
                                                Functional Specification

                              +---------+ ---------\      active OPEN
                              |  CLOSED |            \    -----------
                              +---------+<---------\   \   create TCB
                                |     ^              \   \  snd SYN
                   passive OPEN |     |   CLOSE        \   \
                   ------------ |     | ----------       \   \
                    create TCB  |     | delete TCB         \   \
                                V     |                      \   \
                              +---------+            CLOSE    |    \
                              |  LISTEN |          ---------- |     |
                              +---------+          delete TCB |     |
                   rcv SYN      |     |     SEND              |     |
                  -----------   |     |    -------            |     V
 +---------+      snd SYN,ACK  /       \   snd SYN          +---------+
 |         |<-----------------           ------------------>|         |
 |   SYN   |                    rcv SYN                     |   SYN   |
 |   RCVD  |<-----------------------------------------------|   SENT  |
 |         |                    snd ACK                     |         |
 |         |------------------           -------------------|         |
 +---------+   rcv ACK of SYN  \       /  rcv SYN,ACK       +---------+
   |           --------------   |     |   -----------
   |                  x         |     |     snd ACK
   |                            V     V
   |  CLOSE                   +---------+
   | -------                  |  ESTAB  |
   | snd FIN                  +---------+
   |                   CLOSE    |     |    rcv FIN
   V                  -------   |     |    -------
 +---------+          snd FIN  /       \   snd ACK          +---------+
 |  FIN    |<-----------------           ------------------>|  CLOSE  |
 | WAIT-1  |------------------                              |   WAIT  |
 +---------+          rcv FIN  \                            +---------+
   | rcv ACK of FIN   -------   |                            CLOSE  |
   | --------------   snd ACK   |                           ------- |
   V        x                   V                           snd FIN V
 +---------+                  +---------+                   +---------+
 |FINWAIT-2|                  | CLOSING |                   | LAST-ACK|
 +---------+                  +---------+                   +---------+
   |                rcv ACK of FIN |                 rcv ACK of FIN |
   |  rcv FIN       -------------- |    Timeout=2MSL -------------- |
   |  -------              x       V    ------------        x       V
    \ snd ACK                 +---------+delete TCB         +---------+
     ------------------------>|TIME WAIT|------------------>| CLOSED  |
                              +---------+                   +---------+

                      TCP Connection State Diagram
                               Figure 6.











 Wang wrote On 07/18/07 07:40 PM,:
> Hi,
> 
> I have some questions regarding some TCP concepts.
> 
> According to Richard Stevens, when the active-close end of a TCP
> connection sends FIN and receives the corresponding ACK from the other
> end, the connection is "half closed". In this state, the active-close
> end cannot send but can receive date from its peer.
> 
> Question 1: it sounds the "half closed" state is the same as the
> WAIT_FIN_2 state?
> 
> Question 2: when the passive-close end receives the FIN, how does it
> know whether the other end wants to stay in the half closed state (in
> this case, it should send data) or to do a full close (in this case,
> it should send FIN)?
> Seems half-close is achieved by using the shutdown() function, so in
> other words, both close() and shutdown() cause FIN to be sent, but
> what's the difference between them so that close() causes the peer to
> send FIN also, while shutdown() caused the peer to delay the FIN?
> 
> According to Richard, "A TCP connection is said to be half-open if one
> end has closed or aborted the connection without the knowledge of the
> other end."
> 
> Question 3: what's meaning of "without the knowledge of the other
> end"? Does it mean "don't know the status of the other end", or "the
> other end doesn't know that I've closed/aborted the connection"?
> 
> Question 4: seems the term "half open" is also used in the context of
> the SYN flood DoS attack, to describe the state of "SYN sent and
> SYN-ACK received, but the last ACK not sent". Clearly the "half open"
> here is not same as the one we talked above. Is it a valid usage of
> this term?
> 
> Thanks.
> _______________________________________________
> networking-discuss mailing list
> [email protected]

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to