【问题标题】:tcp application exit will send FIN always?tcp 应用程序出口总是会发送 FIN?
【发布时间】:2010-03-09 14:28:37
【问题描述】:

当一个 TCP 应用程序退出时,它会发送一个 FIN 数据包。

考虑一个连接到始终监听服务器(服务器永远不会退出)的 tcp 客户端。

如果tcp客户端在几次交换数据包后突然退出,它会一直向服务器发送一个FIN数据包吗?

谢谢!

【问题讨论】:

  • 这取决于操作系统。 Unix 及其衍生产品的行为与您描述的一样。 WIndows 不会:当在 Windows 上运行的应用程序在没有关闭 TCP 套接字的情况下退出时,TCP 连接将被重置,不会通过 FIN 正常终止。

标签: tcp network-programming client-server network-protocols


【解决方案1】:

在正常操作下,会发送一个FIN,是的。

下面是一些不发送 FIN 的情况。

  • 有人拔出客户端的网线。
  • 客户端遭到攻击
  • FIN 数据包在途中被丢弃。
  • 内核上的操作系统严重崩溃。

【讨论】:

  • 我认为发送 FIN 需要近距离通话,对吗?即使客户端不调用close call,也会发送吗?
  • 是的,即使应用程序没有关闭连接,操作系统也会在应用程序退出时/之后为您执行此操作,并且将发送 FIN,(或 RST,取决于连接状态,例如,如果有未处理的传入数据)
猜你喜欢
  • 2013-08-09
  • 1970-01-01
  • 2012-12-26
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 2019-06-09
相关资源
最近更新 更多