Системный дизайн: TCP и UDP


TCP

Протокол управления передачей (TCP) ориентирован на соединение, то есть после установления соединения данные могут передаваться в обоих направлениях. TCP имеет встроенные системы проверки на наличие ошибок и гарантирует, что данные будут доставлены в том порядке, в котором они были отправлены, что делает его идеальным протоколом для передачи такой информации, как неподвижные изображения, файлы данных и веб-страницы.

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

UDP

User Datagram Protocol (UDP) — это более простой интернет-протокол без подключения, в котором не требуются службы проверки ошибок и восстановления. При использовании UDP отсутствуют накладные расходы на открытие соединения, поддержание соединения или его прерывание. Данные непрерывно отправляются получателю, независимо от того, получает он их или нет.

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

TCP против UDP

TCP — это протокол, ориентированный на соединение, в то время как UDP — протокол без соединения. Ключевым различием между TCP и UDP является скорость, поскольку TCP сравнительно медленнее UDP. В целом, UDP является более быстрым, простым и эффективным протоколом, однако повторная передача потерянных пакетов данных возможна только в TCP.

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

Характеристика TCP UDP
Соединение Требуется установленное соединение Протокол без соединения
Гарантированная доставка Может гарантировать доставку данных Не может гарантировать доставку данных
Повторная передача Повторная передача потерянных пакетов возможна Нет повторной передачи потерянных пакетов
Скорость Медленнее, чем UDP Быстрее, чем TCP
Широковещательная передача Не поддерживает широковещательную передачу Поддерживает вещание
Примеры использования HTTPS, HTTP, SMTP, POP, FTP и т.д. Потоковое видео, DNS, VoIP и т.д.

Эта статья является частью моего открытого курса по проектированию систем, доступного на Github.

karanpratapsingh / system-design

Узнайте, как проектировать системы в масштабе и подготовиться к собеседованиям по проектированию систем

Курс по проектированию систем

Привет, добро пожаловать на курс. Я надеюсь, что этот курс обеспечит вам отличный опыт обучения.

Оглавление

  • Начало

    • Что такое проектирование систем?
  • Глава I

    • IP
    • Модель OSI
    • TCP и UDP
    • Система доменных имен (DNS)
    • Балансировка нагрузки
    • Кластеризация
    • Кэширование
    • Сеть доставки контента (CDN)
    • Прокси
    • Доступность
    • Масштабируемость
    • Хранение
  • Глава II

    • Базы данных и СУБД
    • Базы данных SQL
    • Базы данных NoSQL
    • Базы данных SQL против баз данных NoSQL
    • Репликация баз данных
    • Индексы
    • Нормализация и денормализация
    • Модели согласованности ACID и BASE
    • Теорема CAP
    • Теорема PACELC
    • Транзакции
    • Распределенные транзакции
    • Шардинг
    • Последовательное хэширование
    • Федерация баз данных
  • Глава III

    • N-уровневая архитектура
    • Брокеры сообщений
    • Очереди сообщений
    • Publish-Subscribe
    • Корпоративная сервисная шина (ESB)
    • Монолиты и микросервисы
    • Архитектура, управляемая событиями (EDA)
    • Сорсинг событий
    • Разделение ответственности команд и запросов (CQRS)
    • API-шлюз
    • REST, GraphQL, gRPC
    • Длительный опрос, WebSockets, события, отправляемые сервером (SSE)
  • Глава IV

    • Геохашинг и квадтрики
    • Прерыватель цепи
Посмотреть на GitHub

Оцените статью
devanswers.ru
Добавить комментарий