计算机网络-----TCP四次挥手相关面试题扩展

1. TCP四次挥手

直接上图 TCP四次挥手

在这里插入图片描述

专业名称解释

解释
TCP传输控制协议(TCP,Transmission Control Protocol)
SYN同步序列编号
SYN_SENTClient请求连接
ESTABLISHED含义TCP:连接成功
ACK(Acknowledge character)即是确认字符,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;
SYN_RCVDSYN_RCVD是TCP三次握手的中间状态,是服务端口(监听端口,如应用服务器的80端口)收到SYN包并发送[SYN,ACK]包后所处的状态
RSTTCP首部中的6个标志比特之一,表示重置连接、复位连接。复位RST,当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;
ISN初始序列号(Initial Sequence Number)
FIN来释放连接。当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放;
FIN_WAIT_1FIN_WAIT_1状态是在baiserver端主动要求关闭tcp连接,并且主du动发zhi送fin以后,等待client端回复daoack时候的状态。zhuan
LAST_ACKLAST_ACK是TCP建立链接过程中的等待原来的发向远程TCP的连接中断请求的确认状态;

第一次挥手

  • 客户端Client将FIN置为1,发送一个序列号seq给服务端Server。进入FIN_WAIT_1状态。

第二次挥手

  • 服务端收到FIN之后,发送一个ACK-1,acknowledge number=收到的序列号+1;进入CLOSE_WAIT状态。此时客户端已经没有要发送的数据了,但仍可以接受服务器发来的数据。

第三次挥手

  • 服务端Server将FIN置为1,发送一个序列号给Client;进入LAST_ACK状态;

第四次挥手

  • Client收到服务器的FIN后,进入TIME_WAIT状态;接着将ACK置1,发送一个acknowledge number=序列号+1给服务器;服务器收到后,确认acknowledge number后,变为CLOSED状态,不再向客户端发送数据。客户端等待2*MSL(报文段最长寿命)时间后,也进入CLOSED状态。完成四次挥手。

2. 为什么不能把服务器发送的ACK和FIN合并起来,变成三次挥手?

  • 因为服务器收到客户端断开连接的请求时,可能还有一些数据没有发完,这时先回复ACK,表示接收到了断开连接的请求。等到数据发完之后再发FIN,断开服务器到客户端的数据传送。

3. 如果第二次挥手时服务器的ACK没有送达客户端,会怎样?

  • 客户端没有收到ACK确认,客户端会重新发送FIN请求。

4. 客户端TIME_WAIT状态的意义是什么?

  • 第四次挥手时,客户端发送给服务器的ACK有可能丢失,TIME_WAIT状态就是用来重发可能丢失的ACK报文。如果Server服务端没有收到ACK,就会重发FIN,如果Client在2*MSL的时间内收到了FIN,就会重新发送ACK并再次等待2MSL,防止Server没有收到ACK而不断重发FIN。

  • MSL(Maximum Segment Lifetime),指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值