Nagle算法和“停止并等待”之间有什么区别?

时间:2018-09-11 08:46:05

标签: sockets tcp ip protocols tcp-ip

我看到了套接字选项TCP_NODELAY,该选项用于打开或关闭Nagle算法。

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

有人可以给我这两个概念之间的明显区别吗?

2 个答案:

答案 0 :(得分:0)

Nagle Algorithm用于控制套接字提供程序是否以降低效率的网络传输(关闭)为代价立即按原样发送传出数据,还是控制它是否缓冲传出数据以便可以进行更有效的网络传输以速度为代价。

Stop and Wait是一种机制,用于确保发送数据的完整性,方法是使发送方发送一帧数据,然后等待接收方的确认,然后再发送另一帧,从而确保在接收到的帧中发送顺序相同。

这两个功能彼此独立运行。

答案 1 :(得分:0)

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

  • 向同伴发送一条消息
  • 等待该消息的确认
  • 发送下一条消息

(即,只有在确认前一条消息后,才能发送新消息)

TCP中使用的Nagle算法是该概念的原始方法。当TCP应用程序发送一些数据时,协议会缓冲数据并等待一会儿,以查看是否还有更多数据要发送,而不是立即将数据发送给对等方。

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

这个概念也很可能适用于停止和执行协议。 (请注意,TCP不是停止和等待协议)