关于java:面试突击68为什么-TCP-需要-3-次握手

8次阅读

共计 663 个字符,预计需要花费 2 分钟才能阅读完成。

TCP 三次握手是一道经典的面试题,它是指 TCP 在传递数据之前,须要进行 3 次交互能力正式建设起连贯,并进行数据传递。
TCP 之所以须要 3 次握手是因为 TCP 单方都是全双工的 。所谓全双工指的是,TCP 任何一端既是发送数据方,又是接收数据方,因而这就要求 TCP 通信单方既要保障本人的发送能力,又要保障本人的接管能力才行。
这就如同打电话时,通信单方都要保障本人能话筒(传递声音)和耳机(接管声音)都是失常的才行,这样能力进行无效的交换,通常打电话时,都是这样结尾的:

  1. 我:喂,能听到我谈话吗?
  2. 对方:能听到你谈话,你能听到我谈话吗?
  3. 我:能听到你谈话,那咱们就来聊闲事吧。

TCP 三次握手也是雷同的情理,3 次握手证实的能力详情如下:

TCP 三次握手流程

TCP 三次握手流程如下:

  1. 客户端发送 SYN 给服务器端,示意心愿建设连贯;
  2. 服务器端接管到音讯之后,回应一个 SYN 和 ACK(确认应答)给客户端;
  3. 客户端收到服务器端的 SYN 报文之后,回应一个 ACK 报文。

具体执行流程如下图所示:

总结

TCP 之所以须要 3 次握手,是因为 TCP 通信单方都是全双工的,所以要通过 3 次交互能力确认单方的发送能力和接管能力,并且 TCP 握手必须是 3 次,如果是 2 次握手,不能证实服务器端的发送能力和客户端的接管能力;也不能是 4 次握手,因为 3 次曾经能证实的事件,再交互握手 1 次齐全没有必要。

参考 & 鸣谢

《码出高效:Java 开发手册》

《Offer 来了》

是非审之于己,毁誉听之于人,得失安之于数。

公众号:Java 面试真题解析

面试合集:https://gitee.com/mydb/interview

正文完
 0