TCP的三次握手是一道经典的面试题。意思是TCP在传输数据之前,需要3次交互才能正式建立连接并传输数据。TCP需要3次握手的原因是因为TCP双方都是全双工的。所谓全双工就是TCP的任何一端既是数据的发送方又是接收方,所以这就需要TCP通信双方保证自己的发送能力和自己的接收能力。就像打电话一样,双方必须确保自己的麦克风(发射声音)和耳机(接收声音)正常,才能进行有效的沟通。通常,打电话时,它是这样开始的:我:嘿,你能听到我吗?对方:我能听到你,你能听到我吗?我:我能听到你在说话,那我们谈谈正事吧。TCP的三次握手也是如此。证明三次握手能力的细节如下:TCP三次握手过程TCP三次握手过程如下:客户端向服务器发送一个SYN,表示要建立连接;服务端收到消息后,向客户端回复一个SYN和ACK(确认响应);客户端收到服务器的SYN报文后,响应ACK报文。具体执行过程如下图所示:总结TCP之所以需要3次握手,是因为TCP通信双方都是全双工的,所以需要3次交互来确认双方的收发能力,TCP握手必须是3次,如果是2次握手,无法证明服务器的发送能力和客户端的接收能力;不能是4次握手,因为已经证明了3次的情况,完全没有必要再握一次手。
