今天给大家分享网络协议面试中最有可能会被问到的一个问题,大家可以收藏起来,以防以后面试中被问到。

最常见的面试问题:请详细描述一下“三次握手”:

TCP协议建立链接需要通过三次握手,让传输更加可靠。

来,接下来,通过一幅图来带大家直观的感受一下,三次握手的具体流程。

一、先来干货

测试面试 | 网络协议面试中命中率最高的三次握手_面试

我们用文字来描述一下这个过程:

第一次握手

客户端向服务器发出请求连接,这时报文首部中的同部位为SYN=1,同时随机生成初始序列号为 seq=x,这是第一次握手,表示客户端想和服务端建立连接。

第二次握手

服务端收到客户端请求后,同意接受连接,会向客户端返回确认报文。确认报文中应该 ACK=1,SYN=1,确认号是 ack=x+1,同时为自己随机初始化一个序列号 seq=y。在返回确认报文的同时,也会询问客户端是否准备好接受。这是第四次握手。

第三次握手

客户端收到服务端返回的确认后,还要向服务器给出确认,确认已经准备好接受。确认报文的 ACK=1,ack=y+1,此时,TCP 正式连接建立。这是第三次握手。

二、再来软文

什么,是不是有小伙们还是不太理解三次握手是什么意思,哈哈哈,贴心的我已经发现了,所以我再通过一个非常浪漫的案例给大家介绍一下,三次握手到底是什么意思。来,我们来看一下这幅图

 

测试面试 | 网络协议面试中命中率最高的三次握手_自动化测试_02

哈哈哈,是不是很浪漫,我用文字来描述一下,tcp的三次握手可以看成男生追求女生的三次握手。

第一次握手

校草向校花表白,表示非常喜欢她,想跟她交往。

 

测试面试 | 网络协议面试中命中率最高的三次握手_软件测试_03

第二次握手

校花收到校草的表白后,给校草返回了一个信息,表示自己已经收到他的表白了,其实自己也挺喜欢他的,也愿意接受和他交往。

 

测试面试 | 网络协议面试中命中率最高的三次握手_软件测试_04

第三次握手

校草收到校花的回信开心的飞起来了,知道校花接受了自己,也愿意跟自己交往。于是就再回信给校花,表示校花的回信,自己已经收到了,自己也准备好咱俩交往的规划了。

到此为止,三次握手结束,校草与校花正式开始交往。

 

测试面试 | 网络协议面试中命中率最高的三次握手_软件测试_05

这里面,我们可以把校草看成客户端,校花看成服务端。通过这个案例,小伙伴们是不是瞬间对三次握手有了更清楚的理解了。但是为什么TCP协议建立连接需要进行三次握手呢?

三、为什么需要建立三次握手?

其实建立三次握手的主要目的是确保建立可靠的连接。不会因为网络的一些问题导致这个传输过程失效。如果客户端没有正常回应,那么就可以直接结束连接过程了,以防止最终的连接失效。