1

Как известно, TCP и SCTP обычно используются по IP напрямую. Но я нахожу некоторые преимущества, если они предназначены для использования по UDP:

  • Им не понадобятся порты, возможно, также контрольная сумма, поскольку UDP предоставляет порты и контрольную сумму.
  • Они смогут быть реализованы в пространстве пользователя.
  • NAT не нужно будет их реализовывать. Может быть, есть еще какие-то NAT без поддержки SCTP.
  • Такие протоколы, как DNS, смогут быстрее выполнять TCP-квитирование, если ответ слишком длинный для UDP, поскольку в этом случае пакет UDP уже будет отправлен.

Так почему же TCP и SCTP не предназначены для использования по UDP?

Сравнивая TCP с SSL, легко увидеть,

  • Приложение, которое использует SSL, хочет безопасный и надежный канал. Поскольку TCP надежен, он может использовать TCP для экономии усилий.
  • Приложение, которое использует TCP и SCTP, хочет надежный канал. Поскольку UDP предоставляет канал, они могут использовать UDP для экономии усилий.

Я пытался думать о недостатках TCP и SCTP по сравнению с UDP. Я только придумал это, тогда сервер должен будет различать, когда используется TCP или SCTP. Это можно решить, используя другой порт (например, 443 и 80) или команду (например, STARTTLS).

1 ответ1

2

Существуют трудности при реализации TCP через UDP, в основном:

  • TCP-пакеты и UDP-пакеты имеют несовместимый формат.
  • TCP и UDP имеют разные номера протоколов (это видно в заголовке IP), это означает, что TCP-пакеты для порта UDP не будут переданы в правильный протокол верхнего уровня.

Тем не менее, протоколы, которые реализуют алгоритмы TCP поверх UDP, были реализованы для очень специфических нужд. Это называется «псевдо-TCP», в основном используется P2P-приложениями, поскольку обход NAT для TCP сложнее, чем для UDP.

Существует два варианта псевдо-TCP:Libjingle и Libnice. Libjingle - это библиотека с открытым исходным кодом от Google, изначально использовавшаяся для gtalk. Chrome Desktop также использует libjingle для надежных соединений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .