codeegginterviewgroup / CodeEggDailyInterview

码个蛋每日面试题
396 stars 54 forks source link

为什么 TCP 连接需要三次握手,两次不可以么? #140

Open kukyxs opened 5 years ago

kami-zeros commented 5 years ago

“三次握手” 的目的是为了防止已失效的链接请求报文突然又传送到了服务端,因而产生错误。

假设不采用“三次握手”,那么只要 B 发出确认,新的连接就建立了。由于现在 A 并没有发出建立连接的请求,因此不会理睬 B 的确认,也不会向 B 发送数据。但 B 却以为新的运输连接已经建立,并一直等待 A 发来数据。这样,B 的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。