Сокет
Суть
Сокет — программный интерфейс и абстракция «конечной точки» соединения. Сокет определяется тройкой протокол + IP-адрес + порт: например, TCP, 2001:db8::1, 443. Адрес выбирает машину (IPv4 — 32 бита, IPv6 — 128 бит; Apple требует поддержки IPv6-only сетей), порт (0–65535) — конкретное приложение на ней. Соединение — это пара сокетов: клиентский и серверный.
Сервер создаёт слушающий сокет, привязывает его к порту (bind) и ждёт входящих соединений (listen/accept); клиент делает connect. Дальше обе стороны читают и пишут байты (send/recv). Это BSD-сокеты — C-API из POSIX.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep