Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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
Sockets Nagle算法和';停下来等待';?_Sockets_Tcp_Ip_Protocols_Tcp Ip - Fatal编程技术网

Sockets Nagle算法和';停下来等待';?

Sockets Nagle算法和';停下来等待';?,sockets,tcp,ip,protocols,tcp-ip,Sockets,Tcp,Ip,Protocols,Tcp Ip,我看到了socket选项TCP\u NODELAY,用于打开或关闭Nagle alorithm 我检查了Nagle算法是什么,它似乎类似于“停止并等待” 有人能告诉我这两个概念之间的明显区别吗?用于控制套接字提供程序是否立即发送传出数据,以降低网络传输的效率(关闭),或者是否缓冲传出数据,以提高网络传输的效率(开) 是一种用于确保传输数据完整性的机制,通过使发送方发送一帧数据,然后在发送另一帧之前等待接收方的确认,从而确保帧的接收顺序与发送顺序相同 这两个功能相互独立运行。在停止和等待协议中,一

我看到了socket选项
TCP\u NODELAY
,用于打开或关闭Nagle alorithm

我检查了Nagle算法是什么,它似乎类似于“停止并等待”

有人能告诉我这两个概念之间的明显区别吗?

用于控制套接字提供程序是否立即发送传出数据,以降低网络传输的效率(关闭),或者是否缓冲传出数据,以提高网络传输的效率(开)

是一种用于确保传输数据完整性的机制,通过使发送方发送一帧数据,然后在发送另一帧之前等待接收方的确认,从而确保帧的接收顺序与发送顺序相同


这两个功能相互独立运行。

在停止和等待协议中,一个

  • 向对等方发送消息
  • 等待该消息的确认
  • 发送下一条消息
(即,在确认前一条消息之前,无法发送新消息)

TCP中使用的Nagle算法与这个概念是正交的。当TCP应用程序发送一些数据时,协议缓冲数据并等待一段时间,以查看是否有更多数据要发送,而不是立即将数据发送给对等方

如果应用程序在这个小时间段内有更多数据要发送,那么协议栈会将这些数据合并到当前缓冲区中,并可以将其作为一条大消息发送

这一概念也可以很好地应用于stop-and-go协议。(请注意,TCP不是停止和等待协议)