5
votes

I actually wanted to know, in a tcp handshake, why do client needs to ack back to complete the handshake. Post syn and syn-ack, both parties have sufficient information to start the data, still tcp asks for client's ack to move to established state.

The question, is why this three way handshake is necessary and sufficient condition to achieve reliability, even tough we have sequence number synchronized post second message itself.

Any insights?

1

1 Answers

4
votes

How does the server know that the client received the SYN-ACK? The server has no way to know this unless the client explicitly sends an ACK to acknowledge that it got the syn-ack.

If this third ACK is dropped, the server will resend a SYN-ACK, and when the client gets that duplicate SYN-ACK, it'll say "oh hey, my previous ACK must have been dropped, so I'll just resend the ACK". This will continue until the server gets the AKC.