interview
interviewduck-java-backend
TCP 的三次握手和四次挥手

面试鸭 Java 后端面试题, TCP 的三次握手和四次挥手

面试鸭 Java 后端面试题, TCP 的三次握手和四次挥手

QA

Step 1

Q:: 什么是TCP的三次握手?

A:: TCP的三次握手是指建立TCP连接时所需的三个步骤。第一次握手:客户端发送SYN(同步)包到服务器,服务器收到后进入SYN_RCVD状态。第二次握手:服务器回复SYN-ACK(同步-确认)包,客户端收到后进入SYN_RECEIVED状态。第三次握手:客户端发送ACK(确认)包,服务器收到后进入ESTABLISHED状态,连接建立完成。

Step 1

Q:: 为什么要使用三次握手?

A:: 三次握手的目的是为了确保客户端和服务器双方都能互相确认对方的发送和接收能力,同时防止重复连接的产生,保证可靠的连接建立。

Step 1

Q:: TCP的四次挥手是怎样的?

A:: TCP的四次挥手是指断开TCP连接时的四个步骤。第一次挥手:客户端发送FIN(终止)包,服务器收到后进入CLOSE_WAIT状态。第二次挥手:服务器回复ACK(确认)包,客户端收到后进入FIN_WAIT_2状态。第三次挥手:服务器发送FIN包,客户端收到后进入TIME_WAIT状态。第四次挥手:客户端发送ACK包,服务器收到后进入CLOSED状态,连接断开完成。

Step 1

Q:: 为什么需要四次挥手?

A:: 四次挥手是为了确保双方都能完全关闭连接,防止数据丢失。每次挥手都需要双方确认,以保证所有的数据都已经成功传输并被接收。

Step 2

Q:: TCP和UDP的区别是什么?

A:: TCP(传输控制协议)是面向连接的协议,提供可靠的数据传输、数据包顺序传递和错误检测。UDP(用户数据报协议)是无连接的协议,不保证数据包顺序传递,也不提供错误检测,因此传输速度较快但不可靠。

Step 2

Q:: 在什么情况下使用TCP而不是UDP?

A:: 当需要确保数据的完整性和顺序性时,例如文件传输、电子邮件、远程登录等场景,通常使用TCP。而对实时性要求较高但对数据丢失不敏感的场景,如视频直播、在线游戏等,通常使用UDP。

Step 3

Q:: 什么是TCP的拥塞控制?

A:: TCP的拥塞控制是指在网络拥塞时,通过调整数据发送速率来避免拥塞恶化的机制。主要包括慢启动、拥塞避免、快速重传和快速恢复四个阶段。

Step 3

Q:: 什么是慢启动?

A:: 慢启动是TCP拥塞控制的一部分,在连接建立初期,发送方会逐步增加拥塞窗口的大小,以探测网络的最大传输能力,防止一下子发送大量数据导致网络拥塞。

用途

面试这些内容的原因在于TCP协议是计算机网络通信的基础,了解其工作原理和机制对于确保网络通信的可靠性和稳定性至关重要。在实际生产环境中,TCP协议广泛应用于各种需要可靠数据传输的场景,如Web服务、数据库连接、文件传输等。\n

相关问题

🦆
什么是SYN洪泛攻击?

SYN洪泛攻击是指攻击者向目标服务器发送大量的SYN包,但不回复SYN-ACK包,导致服务器资源耗尽,无法处理正常的连接请求。这是一种常见的拒绝服务攻击。

🦆
如何防范SYN洪泛攻击?

可以通过使用SYN Cookies、增加SYN队列的大小、启用防火墙规则以及限制每秒新建连接数等方法来防范SYN洪泛攻击。

🦆
什么是TIME_WAIT状态?

TIME_WAIT状态是指在TCP连接关闭后,主动关闭连接的一方在发送最后一个ACK包后,需要等待一段时间(通常是2倍的MSL,最大报文段生存时间)以确保被动关闭连接的一方已收到确认。

🦆
为什么需要TIME_WAIT状态?

TIME_WAIT状态的存在是为了确保连接完全关闭,防止旧的重复数据包影响新连接,同时保证被动关闭方能正确接收最后的ACK包。

🦆
什么是窗口大小和滑动窗口机制?

窗口大小是指TCP接收方愿意接收的数据量,滑动窗口机制是指在TCP传输中,发送方根据接收方窗口大小控制数据发送速率,实现流量控制和可靠传输。

🦆
滑动窗口机制如何工作?

发送方可以在不等待接收方确认的情况下,发送窗口大小范围内的数据包,一旦接收方确认接收到数据后,窗口滑动,允许发送方继续发送新的数据包。