当前位置: 首页 > 面试经验 >

TCP三次握手能改成两次吗?

优质
小牛编辑
67浏览
2024-08-30

TCP三次握手能改成两次吗?

如果碰上这个面试题,可以通过以下三个答案来回答,别说改成两次了,0次都可以哦。

答案1:TCP三次握手能从三次变成两次吗?

这个问题,我们在之前的内容中讨论中,面试碰到此问题,我们回答不可以。这或许是大部分同学的答案,原因有三个点:

  • 避免一接收到SYN包,服务端就分配资源,建立连接而造成资源浪费
  • 防止旧的重复连接初始化造成混乱
  • 同步双方的初始序列号

详细解析参见:

字节面试真题--TCP建立连接为什么要三次握手?为什么不是两次或者四次?

今天小编给你们一个不一样回答,拒绝千篇一律

答案2:TCP握手两次也是可以的?

如上图,在客户端发送SYN包之后,服务端发送SYN+ACK后进入SYN_RECV状态之后,客户端实际上在RFC 793中规定了在最后一个ACK是可以携带数据的,或者说可以在传输数据的保重携带控制信息。

最后一次握手的ACK数据包,是可以同数据一同发送给服务端,服务端在SYN_RECV状态时,只要接收到带有ACK标记的数据,就会进入ESTABLISHED状态。

详细信息可以参见:TCP三次握手最后一个ACK数据包丢失会发生什么?

因为在第三次握手包中,就已经发送了数据了,相当于最后一个单纯的ACK握手包就不再需要了。也就相当于只有两次握手。

答案3:TCP握手优化之TFO,SYN包直接带数据,就跟0次一样

TCP三次握手之TCP FastOpen

总结

TCP的三次握手是否可以改成两次,在面试过程中,按照答案1回答也算是标准答案,但是每个同学都这样回答,是不是就没有特点了,那可以尝试一下按照答案2,答案3,再补充回答,或许能给面试官留下不一样的印象。

#25届找工作求助阵地##运维工程师##找工作中的意难平#
 类似资料: