Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
内核何时向另一端发送TCP缓冲数据?_Tcp - Fatal编程技术网

内核何时向另一端发送TCP缓冲数据?

内核何时向另一端发送TCP缓冲数据?,tcp,Tcp,我有一个关于TCP套接字发送缓冲区的问题。因为“write”的系统调用仅意味着发送缓冲区可用,“write”仅在所有数据都复制到缓冲区时返回,而不是假设数据已发送出去 所以我有一个问题,如果应用程序请求的结束部分没有填充发送缓冲区,内核什么时候会发送数据,因为我没有看到任何系统调用让用户进程控制何时发送所有缓冲区数据。行为很大程度上取决于套接字是否阻塞,以及(TCP\u NODELAYsocket选项)是否已启用。通常,数据会尽快发送(Nagle的算法被禁用),无论缓冲区是否已满。根据Richa

我有一个关于TCP套接字发送缓冲区的问题。因为“write”的系统调用仅意味着发送缓冲区可用,“write”仅在所有数据都复制到缓冲区时返回,而不是假设数据已发送出去


所以我有一个问题,如果应用程序请求的结束部分没有填充发送缓冲区,内核什么时候会发送数据,因为我没有看到任何系统调用让用户进程控制何时发送所有缓冲区数据。

行为很大程度上取决于套接字是否阻塞,以及(
TCP\u NODELAY
socket选项)是否已启用。通常,数据会尽快发送(Nagle的算法被禁用),无论缓冲区是否已满。根据Richard Steven对PUSH flag的解释,我认为这也与PUSH flag有关。@Someprogrammerdude我看不到与套接字阻塞选项的关系。但我认为Nagle部分是合乎逻辑的,并且可能与PSH标志相结合。