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

原文链接: TCP三次握手能改成两次吗?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届找工作求助阵地##运维工程师##找工作中的意难平#
全部评论
面试中碰到此问题,重点答案1需回答清楚,答案二与三会让面试官觉着你的眼界开阔。没有被书本局限,也不用担心会被追问,你知道有这两个方向的优化即可
1 回复 分享
发布于 08-30 22:56 陕西
更多大厂的面试解析,参考原文链接 https://mp.weixin.qq.com/s?__biz=MzkxNjY5MTYwMQ==&mid=2247484136&idx=1&sn=73f34e1046ff350a64501a09b815a51a&chksm=c14d4d16f63ac400bdc5be72e93ef0630d7f931b19b49d75cbae38c6656683c369b20600da3a#rd
点赞 回复 分享
发布于 08-31 23:34 陕西
小红书
校招火热招聘中
官网直投
我的理解两次握手的TCP连接就是一个单工的通道了,三次的TCP是双工的
点赞 回复 分享
发布于 09-16 00:05 上海

相关推荐

14 64 评论
分享
牛客网
牛客企业服务