Re: client socket TIME_WAIT state after PQfinish
От | Nicolas Barbier |
---|---|
Тема | Re: client socket TIME_WAIT state after PQfinish |
Дата | |
Msg-id | AANLkTimk-BPwJNapy2F0+uAbRVCeySqG+8CwZSBMSc3W@mail.gmail.com обсуждение исходный текст |
Ответ на | client socket TIME_WAIT state after PQfinish (Guillaume Du Pasquier <guillaume.dupasquier@sensometrix.ch>) |
Ответы |
Re: client socket TIME_WAIT state after PQfinish
Re: client socket TIME_WAIT state after PQfinish |
Список | pgsql-hackers |
2010/9/27 Guillaume Du Pasquier <guillaume.dupasquier@sensometrix.ch>: > In both cases, the client socket (pgadmin or my program) remains in > TIME_WAIT state. > > I have used wireshark to sniff the TCP protocol. > > We have at the end of a connection: > > Client Server > > ---> FIN,ACK ---> > <--- FIN,ACK <--- > ---> ACK ---> > > This ends up in a TIME_WAIT state. The TCP protocol should be According to the Two Generals' Problem [1], one of the sides necessarily doesn't know whether the other side has received its last packet. Therefore, TCP lets one of the sides sit in TIME_WAIT status for as long as any packets could in principle survive on the network (typically defined as 2 minutes on IP networks IIRC), and potentially disturb a new connection between the same (dst IP, dst port, src IP, src port) combination. [1] <URL:http://en.wikipedia.org/wiki/Two_Generals'_Problem> > Client Server > > ---> FIN,ACK ---> > <--- ACK <--- > <--- FIN,ACK <--- AFAIK, this last ACK (in above packet) is not needed: the server can ACK the client's FIN _while_ it sends its own FIN (by using an appropriate sequence number, as FIN "uses" one byte in the sequence). > ---> ACK ---> > > I suppose there is a bug in the postgresql server that do not send an ack to > the client. I don't think so. Nicolas
В списке pgsql-hackers по дате отправления: