Winsock – Retransmission Seq incremented

  delphi, retransmit-timeout, windows, winsock2

I get the following when communicating with a custom client

  1. Connect to client (Syn – Syn/Ack – Ack)
  2. Sending data > MTU with WSASend (4092 Bytes on a 4088 Bytes MTU)
  3. Packet gets fragmented into 2 packets
  4. A Retransmission happens (because the client answered too slow?)

And when the retransmission happens it is not packet 1 or two, but packet 1 with an offset of 60 which is the payload of packet 2. The sequence number of packet 1 is incremented by 60 too. Even the data is correct, it’s correctly incremented by 60.
When I send 6000 Bytes i get the same behaviour with an incremented seq of 1968 which is correct too.
What is happening here?
Can i detect this with winsock2? Can i set the RTO with winsock? Why is the sequence number incremented and not packet 1, as it is, retransmitted?

Source: Windows Questions