tcp为什么要第三次握手,time_wait是做什么的? tcp有几种状态,画出所有的状态转换图。
晚上看到的面试题,TCP三次握手的印象很深,但为什么需要3次握手,还是想不起来了。
简单而言:如果不是三次握手的话,那么到底需要几次握手最佳呢?2次握手,或者4次以上的握手?
先看2次握手的情况:客户端给服务器发送建立连接的请求,服务器同意连接请求发回应给客户端,连接就此建立。
有问题的就是网络中经常会出现的包的延迟,如果客户端的某个包在路由器上延迟了,过了很久才发给服务器,服务器收到这个包后回应给客户端,服务器以为连接就此建立成功,分配资源,这样就会出现问题。
再看四次握手的情况:
①A发送SYN,
②B收到SYN后发送ACK+SYN
③A发送ACK
④B再发送ACK
实际上这样的过程可以一直循环下去,其实3次握手已经是能够使双方知道对方设备都是好用的最少次数。四次握手会浪费资源。
综上所述,TCP 3次握手最好。
下面是第二个问题:time_wait是做什么的?