1.TCP/IP七层的作用是什么?
2.三次握手,四次挥手?
三次握手:
3.为什么三次握手却要有四次挥手?
因为握手连接的过程中在服务器第一次接收客户端发送的连接请求SYN包后,可以同时发送ACK确认包和SYN同步包,而挥手释放的过程中服务器在接收到客户端发送的FIN包后,很可能不会立即关闭socket,而是需要先发送ACK确认包告诉客户端我收到请求了,在服务器报文发送完毕后才能发送FIN结束包,断开连接,这样就多了一次发送。
4.挥手时客户端为什么要等待?
根据上面的两张TCP握手挥手图可以看出,TIME-WAIT是在客户端接收到服务器FIN结束包发送ACK确认包之后才有的等待时间,那么可以推出是为了防止客户端的ACK确认包丢掉而进行等待
转载自https://blog.youkuaiyun.com/sinat_35297665/article/details/80979181
1、为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。
2、他还可以防止已失效的报文段。客户端在发送最后一个ACK之后,再经过经过2MSL,就可以使本链接持续时间内所产生的所有报文段都从网络中消失。从保证在关闭连接后不会有还在网络中滞留的报文段去骚扰服务器。