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

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

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

QA

Step 1

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

A:: TCP 的三次握手是为了确保客户端和服务器之间的连接是可靠的。第一次握手,客户端发送一个带有 SYN 标志的报文给服务器,表示客户端请求建立连接。第二次握手,服务器收到这个报文后,发送一个带有 SYN 和 ACK 标志的报文给客户端,表示同意建立连接并确认客户端的请求。第三次握手,客户端收到服务器的确认报文后,再次发送一个带有 ACK 标志的报文给服务器,表示客户端确认连接建立。这样,三次握手完成,客户端和服务器之间的连接正式建立。

Step 2

Q:: TCP 三次握手失败的原因有哪些?

A:: TCP 三次握手失败的常见原因包括:网络延迟过大,导致报文超时;防火墙或安全组的配置阻止了某些 TCP 报文的传输;服务器或客户端资源耗尽,无法及时响应握手请求;中间路由设备故障或配置错误导致报文丢失。

Step 3

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

A:: 两次握手无法保证连接的可靠性。如果只进行两次握手,可能会出现一种情况:客户端发送请求但在响应到达前超时重发,而服务器会误以为这是一个新的连接请求,导致重复连接。三次握手可以确保双方都清楚对方的状态,从而避免这种情况。

用途

TCP 的三次握手是网络通信的基础,确保数据传输的可靠性和顺序性。在实际生产环境中,三次握手涉及到网络服务的建立和维护,尤其在高并发环境下,如 Web 服务器、数据库服务器的连接管理中,三次握手的理解和应用至关重要。排查网络连接问题、优化服务性能时,也会涉及到三次握手的细节理解。\n

相关问题

🦆
什么是 TCP 的四次挥手?

TCP 的四次挥手是连接终止的过程,双方通过四个步骤来确保连接的安全关闭。客户端发送 FIN 报文表示不再发送数据,服务器接收到后发送 ACK 报文确认,同时进入半关闭状态,待所有数据发送完毕后,服务器发送 FIN 报文请求关闭连接,客户端确认后连接关闭。

🦆
TCP 和 UDP 的区别是什么?

TCP 是面向连接的传输协议,提供可靠的数据传输和流量控制。UDP 是无连接的传输协议,不保证数据的可靠传输,通常用于实时要求较高但容错性强的应用,如视频流、在线游戏。

🦆
什么是 SYN Flood 攻击?

SYN Flood 是一种拒绝服务(DoS)攻击,攻击者发送大量伪造的 SYN 请求,使服务器忙于处理这些请求,耗尽资源,无法响应正常的连接请求。

🦆
如何防御 SYN Flood 攻击?

防御 SYN Flood 攻击的方法包括:配置 SYN Cookies,在握手完成前不分配资源;限制半连接队列大小;启用防火墙或入侵检测系统,识别和过滤恶意流量。

🦆
为什么 TCP 是可靠的?

TCP 的可靠性源于其提供的确认机制、序列号、重传机制、流量控制和拥塞控制等功能,确保数据包按序到达且不丢失。