为什么是三次握手?
为了防止已经失效的连接请求报文段又突然传到服务端,因而产生错误。
A发送的一个连接请求在网络结点的时间滞留,以至于延误到连接释放的某个
时间才到达B。B收到这个请求的报文段后,误以为A又发出了一次新的请求连接,
于是向A发送确认报文段,同一建立连接。但是由于A并没有发出新的请求连接,
所以A不会理睬B的确认也不会向B发送数据。但B却认为连接已经建立,一直
等待A发来数据。B的资源就白白浪费了。
如果采用三次握手,B收到失效的报文段后向A发送确认,但是A并没有要求建立连接,就不会向B发送确认,这时候B也就知道请求没有建立。本质原因是信道是不可靠的。
为什么是四次挥手?
因为TCP的通信是全双工通信。 要实现可靠的连接关闭,A发送结束报文FIN,收到B的确认后。A知道自己没有 数据要发送,B知道A不再发送数据。但是B还可以发送数据,A还可以接收数据。 只有当B发送结束报文FIN,收到A的确认后,才算是真正的断开连接。