TCP (Transmission Control Protocol)
Справочный материал курса по архитектуре мессенджера: TCP (Transmission Control Protocol).
Краткое определение: Протокол управления передачей, который гарантирует надежную, упорядоченную и проверенную на ошибки доставку данных между устройствами в сети.
🧠 Простыми словами
Представь, что ты отправляешь другу важную рукопись книги, но почта принимает только маленькие конверты. Ты разрываешь книгу на страницы, кладешь каждую в отдельный конверт и нумеруешь их.
Но это еще не всё. Ты отправляешь их заказным письмом с уведомлением о вручении.
- Если друг получает конверт №5, он отправляет тебе смс: «Конверт №5 получил!».
- Если через некоторое время ты понимаешь, что смс о конверте №3 не приходило, ты отправляешь его заново.
- Когда друг соберет все конверты, он сложит страницы строго по номерам, и книга будет целой.
Именно так работает TCP. Он разбивает данные на пакеты, нумерует их, следит за доставкой и просит повторить отправку, если что-то потерялось.
⚙️ Как это работает (по шагам)
- Установка соединения (Three-way handshake / Тройное рукопожатие): Прежде чем передать данные, устройства «знакомятся».
- Клиент: «Привет, я хочу отправить данные, ты готов?» (SYN)
- Сервер: «Да, я готов, а ты?» (SYN-ACK)
- Клиент: «Отлично, я тоже готов, начинаем!» (ACK)
- Передача данных: Данные разбиваются на пакеты. Каждый пакет имеет номер последовательности.
- Подтверждение (Acknowledgment): Получатель отправляет обратно подтверждение о получении каждого пакета. Если подтверждение не пришло, отправитель повторяет передачу этого пакета.
- Завершение соединения: Когда передача закончена, устройства корректно «прощаются» и закрывают канал связи.
💡 Ключевые особенности для разработчика
- Надежность: Данные дойдут до адресата или ты узнаешь об ошибке. Потеря пакетов в сети не означает потерю информации.
- Упорядоченность: Даже если пакеты пришли по сети вразнобой (например, пакет №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