Why no data flow after TCP 3 way handshake?
I have an application that uses API to connect to server separated by a WAN. The problem is that it can establish a 3 way TCP handshake, but after that could not connect at the API level and after some time (20 seconds), the session disconnects. A tcpdump is taken at the client end who initiates the connection; at the same time a tcpdump is taken at the server end.
- At the client end, we can see client sending SYN, then receiving SYN-ACK from the server, and client sends ACK. Subsequent to this TCP session establishment, client then sends data (32 bytes) with PUSH, ACK. But there is no response from server. After 300 ms, client retransmit the data packet (same packet with 32 bytes) ie. retransmit. Again no response from server. After 600ms, client retransmit same data packet. No response from server. After 1.2 seconds, client retransmit; no response from server. This goes on for another few times, after about 11 seconds, client sends a RST to server; no response from server. Again client sends RST to server and no response. This repeats several time. Until finally at about 20 seconds, client receives RST from server.
- At the server end, we can see the SYN packet from client. Server response with SYN-ACK. Then server receives ACK from client so the TCP 3 way handshake is established. Subsequent to this server does not receive any more packets from client. After 20 seconds, server sends RST to client. What causes this behaviour?