lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [lwip-users] LWIP 1.2 issue.


From: Kieran Mansley
Subject: RE: [lwip-users] LWIP 1.2 issue.
Date: Tue, 17 Apr 2007 13:28:51 +0100

On Tue, 2007-04-17 at 13:25 +0200, Goldschmidt Simon wrote:
> > > Also I am getting the following Messages: (I have some debugging 
> > > turned on).
> > > 
> > > tpc_listen_input: ACK in LISTEN, sending reset.
> > > tcp_rst: seqno 5984823 ackno 3514939349.
> > 
> > This suggests that packets are being sent or delivered to the 
> > listening socket when there should obviously be none other 
> > than SYNs going there.
> > If you can get a packet capture of one of these that might 
> > through some light on it.  
> 
> Could it be that the same pcb was set to listening state through
> tcp_listen() and at
> the same time (the same pcb) was used to connect somewhere (using
> tcp_connect())?

I think it more likely that it is two separate PCBs, but they both have
the same local port.  This is quite common: when doing a passive open
(i.e. at the listening end of a TCP connection), the listening PCB
spawns a new "data transfer" PCB that has the same local address and
port.  This is OK because they will all have different remote
addresses/ports and so can be told apart.  When the data transfer PCB is
finished and closed however, only the listening PCB will be left on that
local port, and so it will receive any packets that were in fact
destined for the data PCB.  Things like the TIME_WAIT state are designed
to protect against this causing too many problems, but there can still
be occasions where a packet ends up getting through.  This is why the
listening PCB sends a RST to the other end when it receives the packet -
it knows that the connection it was for is long gone, and so a RST
should get the other end to notice.

Kieran





reply via email to

[Prev in Thread] Current Thread [Next in Thread]