Совместимость с TCP: почему TCP не совместим с действиями по рассылке пакетов и многоадресной рассылке - PullRequest
3 голосов
/ 28 января 2011

** http://en.wikipedia.org/wiki/User_Datagram_Protocol: **

"В отличие от TCP, UDP совместим с передачей пакетов (отправка всем в локальной сети) и многоадресной передачей (отправка всем подписчикам)."

Ответы [ 4 ]

9 голосов
/ 28 января 2011

«Совместимый» - это очень плохой выбор слов здесь.«Поддержка» - это то, что действительно описывается.TCP является протоколом точка-точка, по замыслу.Период.TCP multicast является противоречием в терминах.

РЕДАКТИРОВАТЬ: я обновил страницу Википедии, чтобы отразить этот комментарий.

РЕДАКТИРОВАТЬ 2: Достаточно невероятно, кто-то удалил все упоминания многоадресной рассылки со страницы UDP Википедиитак как этот вопрос был опубликован.Я починил это.Опять же.

4 голосов
/ 28 января 2011

TCP устанавливает соединение между отправителем и получателем. Отправитель отправляет пакет, затем ожидает подтверждения от получателя, прежде чем отправить еще один 1 . Если пакет идет слишком долго без подтверждения, он пересылает пакет до тех пор, пока не получит подтверждение (вот как он получает свою надежность).

В случае многоадресной и широковещательной рассылки отправитель даже не знает, сколько может быть получателей, не говоря уже о том, кто они. Это делает практически невозможным ожидание подтверждения и повторную отправку пакетов, если кто-то не подтверждает пакет правильно.

1 Технически, есть «окно», которое позволяет ему отправлять, скажем, пять пакетов, прежде чем он получит подтверждение, но вы понимаете - ему все еще нужно знать, кто получает, и получить подтверждение пакетов, которые он отправил, и повторно отправьте пакеты, если они не подтверждены.

2 голосов
/ 28 января 2011

Короткий ответ - потому что широковещательный TCP сложен.

Длинный ответ заключается в том, что важные части протокола TCP, а именно управление надежностью и перегрузкой при переносе на семантику широковещания, легко подвергаются злоупотреблениям, плохо масштабируются, а многоадресная передача является простым и необязательным компонентом стандарта IPv4 и либо не реализованы, либо отключены на большинстве основных маршрутизаторов.

Было опубликовано много работ, исследующих новые протоколы для улучшения масштабируемости; IPv6 способствует многоадресной рассылке в соответствии с требованиями основного протокола и наряду с многоадресной рассылкой для конкретного источника значительно улучшает поддержку и безопасность базовой маршрутизации; оставляя все еще значительную область злоупотреблений.

Злоупотребление охватывает многие аспекты протокола, от атак «человек посередине», до перегрузки сетевой инфраструктуры, вызывающей сетевые штормы трафика вверх по течению к источнику.

Сегодня на Windows-машине вы можете использовать протокол PGM с поддержкой потоков, который работает почти так же, как широковещательный TCP. Он используется системой обмена сообщениями Microsoft MSMQ.

http://msdn.microsoft.com/en-us/library/ms740125(v=vs.85).aspx

2 голосов
/ 28 января 2011

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

...