TCP协议详解:
TCP协议的三次握手和四次挥手:
相关面试题:
为什么不进行两次握手:
如果只有两次握手:客户端向服务端发送一个请求报文,但是在网络三种滞留一段时间,很长时间才会到达服务端,在客户端看来这是一个失效报文。一段时间以后服务端接收到这个请求报文,并发送一个确认报文,,但是在这个时候,客户端不会理睬这个确认报文,然后服务端还在一直等待客户端发送数据,这样就会造成服务端的浪费。
如果只有两次握手:客户端发送请求报文,服务端发出确认后,就向客户端发送消息,客户端可能接收不到。
为什么不进行四次握手:
在进行三次握手之后,双发就已经确认对方能过接收到自己的信息了,第四次就已经没有必要了。
TIME-WAIT存在的原因: --> 实现TCP全双工连接的可靠释放
客户端发送在收到FIN时,就会发送ACK确认,然后就会进入TIME-WAIT。
客户端发送的ACK可能会丢失,由于TCP协议的重传机制,服务器会重传FIN,知道在2*MSL(最长报文的寿命) 的周期里面没有再收到FIN。
就是要确保及时ACK的确认包丢失,也还能收到服务器重传的FIN。