面试鸭 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拥塞控制的一部分,在连接建立初期,发送方会逐步增加拥塞窗口的大小,以探测网络的最大传输能力,防止一下子发送大量数据导致网络拥塞。