Что такое граница сообщения? - PullRequest
17 голосов
/ 05 марта 2012

Что такое "бонусы сообщений" в следующем контексте?

Одно из различий между TCP и UDP состоит в том, что UDP сохраняет границы сообщений.

Я понимаю разницу между TCP и UDP , но не уверен насчет определения "границы сообщений" .Поскольку UDP включает информацию о назначении и порте в каждом отдельном пакете, может ли это быть тем, что дает сообщение «граница» ?

Ответы [ 2 ]

22 голосов
/ 05 марта 2012

Нет, границы сообщений не имеют ничего общего с пунктами назначения или портами.«Граница сообщения» - это разделение между двумя сообщениями, отправляемыми по протоколу.UDP сохраняет границы сообщений.Если вы отправите «FOO», а затем «BAR» по UDP, другой конец получит две дейтаграммы, одна из которых содержит «FOO», а другая - «BAR».

Если вы отправите «FOO», а затем »BAR "поверх TCP, граница сообщения не сохраняется.Другой конец может получить «FOO», а затем «BAR».Или это может получить «FOOBAR».Или он может получить «F», а затем «OOB», а затем «AR».TCP не делает никаких попыток сохранить границы сообщений приложения - это просто поток байтов в каждом направлении.

2 голосов
/ 05 марта 2012

Границы сообщения в этом контексте - это просто начало и конец сообщения / пакета. В случае TCP-соединений все сообщения / пакеты объединяются в непрерывный поток данных, тогда как в случае UDP сообщения передаются вам в их первоначальном виде. Они будут иметь точный размер в байтах.

...