The reasons are explained in the computer network (Shehiren translation):
1. Two handshake, then if the client to the server-initiated package A1 if the fault in the transmission link, resulting in the transfer to the server time is rather lag, in this time period because the client did not receive the server for the package A1 confirmation, then will retransmit a packet A2, Assume that the server received the A2 package normally, and then return to confirm the B2 package. Since there is no third handshake, the client and server have already established a connection. Assuming that the A1 package is then uploaded to the server in the link, the server will return the B1 package confirmation, but because the client has cleared the A1 package, the client discards the confirmation packet, but the server maintains the equivalent "zombie" connection.
So by shaking hands twice, it is possible to waste server's network resources.
Image explanation:
1, the client sends an ambiguous message to the waiter
2, the waiter received, read the news, very happy, immediately reply (at this time the customer does not know the service received)
3, the customer is particularly pleased to receive the waiter relationship confirmation of the message, (but the waiter did not know that the customer received, if not received a repeat, theoretically, until the =-=)
4, the waiter finally received a customer relationship confirmation message, suspended Heart finally put down
5, so the customer and the waiter really built a reliable channel, after all, both know that it is a good way ...
So it takes at least three times to confirm the relationship.
Without three times, the server cannot determine if the client has received his or her message
If not, the client may not have received it at all, or the client responded, but the server did not receive
If you've used a walkie-talkie, you'll understand:
C->s: Can you hear me?
S->c: Hear. Can you hear me?
C->s: Hear.