networking - TCP中的FIN+ACK报文是什么?

标签 networking tcp

我正在为一个类(class)项目自己实现 TCP,有一个细节我似乎无法理解。什么是 FIN+ACK 消息?在我包含在此处的图表中,收到 FIN+ACK 将使主机从 FIN_WAIT_1 状态变为 TIME_WAIT 状态。然而,整个图中没有状态转换发送 FIN+ACK。那么,如果什么都没有发送,怎么可能收到 FIN+ACK 呢?

enter image description here

最佳答案

当应用程序调用 close 时,它会移动到 FIN_WAIT_1

FIN_WAIT_1 开始可能会发生多种情况:

  1. 应用程序收到 ACK:

    这意味着对端确认了最后发送的数据包。本地应用程序移动到 FIN_WAIT_2

  2. 应用程序收到 FIN:

    这表示对等方已调用close。本地应用程序应该承认这一点。因此 ACK 出去对等体。本地应用程序移至CLOSING

  3. 应用程序收到 FIN + ACK:

    FIN+ACK 正如您所说,它的意思是对等方调用了close 并且在同一 TCP 段中正在确认最后收到的数据。本地应用程序将确认 FIN,这会使状态变为 TIME_WAIT

关于networking - TCP中的FIN+ACK报文是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043126/

相关文章:

sockets - 在 go 中不阅读而窥视 Conn

Android Socket 高 CPU 使用率

python - 情节: Barplots embeded in scatterplot/network graph markers

c - 不同ip的服务器

c++ - 为什么我的套接字停止传输?

c - 我应该在 select() EBADF 上断言失败吗?

python - 简单socket服务器的基本理解

javascript - JavaScript中多向网络的路由或寻路算法

Java 应用程序 tcp 连接丢失检测在 Windows 7 中有所不同?

linux - Windows 和 Linux 之间的 Socket 性能