Если UDP ориентирован на сообщения, почему SMTP использует TCP?

Итак, мы знаем, что UDP ориентирован на сообщения, а TCP — на потоки. Почему SMTP использует TCP вместо UDP?

2 ответа

Почему SMTP использует TCP вместо UDP?

Главным образом потому, что TCP надежен, а UDP — нет, т. е. с UDP приложение должно заботиться о потерянных, дублированных или переупорядоченных данных.

Кроме того, почта — это не то же самое, что «сообщение» в UDP. Это UDP-сообщение просто означает дейтаграмму определенной длины и без предопределенной внутренней структуры. Однако почта имеет некоторую внутреннюю структуру. Длина почты также может легко превысить максимальный размер сообщения UDP (64 КБ).

Обычные правила для принятия решения об использовании TCP или UDP следующие:

  1. Если вам нужны все функции TCP, которых нет в UDP, используйте TCP. Вы не сделаете лучший TCP.

  2. Если в вашем приложении есть функции, предоставляемые TCP, которые требуют больших затрат, которых можно избежать с помощью UDP, используйте UDP.

Итак, давайте применим эту логику к SMTP для функций, которые предоставляет TCP, но не UDP:

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

Медленный старт: это нужно для SMTP. Вы не можете просто отправить кучу писем на полной скорости, вы получите потерю пакетов. Вам нужно начать отправлять данные медленно и оценить доступную пропускную способность сети.

Переупорядочивание, обнаружение дубликатов и повторная передача потерянных дейтаграмм: Ну, это вам нужно для SMTP. Вам необходимо повторно передать потерянные дейтаграммы и исправить любые части электронного письма, полученные не по порядку.

Отправка и получение окон: Ну, это вам нужно для SMTP. Без этого трудно эффективно передавать большие объемы данных.

Таким образом, если бы SMTP был построен на основе UDP, сам SMTP должен был бы реализовать большую часть набора функций TCP, потому что SMTP нуждается в этом. Протокол TCP был разработан ведущими экспертами, он оптимизирован для всех популярных платформ, а сетевые инженеры оптимизируют сети для обеспечения его производительности. Вы не превзойдете это с помощью чего-то, разработанного специально для SMTP, и для каждого протокола верхнего уровня не имеет смысла реализовывать свою собственную версию всех этих функций.

Другие вопросы по тегам