校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 专业课 > 三次握手、四次挥手
题目

TCP三次握手和四次挥手过程中,以下状态分别处于服务端和客户端描述正确的是

A.服务端:SYN-SEND,TIME-WAIT 客户端:SYN-RCVD,CLOSE-WAIT

B.服务端:SYN-SEND,CLOSE-WAIT 客户端:SYN-RCVD,TIME-WAIT

C.服务端:SYN-RCVD,CLOSE-WAIT 客户端:SYN-SEND,TIME-WAIT

D.服务端:SYN-RCVD,TIME-WAIT 客户端:SYN-SEND,CLOSE-WAIT

解答

正确答案是 C

四次握手:客户端调用 close() 函数后,向服务器发送 FIN 数据包,进入FIN_WAIT_1 状态。FIN 是 Finish 的缩写,表示完成任务需要断开连接。 服务器收到数据包后,检测到设置了 FIN 标志位,知道要断开连接,于是向客户端发送“确认包”,进入CLOSE_WAIT 状态。注意:服务器收到请求后并不是立即断开连接,而是先向客户端发送“确认包”,告诉它我知道了,我需要准备一下才能断开连接。 客户端收到“确认包”后进入FIN_WAIT_2 状态,等待服务器准备完毕后再次发送数据包。 等待片刻后,服务器准备完毕,可以断开连接,于是再主动向客户端发送 FIN 包,告诉它我准备好了,断开连接吧。然后进入LAST_ACK 状态。 客户端收到服务器的 FIN 包后,再向服务器发送 ACK 包,告诉它你断开连接吧。然后进入TIME_WAIT 状态。 服务器收到客户端的 ACK 包后,就断开连接,关闭套接字,进入CLOSED 状态。

C 0条回复 评论

帖子还没人回复快来抢沙发