Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 服务器发送重置信号而不是FIN_Linux_Sockets_Networking_Tcp - Fatal编程技术网

Linux 服务器发送重置信号而不是FIN

Linux 服务器发送重置信号而不是FIN,linux,sockets,networking,tcp,Linux,Sockets,Networking,Tcp,我正在学习tcp ip协议栈,服务器客户端连接。我编写了一个简单的客户机服务器。客户机和服务器能够无任何问题地相互传输数据。我在同一台机器上运行客户端和服务器。当我使用ctrl+c关闭服务器时,我发现内核发送的是RST信号而不是FIN信号。(请参阅我的问题:) 通过进一步的调查,我意识到我的一个客户机处于read调用中,而相应的服务器线程处于无限状态,而循环什么也不做(我这方面有一些错误的愚蠢编码)。但当我移除无限while循环时,我看到了预期的行为。我可以看到FIN被派往两个方向 所以,我想知

我正在学习tcp ip协议栈,服务器客户端连接。我编写了一个简单的客户机服务器。客户机和服务器能够无任何问题地相互传输数据。我在同一台机器上运行客户端和服务器。当我使用ctrl+c关闭服务器时,我发现内核发送的是RST信号而不是FIN信号。(请参阅我的问题:)

通过进一步的调查,我意识到我的一个客户机处于read调用中,而相应的服务器线程处于无限状态,而循环什么也不做(我这方面有一些错误的愚蠢编码)。但当我移除无限while循环时,我看到了预期的行为。我可以看到FIN被派往两个方向


所以,我想知道为什么tcp层在第一种情况下发送RST

最终,您放弃等待另一端接受数据。

如果您从链接的问题中看到我的tcpdump,那么就没有FIN数据包。那么,似乎服务器端套接字从未发送过,最终谁放弃了?那么,对方不接受数据的证据在哪里呢?最终,发送数据的一方放弃了优雅的接近。对方没有接受数据,因为它陷入了一个无休止的循环。此时,发送端将发送RST,而另一方的读取将返回错误。为什么在应用程序模式中被困在无止境循环中会影响内核的功能和功能?因为如果应用程序被困在无止境循环中,它将无法从TCP连接接收数据。在应用程序清空接收缓冲区之前,内核无法正常关闭TCP连接。在此之前,应用程序有权启动异常终止。如果另一方在应用程序启动正常终止之前超时,则另一方将启动异常终止。(您不再永远关闭。如果另一方的应用程序不读取,您将放弃。请参阅RFC1122,第4.2.2.13节。)