My company is developing its own TCP stack for low-latency purposes and one of the tests involves running 128 instances of ncat on Linux 4.11 to listen to ports 55000 through 55127 and sending data in 128 threads on another computer through our own TCP stack to each of the 128 ncat servers.
There is, apparently, a part of the TCP protocol that we didn't implement. As shown in the pcap below, the ncat server immediately sends over a "TCP window update"; this segment has "1" for both its relative sequence and ack numbers.
Our software doesn't seem to handle this condition correctly, because it goes on to send ever more data and eventually chokes, thinking that it hit the congestion window limit having sent all these "un-acked" segments.
What are these strange and wonderful (seq=1 ack=1) packets?? Where in the RFC are they mentioned, and what's the correct behaviour in this case??