В чем разница между алгоритмом Nagle и «остановись и жди»? - PullRequest
0 голосов
/ 11 сентября 2018

Я видел опцию сокета TCP_NODELAY, которая используется для включения или выключения алгоритма Nagle.

Я проверил, что такое алгоритм Nagle, и он похож на «Остановись и жди».

Может ли кто-нибудь дать мне четкую разницу между этими двумя понятиями?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

В протоколе остановки и ожидания один

  • отправляет одноранговое сообщение
  • ждет подтверждения для этого сообщения
  • отправляет следующее сообщение

(т.е. нельзя отправить новое сообщение, пока не будет подтверждено предыдущее)

Алгоритм Нейгла, используемый в TCP, является ортогональным для этой концепции.Когда приложение TCP отправляет некоторые данные, протокол буферизует данные и немного ждет, чтобы увидеть, есть ли еще данные для отправки, вместо того, чтобы немедленно отправлять данные одноранговому узлу.

Если приложение имеет больше данных для отправки в этот небольшой период времени, стек протоколов объединяет эти данные в текущий буфер и может отправлять их как одно большое сообщение.

Эта концепция вполне может бытьприменяется к протоколу остановки и запуска, а также.(Обратите внимание, что TCP не является протоколом остановки и ожидания)

0 голосов
/ 12 сентября 2018

Алгоритм Nagle используется для управления тем, отправляет ли провайдер сокетов исходящие данные немедленно как есть, за счет менее эффективных сетевых передач (выкл.), Или если он буферизует исходящие данные, чтобы он мог сделать больше эффективные сетевые передачи за счет скорости (вкл.)

Останов и ожидание - это механизм, используемый для обеспечения целостности передаваемых данных, заставляя отправителя отправлять кадр данных, а затем ждать подтверждения от получателя перед отправкой другого кадра, таким образом обеспечивая кадры принимаются в том же порядке, в котором они были отправлены.

Эти две функции работают независимо друг от друга.

...