← На главную

Berkeley sockets сделали сеть просто файлом в Version 4.2BSD

29.07.2026 02:25 · hackernews

В 1983 году кампус Калифорнийского университета в Беркли выпустил Version 4.2BSD — именно этот релиз операционной системы UNIX фактически породил онлайн-сервисы, какими мы их знаем. Вместе с системой мир получил Berkeley sockets — модель сетевого доступа, перевернувшую всё. До этого 4.2BSD и более ранние версии для миникомпьютеров PDP-11 распространялись на катушках с лентой. Вы получали посылку, вводили вручную минимальный шестнадцатеричный код на панельном коммутаторе, тумблерами набирая 16-битные адреса, запускали с ленты bootstrap loader, а затем целый день распаковывали TAR-архив на жёсткий диск. Пересборка ядра с драйверами могла занять два-три дня.

До sockets доступ к сети на UNIX строился совсем иначе. Программы cu и tip работали как терминальные эмуляторы, передавая символы через последовательный порт на модем с акустической муфтой на липучках. График UUCP дозванивался через cu, пересылал почту, новости и мелкие файлы — по сути, UUCP и был для многих «сетью». Скорость измерялась сотнями бод, а ARPANET тогда охватывал лишь небольшую группу американских университетов и исследовательских центров.

Sockets изменили картину радикально, потому что повторно использовали простую и знакомую UNIX-абстракцию — файловый дескриптор. По сути, socket вёл себя как файл. Любую программу, умеющую читать и писать в файл, стало легко переделать на чтение и запись в сеть. Быстро появились FTP для передачи файлов, Telnet для удалённого доступа, SMTP-бэкенд для связки с Sendmail. Первая поставка 4.2BSD, правда, не работала: библиотека sockets не дотягивалась до реального ARPANET, а у большинства получателей ленты этого доступа попросту не было. Тестировать интерфейс приходилось на локальных UNIX-domain sockets, напоминавших pipe, и код легко ронял систему.

Параллельно AT&T Bell Labs разрабатывала собственную модель сетевого ввода-вывода — STREAMS. Интерфейс тоже напоминал файловый I/O, но юридический спор между AT&T и BSD сильно ограничил распространение STREAMS, тогда как sockets уже разошлись по рукам. Решающим толчком стал выход рабочих станций Sun Microsystems, основанной Биллом Джоем. Машины на Motorola 68000 поставлялись с BSD UNIX, Ethernet на борту и работающим кодом sockets прямо из коробки. В ответ DEC выпускает ULTRIX на младших VAX с той же сетевой подсистемой. Один за другим крупные производители переходят на UNIX-совместимость и подхватывают sockets. Даже AT&T в коммерческом System V в итоге принимает sockets, а не STREAMS.

Дальше рост пошёл лавинообразно: Sun Network File System на UDP-сокетах завоёвывает популярность, появляются прослойки для дешёвых Ethernet-карт ПК под Windows, и вся сетевая разработка надолго оседает на стеке TCP/IP с интерфейсом sockets. Инновации долго сводились к оптимизации, поддержке IPv6, пока не появился QUIC, переизобретающий сессии поверх UDP и отодвигающий TCP. Но даже QUIC в конечном счёте пишет в тот самый UNIX socket. Sockets действительно захватили мир.

Читать оригинал →