软件测试经典面试题
♠ \color{red}{\spadesuit} ♠
Q1、为什么要三次握手?/为什么不能用两次握手进行连接?
对三次握手不明白的可以看下三次握手和四次挥手
答:三次握手完成两个功能:一是连接服务器指定的端口,建立TCP连接,保证通信双方的数据发送和接受正常;二是同步连接双方的序列号和确认号并交换TCP窗口大小信息,这个序列号在握手过程中被发送和确认。
三次握手是为了防止已失效的连接请求报文突然又传送到服务端,而发生错误。
三次握手若改为两次握手,很容易发生死锁。我们假设这样一种情况,考虑计算机S和C之间的通信,假定C给S发送一个分组请求,S收到后发送确认应答分组。按照两次握手协议,S认为连接已经成功建立,可以开始发送数据分组,可是,S的应答分组在传输给C的过程中出现丢失,C不知道S是否已经准备好,不知道S建立了什么样的序列号,C甚至会怀疑S是否已经收到了自己的请求,在这种情况下,C认为连接还未成功,将忽略S发来的任何数据分组,只等待连接确认应答分组。而S在发出的分组超时后,重新发出同样的分组,便形