Курс «Архитектура мессенджера» · Справка по сетям

TCP (Transmission Control Protocol)

Справочный материал курса по архитектуре мессенджера: TCP (Transmission Control Protocol).

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

🧠 Простыми словами

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

Но это еще не всё. Ты отправляешь их заказным письмом с уведомлением о вручении.

  • Если друг получает конверт №5, он отправляет тебе смс: «Конверт №5 получил!».
  • Если через некоторое время ты понимаешь, что смс о конверте №3 не приходило, ты отправляешь его заново.
  • Когда друг соберет все конверты, он сложит страницы строго по номерам, и книга будет целой.

Именно так работает TCP. Он разбивает данные на пакеты, нумерует их, следит за доставкой и просит повторить отправку, если что-то потерялось.

⚙️ Как это работает (по шагам)

  1. Установка соединения (Three-way handshake / Тройное рукопожатие): Прежде чем передать данные, устройства «знакомятся».
    • Клиент: «Привет, я хочу отправить данные, ты готов?» (SYN)
    • Сервер: «Да, я готов, а ты?» (SYN-ACK)
    • Клиент: «Отлично, я тоже готов, начинаем!» (ACK)
  2. Передача данных: Данные разбиваются на пакеты. Каждый пакет имеет номер последовательности.
  3. Подтверждение (Acknowledgment): Получатель отправляет обратно подтверждение о получении каждого пакета. Если подтверждение не пришло, отправитель повторяет передачу этого пакета.
  4. Завершение соединения: Когда передача закончена, устройства корректно «прощаются» и закрывают канал связи.

💡 Ключевые особенности для разработчика

  • Надежность: Данные дойдут до адресата или ты узнаешь об ошибке. Потеря пакетов в сети не означает потерю информации.
  • Упорядоченность: Даже если пакеты пришли по сети вразнобой (например, пакет №3 пришел раньше пакета №1), TCP на стороне получателя сам соберет их в правильном порядке.
  • Контроль перегрузок: TCP умеет «притормаживать» отправку, если замечает, что сеть перегружена, чтобы не «уронить» её полностью.

🆚 TCP против UDP (для контекста)

Часто TCP сравнивают с UDP (User Datagram Protocol):

  • TCP — это заказное письмо с уведомлением или телефонный звонок. Надежно, есть подтверждение, но чуть медленнее из-за всех этих проверок. (Используется для: загрузки веб-страниц (HTTP/HTTPS), отправки email, передачи файлов).
  • UDP — это обычная почтовая открытка или крик в толпу. Отправил и забыл. Быстро, но нет гарантий, что дойдет и что дойдет в правильном порядке. (Используется для: онлайн-игр, видеостриминга, VoIP-звонков, где важна скорость, а пара потерянных кадров не критична).

🔗 Связанные понятия (для Obsidian)

  • [[IP (Internet Protocol)]]
  • [[Модель OSI]]
  • [[UDP]]
  • [[Three-way handshake]]
  • [[Сетевые протоколы]]
  • [[HTTP]]

#разработка #сети #базовые_понятия #TCP #обучение #backend