[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [lwip-users] Browser finishes every HTTP GET request with a ACK RST,
From: |
Indan Zupancic |
Subject: |
Re: [lwip-users] Browser finishes every HTTP GET request with a ACK RST, why ? |
Date: |
Fri, 24 Sep 2021 10:35:13 +0200 |
User-agent: |
Roundcube Webmail/1.3.16 |
Hello,
On 2021-09-15 15:37, Info wrote:
In the attached Wireshark capture file I can see many frames (from the
web browser) with the set ACK RST flags. For me it not clear why the
web browser sends this frames and if it is the reason for the broken
periodic communication ? Any help and maybe some explanation would be
very welcome.
I ran my own test for 8 hours, first few hours a HTTP request every 100
ms,
the others every 10 seconds. We're using our own webserver code without
any issues for a few years now.
In those 8 hours I get 8 resets, all in the first few hours during the
100ms test.
(This is with Windows 10 as host.)
All these resets happened when the port was re-used by the browser after
2 seconds
of a previous transaction. Our TIME WAIT is configured for 2 seconds
(TCP_MSL 1000).
What I see happening is that lwIP sends an ACK with the same sequence
number
as previously, instead of a SYN, ACK. The other side of course doesn't
like
that and sends a RST.
This does not fully explain everything in your Wireshark log, but maybe
it is related.
Looking at the code, this behaviour is intentional and done in
tcp_timewait_input().
Reading the RFCs this behaviour is by design and lwIP does nothing
wrong.
The reason why ports are re-used so quickly is probably because they're
chosen randomly.
If the host just resends a new SYN and does not return an error to the
browser this
behaviour is fine.
Greetings,
Indan