这个问题,我们在之前的内容中讨论中,面试碰到此问题,我们回答不可以
。这或许是大部分同学的答案,原因有三个点:
详细解析参见:
字节面试真题--TCP建立连接为什么要三次握手?为什么不是两次或者四次?
今天小编给你们一个不一样回答,拒绝千篇一律
如上图,在客户端发送SYN包之后,服务端发送SYN+ACK后进入SYN_RECV状态之后,客户端实际上在RFC 793中规定了在最后一个ACK是可以携带数据的,或者说可以在传输数据的保重携带控制信息。
最后一次握手的ACK数据包,是可以同数据一同发送给服务端,服务端在SYN_RECV状态时,只要接收到带有ACK标记的数据,就会进入ESTABLISHED状态。
详细信息可以参见:TCP三次握手最后一个ACK数据包丢失会发生什么?
因为在第三次握手包中,就已经发送了数据了,相当于最后一个单纯的ACK握手包就不再需要了。也就相当于只有两次握手。
TCP三次握手之TCP FastOpen
TCP的三次握手是否可以改成两次,在面试过程中,按照答案1回答也算是标准答案,但是每个同学都这样回答,是不是就没有特点了,那可以尝试一下按照答案2,答案3,再补充回答,或许能给面试官留下不一样的印象。
#25届找工作求助阵地##运维工程师##找工作中的意难平#