关于TCP关闭连接的问题

网上是这么介绍的:第一阶段客户机发送完数据之后,向服务器发送一个FIN数据段,序列号为i;1.服务器收到FIN(i)后,返回确认段ACK,序列号为i+1,关闭服务器读通道... 网上是这么介绍的:
第一阶段 客户机发送完数据之后,向服务器发送一个FIN数据段,序列号为i;
1.服务器收到FIN(i)后,返回确认段ACK,序列号为i+1,关闭服务器读通道;
2.客户机收到ACK(i+1)后,关闭客户机写通道;
(此时,客户机仍能通过读通道读取服务器的数据,服务器仍能通过写通道写数据)
第二阶段 服务器发送完数据之后,向客户机发送一个FIN数据段,序列号为j;
3.客户机收到FIN(j)后,返回确认段ACK,序列号为j+1,关闭客户机读通道;
4.服务器收到ACK(j+1)后,关闭服务器写通道。

问题一:第2步后客户机写通道已关闭,怎么在第3步发送ACK?
问题二:如果第3步的ACK在传播过程中丢失了,而服务器与客户机之间的连接已被斩断,超时后服务器再重复发送FIN,客户机也收不到了。那服务器岂不是永远不能关闭写通道?
展开
 我来答
为啥啊不能重名
2015-06-30 · TA获得超过459个赞
知道小有建树答主
回答量:889
采纳率:0%
帮助的人:318万
展开全部
  1. 客户端发送完数据 发送一个Fin 告诉服务器发送完了,等待关闭

  2. 服务器收到 Fin后知道客户端已经发送完数据 应答ACK

  3. 服务器数据发送完毕要关闭链接 发送Fin

  4. 客户端收到Fin 知道服务器发送完毕 回复ACK  客户端关闭

  5. 服务器收到ACK 服务器关闭

    如果没有收到ACK命令或者其他数据  计时器超时会自动中断连接

追问
  1. 我这样理解是否正确:客户端收到服务器的ACK之后,没有关闭写通道,等收到服务器的FIN并发送ACK之后才关闭了写通道

  2. 在连接的任何时刻,假如计时器超时都会自动中断连接吗?比方说连接建立之后双方都没有发送数据也没有发送FIN,连接也会自动中断吗?

追答
对的
客户端就是在自己发送完结束命令 然后接受到服务器的结束命令 并且返回应答 才会关闭 读写通道应该是同时的 ,基础的TCP协议没有那么复杂,单独关闭读写的可能是一些特殊的应用
只要一定时间内没有发送数据包 或者要求保持连接 计数器超时就会直接关闭链接的
就好像你电脑突然断电了,服务器不会一直等待你的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式