相信大家都有这样一个疑问,明明服务器(SERVER)和客户端(CLIENT)之间只要发送两次SYN,ACK就能建立连接并且协商完各自的参数(如窗口大小等),为什么还要有最后的ACK呢?
常见TCP建立连接如下图:
那么可以假设如下情况:
A首先向B发送一个连接请求,但是可能这个连接请求走了远路,等了很长时间,B都没有收到,那么A可能会再次发送,此时B收到并且回复SYN,ACK;在这个时候最先发送的那个连接请求到达B,那么B会回复一个SYN,ACK;但是A表示自己已经收到确认了,并不搭理这个回复,那么B可能陷入等待,如果这种情况多了,那么会导致B瘫痪,所以要发送第三个确认。