三次握手
三次握手的目的,是为了防止A端已经失效的连接请求突然又传到B端,被误认为是A端再次发出的一个新的连接请求,如果B端这时又再次向A发出确认报文,表示同意建立连接,就会产生错误。
第一次是A端向B端发送请求,如果是只有一次握手的话,A端不知道B端是不是收到了这个请求。
第二次是B端确认收到A端请求,如果只有两次的话,B端不确定A端是否收到了确认消息,这个确认消息有可能会在半路丢了。
第三次是A端确认收到了B的确认消息,A和B双方都是通的,然后AB就可以建立连接相互通信了。

四次挥手
四次挥手的本质原因是tcp是全双公的,通信是双向的, A到B是一个通道,B到A又是另一个通道。
A端确认没有数据发送后,发出结束报文,此时B端返回确认后,B端也不会接收A端数据。
但是此时B端可能还有数据没有传输完,A端还是可以接收数据。
只有当B端数据发送完之后,才能发出结束报文,并且确认A端接收到的时候,两边才会真正的断开连接,双方的读写分开。

四次挥手释放连接时,等待2MSL的意义?
第 一,为了保证A发送的最有一个ACK