三次握手:
四次挥手:
为什么不可以是两次握手?
当客户端向服务器端发送一个连接请求时,由于某种原因长时间驻留在网络节点中,无法到达服务器端,由于TCP的超时重传机制,当客户端在特定的时间内没有收到服务器端的的确认应答时,就会重新向服务器端发送连接请求,该请求到达服务器端并建立连接,进行数据传输,当数据传输完成时,释放了TCP连接。
若此时第一次的连接请求报文段延迟了一段时间后到达了服务器端,本来这是一个很早到达的失效的报文段,但是服务器端收到了该链接请求后误以为是客户端重新又发起了一次连接请求,于是服务器端发出确认应答报文段,并表示同意建立连接。如果没有第三次握手,由于服务器端发送了确认应答信息,则表示新的连接建立成功,但是客户端并没有向服务器端发送任何建立请求,客户端将忽略服务器端的确认报文,更不会发送任何请求或数据。而服务器端认为建立成功了,并一直在等待建立连接,直到超出计数器的设定值,则认为服务器端出现了异常,并关闭此链接。这个等待的过程中,浪费了服务器端的资源。
如果是三次握手将不会出现不该建立的连接。