网络协议的3次握手

来源:互联网 发布:js特效模板 编辑:程序博客网 时间:2024/06/05 23:07


为什么需要3次握手?


1.TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机;


如果采用两次的话,会出现资源被占用的情况,比如是1号机要连到2号机,结果发送的连接信息因为一些原因没有到达2号机,然后1号机又发了一次,这次2号收到了1号发的请求,于是就发信息回来给1号机,两机就连接。传完东西后结束,结果在这个时候,原先没有到达的连接信息突然又传到了2号机,于是2号机发信息给1号机,然后2号机就以为和1号连上了,这个时候2号机就在等待1号传东西,然后这样其他机器就传不进来东西,这样资源一直被占用着,无法释放。


2. 三次握手改成仅需要两次握手,死锁是可能发生

考虑计算机1号和2号之间的通信,如果1号机给2号机发送一个连接请求,2号机收到了这个请求,并发送了确认回应这个请求。按照两次握手的协定,2号机认为连接已经成功地建立了,可以开始发送数据。可是,1号机在2号机的回应的数据在传输中被丢失的情况下,1号机将不知道2号机是否已准备好,不知道2号机建议什么样的序列号,1号机甚至怀疑2号是否收到自己的连接请求。在这种情况下,1号机认为连接还未建立成功,将忽略2号机发来的任何数据,只等待连接确认回应。而2号机在发出的数据超时后,重复发送同样的数据,这样就形成了死锁。

0 0
原创粉丝点击