Когда Go-приложение отправляет данные по сети, они проходят несколько уровней TCP/IP. Каждый отвечает за свою часть доставки.
1️⃣ Канальный
Отвечает за передачу данных внутри конкретной сети: Ethernet, Wi-Fi и т. д. Здесь работают MAC-адреса и механизмы доступа к среде.
2️⃣ Межсетевой
Здесь появляется IP — адресация и маршрутизация пакетов между сетями. Маршрутизаторы определяют, куда отправить пакет дальше.
3️⃣ Транспортный
Определяет, как данные доставляются между хостами. Основные протоколы:
TCP — соединение, порядок данных, подтверждения и повторная передача;
UDP — минимальные накладные расходы, без гарантии доставки и порядка.
4️⃣ Прикладной
Протоколы, с которыми непосредственно работают приложения: HTTP, DNS, SMTP, SSH и другие.
TCP vs UDP
У TCP заголовок сложнее: в нём есть sequence number, acknowledgement, window и другие поля, необходимые для управления передачей.
У UDP всё проще: порты, длина, checksum и данные.
В Go разницу особенно хорошо видно при работе с net.TCPConn и net.UDPConn.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
