interview
computer-networks
说说 TCP 的三次握手

计算机网络面试题, 说说 TCP 的三次握手?

计算机网络面试题, 说说 TCP 的三次握手?

QA

Step 1

Q:: 说说 TCP 的三次握手?

A:: TCP 的三次握手是指建立一个 TCP 连接时客户端与服务器之间的通信过程。首先,客户端发送一个 SYN (Synchronize) 报文给服务器,请求建立连接;服务器收到后返回一个 SYN-ACK 报文,表示同意连接请求并要求客户端确认;最后,客户端收到 SYN-ACK 报文后再发送一个 ACK (Acknowledge) 报文确认,连接建立成功。三次握手的主要目的是为了确认双方的发送和接收能力,防止由于网络延迟而引发的错误连接。

Step 2

Q:: 为什么 TCP 需要三次握手,而不是两次握手或四次握手?

A:: TCP 需要三次握手而不是两次握手,是为了确保双方的通信双方都具备发送和接收数据的能力。第一次握手(SYN)用来确认客户端的发送能力和服务器的接收能力;第二次握手(SYN-ACK)确认了服务器的发送能力和客户端的接收能力;第三次握手(ACK)确认了客户端的接收能力。三次握手正好可以达到这个目的,而四次握手则显得多余。

Step 3

Q:: TCP 的三次握手如何防止重复连接?

A:: TCP 的三次握手通过序列号和确认机制来防止重复连接。每次握手时,双方都会生成一个新的序列号,如果网络延迟或其他原因导致上一次连接请求的报文再次到达,序列号不匹配便可识别出这是一个旧连接的请求,从而避免重复连接的发生。

Step 4

Q:: TCP 三次握手过程中的超时重传机制是怎样的?

A:: 在 TCP 三次握手过程中,如果客户端或服务器在发送 SYN 或 SYN-ACK 后没有收到对方的回应(例如因网络问题报文丢失),则会触发超时重传机制。重传机制会在一定时间内多次重发未确认的报文,直到收到确认或超出重传次数,此时连接建立失败,双方需要重新开始三次握手过程。

用途

面试 TCP 的三次握手是为了考察候选人对计算机网络基础知识的掌握程度。TCP 作为一种可靠的传输协议,其三次握手机制是确保数据传输可靠性的核心内容。在实际生产环境中,TCP 三次握手广泛应用于各种网络通信场景,例如 Web 浏览、文件传输、数据库连接等场景都依赖于 TCP 的可靠传输能力。因此,理解三次握手有助于开发者调试网络应用、排查网络问题以及优化网络通信性能。\n

相关问题

🦆
说说 TCP 的四次挥手?

TCP 的四次挥手是指在结束一个 TCP 连接时,客户端与服务器之间的通信过程。客户端首先发送一个 FIN 报文,表示准备关闭连接;服务器收到后发送 ACK 确认报文,表示同意关闭,但此时连接仍然是半关闭状态;随后服务器也会发送一个 FIN 报文,客户端收到后返回 ACK 报文,连接完全关闭。四次挥手的目的是确保双方都已经完成数据传输,安全地关闭连接。

🦆
TCP 和 UDP 的区别是什么?

TCP 和 UDP 是两种不同的传输层协议。TCP 是面向连接的,提供可靠的数据传输,通过三次握手建立连接,并有重传机制和流量控制。UDP 是无连接的,不提供可靠性保障,数据包可能丢失、重复或失序,但其传输效率高,适合实时应用。UDP 常用于视频流、在线游戏等需要快速传输的场景,而 TCP 则用于需要高可靠性的场景,如文件传输、Web 请求等。

🦆
如何处理 TCP 中的粘包和拆包问题?

TCP 中的粘包和拆包问题是由于 TCP 作为流协议,不保证数据包的边界。粘包是指多个数据包粘在一起被接收,拆包是指一个数据包被分成多个部分接收。常见的处理方法包括:1) 在数据包前添加长度字段,接收方根据长度正确解析数据;2) 使用特定的分隔符来区分数据包;3) 应用层协议设计上进行逻辑分包处理。

🦆
TCP 如何实现拥塞控制?

TCP 通过拥塞避免、慢启动、拥塞避免、快速重传和快速恢复四个阶段来实现拥塞控制。1) 拥塞避免:避免网络出现拥塞。2) 慢启动:在连接建立后,逐步增加拥塞窗口的大小,探测网络的可用带宽。3) 拥塞避免:当网络未出现拥塞时,缓慢增加窗口大小。4) 快速重传和快速恢复:当检测到网络拥塞(丢包)时,立即重传丢失的数据包,并减小拥塞窗口,以避免加重拥塞。