gpt4 book ai didi

linux - 当 FIN 被接收且套接字发送缓冲区中仍有数据时,系统会做什么?

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:37 25 4
gpt4 key购买 nike

目前我遇到了一个奇怪的问题。

所以我想知道会发生什么。

假设有一个TCP连接,并且socket发送缓冲区有10字节数据,那么一个FIN是recv,哪个数据包会被回复?

A.带有 10 字节数据的 ACK

B.一个没有任何字节的 ACK 和另一个有 10 个字节的 ACK

C.上述任一

最佳答案

FIN仅意味着对方不再发送数据。这并不意味着它不会接受更多数据,因此本地系统不会关闭连接。这意味着 FIN 的 ACK 将反射(reflect)连接的当前状态:如果可以发送数据(取决于窗口),本地系统通常会 (*) 发送包含数据和 FIN 的 ACK 的数据包。如果数据不能立即发送,它只会ACK FIN,也许稍后再发送数据。

(*) 请注意,理论上它可以分两个数据包进行发送,但 TCP 堆栈通常会在可能的情况下将数据和 ACK 结合起来,以便发送更少的数据包。

关于linux - 当 FIN 被接收且套接字发送缓冲区中仍有数据时,系统会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com