Alex 'CAVE' Cernat <[EMAIL PROTECTED]> scria la data de 22 Septembrie 2005:
>
> >   TIME_WAIT este o stare a peer-ului care initiaza inchiderea
> >conexiunii, dupa ce a trimis ultimul ACK.  CLOSE_WAIT este o stare
> >a peer-ului care primeste cererea de inchidere, intre momentul in
> >care a trimis ACK si momentul in care trimite FIN.  Pentru mai multe
> >detalii vezi Richard Stevens, "TCP/IP Illustrated", vol. 1., cap. 18.
> >
> Mersi, si eu banuiam acelasi lucru, dar nu gasisem nimic
> revelator. Acum alta kestie related: din cate stiu, atat in TIME_WAIT
> cat si in CLOSE_WAIT practic se asteapta diverse eventuale garbage-uri
> pierdute pe drum, astfel incat sa nu se poata influenta negativ o
> noua conexiune initiata de la acelasi port sursa catre acelasi port
> destinatie (normal ca si aceleasi host-uri).

    In TIME_WAIT se asteapta pachete intarziate pe drum, dar nu ca sa
"nu se poata influenta negativ o noua conexiune", ci pur si simplu
pentru ca pachete de date trimise de peer inainte de ultimul FIN pot
sosi dupa el.  Masina care a initiat inchiderea trebuie sa astepte
aceste pachete pentru a le reordona si a le trimite aplicatiei care se
presupune ca le citeste.  O aplicatie care nu are motive sa faca asta
(de exemplu pentru ca nu are nimic de citit de la peer) poate pune
socket-ul in linger:

        man 2 setsockopt | less +/SO_LINGER

    Pe de alta parte, CLOSE_WAIT nu asteapta nimic de pe retea, ci
asteapta ca aplicatia respectiva sa cheme close(2).  In aceasta stare
masina respectiva poate trimite in continuare date, dar nu mai poate
primi, vezi:

        man 2 shutdown

> Exista insa vreo diferenta majora intre TIME_WAIT si CLOSE_WAIT, in
> afara ca una se intalneste la cel care taie conexiunea si cealalta
> apare la cel care se trezeste cu conexiunea taiata ?

    Da.  Iti recomand cartea lui Stevens pe care am amintit-o mai sus.

    Salutari,

    Liviu Daia

-- 
Dr. Liviu Daia                                  http://www.imar.ro/~daia

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui