Сетевые протоколы
Сетевые протоколы — формализованные наборы правил, регламентирующих формат, порядок и способы обмена данными между узлами компьютерных сетей. Благодаря протоколам различное аппаратное и программное обеспечение «говорит на одном языке», что делает возможным работу глобального Интернета и частных корпоративных инфраструктур.
Что важно знать
| Сетевые протоколы | |
|---|---|
| англ. Network protocols | |
| Область использования | Компьютерная сеть, Интернет |
| Дата появления | 1969[1] |
| Место появления | США[2] |
| Автор понятия | Винтон Серф и Роберт Кан[3] |
Определение
Сетевой протокол представляет собой совокупность соглашений, определяющих:
- каким образом устройства обнаруживают друг друга и устанавливают соединение;
- в каком формате передаются данные (заголовки, полезная нагрузка, трейлеры);
- как осуществляется логическая адресация и маршрутизация;
- каким образом гарантируется целостность информации и её повторная передача при ошибках;
- какие механизмы используются для регулирования скорости и защиты от перегрузки[4].
Основные функции протоколов включают:
- обеспечение совместимости оборудования разных производителей;
- формирование стандартизованного формата кадров, пакетов и сегментов;
- логическую и физическую адресацию;
- надёжную доставку с контролем потока и ошибок;
- установление и завершение соединений;
- шифрование и аутентификацию данных там, где это необходимо[5].
История
История сетевых протоколов неразрывно связана с развитием компьютерных сетей и Интернета. Её можно разделить на несколько ключевых этапов.
Разработка протоколов началась в конце 1960-х годов в рамках проекта ARPANET в США. В 1969 году была создана Рабочая группа по сетям (Network Working Group, NWG), и 7 апреля Стив Крокер опубликовал первый документ из серии «Запрос комментариев» (RFC), заложивший основу для стандартизации.
Первым стандартным протоколом в ARPANET стал NCP (Network Control Protocol), разработка которого была завершена в декабре 1970 года[6]. К концу 1971 года его использовали уже 15 узлов сети[7]. На базе NCP появились первые прикладные протоколы, такие как Telnet и FTP, стабильная версия которого была представлена в 1972 году.
В 1972 году Винтон Серф и Роберт Кан начали работу над новым поколением протоколов, осознавая ограничения NCP[8]. В 1974 году они опубликовали ключевую статью «A Protocol for Packet Network Intercommunication», в которой изложили основы протокола управления передачей (TCP)[9]. В 1978 году для улучшения маршрутизации протокол был разделён на TCP (Transmission Control Protocol) и IP (Internet Protocol)[9]. 1 января 1983 года сеть ARPANET официально перешла с NCP на стек протоколов TCP/IP, что считается одним из ключевых моментов в рождении современного Интернета[10].
В 1984 году была разработана техническая основа для Системы доменных имён (DNS) — в Калифорнийском университете в Беркли создали первую реализацию DNS-сервера, BIND[11]. Система начала полноценно функционировать в 1985 году, когда 15 марта был зарегистрирован первый в мире домен — symbolics.com[12]. В ноябре 1987 года публикация RFC 1034 и 1035 окончательно стандартизировала её работу.
В 1986 году была учреждена IETF (Internet Engineering Task Force) — открытое международное сообщество, ставшее ключевой площадкой для разработки и стандартизации протоколов[13]. В том же году Национальный научный фонд США (NSF) запустил опорную сеть NSFNet, которая постепенно вытеснила ARPANET[14].
Этот период был отмечен стандартизацией важных протоколов:
- NNTP (Network News Transfer Protocol) для новостных групп Usenet (RFC 977, 1986 год)[15].
- IRC (Internet Relay Chat) для текстового общения в реальном времени (разработан в 1988 году, стандартизирован в RFC 1459 в 1993)[16].
- SNMP (Simple Network Management Protocol) для управления сетевыми устройствами (RFC 1067, 1988 год)[17].
- NTP (Network Time Protocol) для синхронизации времени (версия 1 в RFC 1059, 1988 год; версия 2 в RFC 1119, 1989 год).
В марте 1989 года британский учёный Тим Бернерс-Ли, работая в ЦЕРН, предложил концепцию Всемирной паутины (World Wide Web), включавшую протокол HTTP, язык HTML и систему адресации URL[18][19].
В 1990 году Тим Бернерс-Ли разработал первые реализации своих идей: протокол HTTP (Hypertext Transfer Protocol), первый веб-браузер WorldWideWeb и первый веб-сервер[20]. 20 декабря 1990 года был запущен первый в мире веб-сайт info.cern.ch. В том же году была выведена из эксплуатации сеть ARPANET[21].
В 1993 году появление графического браузера NCSA Mosaic сделало интернет доступным для широкой аудитории и вызвало взрывной рост числа сайтов[22]. Для стандартизации веб-технологий в октябре 1994 года Тим Бернерс-Ли основал W3C (World Wide Web Consortium)[23].
Протокол HTTP быстро развивался: версия HTTP/1.0, закрепившая сложившуюся практику, была описана в RFC 1945 в 1996 году[24]. Уже в январе 1997 года в RFC 2068 была представлена спецификация HTTP/1.1[25], которая принесла такие улучшения, как постоянные соединения и виртуальный хостинг. Обновлённая версия стандарта вышла в RFC 2616 в 1999 году[26].
В 1997 году был ратифицирован первый стандарт беспроводных сетей IEEE 802.11, заложивший основу технологии Wi-Fi[27]. Для решения проблемы исчерпания IP-адресов в 1995 году была представлена спецификация IPv6 (RFC 1883). Вопросы безопасности вышли на первый план с разработкой протокола SSL компанией Netscape в 1994 году[28] и его преемника TLS 1.0 (RFC 2246) в 1999 году. В 1998 году для координации доменных имён и IP-адресов была создана корпорация ICANN[29].
Начало 2000-х было отмечено появлением новых транспортных протоколов, таких как SCTP (RFC 2960, 2000 год), и технологий для магистральных сетей, например, MPLS (RFC 3031, 2001 год). Скорости локальных сетей значительно выросли с утверждением стандарта 10 Gigabit Ethernet в 2002 году[30].
В 2003 году запуск Skype произвёл революцию в IP-телефонии (VoIP), сделав её массовой и доступной[31]. Развитие беспроводных технологий продолжилось с появлением стандарта для энергоэффективных сетей Zigbee (2003 год)[32] и ратификацией стандарта Power over Ethernet (IEEE 802.3af), позволившего передавать питание по сетевому кабелю[33].
В 2007 году исследователи из Стэнфорда и Беркли разработали протокол OpenFlow, который заложил основы программно-конфигурируемых сетей (SDN)[34]. В 2009 году Google представил экспериментальный протокол SPDY, нацеленный на ускорение загрузки веб-страниц, который впоследствии лёг в основу HTTP/2[35].
В 2010-х годах основной фокус сместился на внедрение протоколов нового поколения. Проблема исчерпания адресов IPv4 привела к проведению Всемирного дня IPv6 в 2011 году и его постоянному запуску крупными компаниями в 2012 году[36]. В 2011 году был стандартизирован протокол WebSocket (RFC 6455), обеспечивший постоянное двунаправленное соединение для веб-приложений[37].
В мае 2015 года был официально опубликован стандарт HTTP/2 (RFC 7540), основанный на наработках SPDY[38]. В том же году IETF начала работу по стандартизации протокола QUIC, разработанного Google[39]. В 2018 году было принято решение, что версия HTTP поверх QUIC получит название HTTP/3[40], а в июне 2022 года он был официально стандартизирован (RFC 9114)[41].
В области безопасности важными вехами стали стандартизация протокола TLS 1.3 (RFC 8446) в 2018 году, который значительно повысил производительность и защищённость соединений[42], и протокола ACME (RFC 8555) в 2019 году для автоматизации получения SSL/TLS-сертификатов[43].
Современный этап характеризуется разработкой протоколов для специализированных задач. В 2023 году была опубликована архитектура L4S (Low Latency, Low Loss, and Scalable Throughput) для интернет-сервисов с минимальными задержками (RFC 9330)[44]. В июне 2025 года Ultra Ethernet Consortium выпустил спецификацию 1.0 для Ultra Ethernet — стека протоколов, оптимизированного для нагрузок искусственного интеллекта и высокопроизводительных вычислений[45]. Также в 2025 году началось массовое внедрение стандарта Wi-Fi 7 (IEEE 802.11be), предлагающего значительно более высокие скорости и низкие задержки благодаря технологии Multi-Link Operation (MLO)[46].
Структурные элементы протоколов
Передаваемая по сети информация оформляется в виде единицы данных протокола (PDU, Protocol Data Unit). Типичный PDU включает три обязательных компонента[47]:
- заголовок (header) — служебная информация для адресации и управления;
- полезная нагрузка (payload) — собственно данные пользователя или верхнего уровня стека;
- трейлер (footer) — контрольная последовательность, обеспечивающая проверку целостности.
Заголовок содержит MAC- или IP-адреса отправителя и получателя, номера портов, флаги, порядковые номера, TTL и контрольную сумму самого заголовка. Каждый уровень стека добавляет свой заголовок, формируя процесс инкапсуляции[48].
Полезная нагрузка — это «полезные» данные: текст сообщений, файлы, аудиопоток и т. д. На каждом нижележащем уровне нагрузкой становится PDU верхнего уровня, что позволяет передавать данные любой природы[49].
Трейлер (чаще всего на канальном уровне) включает CRC-32 или другую контрольную последовательность для обнаружения ошибок, возникших в физической среде. Неверный контрольный код приводит к отбросу кадра[50].
Принципы функционирования
Функционирование сетевых протоколов базируется на трёх фундаментальных принципах[51]:
- Синтаксис — формат и расположение полей в сообщении.
- Семантика — значение полей и действия, выполняемые при их обработке.
- Синхронизация — согласование времени и порядка обмена данными (NTP, PTP).
Инкапсуляция
Инкапсуляция — процесс, при котором каждый уровень модели OSI/TCP-IP помещает данные верхнего уровня внутрь собственного PDU, дополняя его заголовком, а иногда и трейлером. На принимающей стороне выполняется обратный процесс — декапсуляция[52].
Адресация
На разных уровнях используются разные идентификаторы[53]:
- MAC-адрес (48 бит) — уникальный аппаратный адрес сетевого интерфейса на канальном уровне.
- IP-адрес — логический адрес узла на сетевом уровне (IPv4 — 32 бита, IPv6 — 128 бит).
- Номер порта — 16-битное целое, идентифицирующее приложение на транспортном уровне.
Маршрутизация
Маршрутизация — процесс выбора оптимального пути пакетов между сетями. Различают статическую и динамическую маршрутизацию. Динамические протоколы делятся на[54]:
- дистанционно-векторные (RIP);
- протоколы состояния канала (OSPF);
- протоколы вектор-пути (BGP).
Таблица маршрутизации хранит адрес назначения, маску, шлюз и метрику; при получении пакета маршрутизатор выбирает запись с наибольшей длиной маски и наименьшей стоимостью[55].
Управление потоком и ошибками
Для надёжной доставки применяются следующие механизмы[56]:
- скользящее окно (Sliding Window) — динамическое ограничение объёма не подтверждённых данных;
- контрольная сумма и CRC — обнаружение повреждений;
- ARQ (Automatic Repeat Request) — повторная передача утерянных кадров (Stop-and-Wait, Go-Back-N, Selective Repeat).
Протокол TCP комбинирует все указанные механизмы, а HDLC использует непрерывное ARQ и 16-битный или 32-битный CRC.
Управление соединением
Протоколы делятся на соединительные (TCP) и бессоединительные (UDP). В TCP соединение устанавливается «трёхсторонним рукопожатием» (SYN → SYN-ACK → ACK) и завершается четырёхэтапным обменом FIN/ACK; UDP передаёт дейтаграммы без предварительного согласования[57].
- стандартизация и совместимость оборудования;
- надёжная доставка данных (TCP);
- возможность шифрования (HTTPS, SSH);
- масштабируемость и модульность стека OSI/TCP-IP;
- упрощённая диагностика и мониторинг сети[58].
- уязвимости и атаки (ARP-, DNS-спуфинг, MITM);
- накладные расходы на заголовки и подтверждения;
- задержки из-за механизма надёжности;
- сложность совместимости разных версий (IPv4/IPv6);
- высокая сложность администрирования крупных сетей[59].
Сферы применения
Сетевые протоколы используются:
- в веб-технологиях (HTTP/HTTPS, DNS, QUIC);
- для передачи файлов (FTP, SFTP, FTPS);
- в электронной почте (SMTP, POP3, IMAP);
- для удалённого управления (SSH, RDP, Telnet, SNMP);
- в потоковой передаче мультимедиа и VoIP (RTP, SRTP, SCTP);
- в защите сетей (TLS, IPsec)[60].
Инструменты для работы с сетевыми протоколами
Инструментарий условно делится на анализаторы трафика, сетевые стеки и библиотеки, а также диагностические консольные утилиты.
- Wireshark — графический перехват и глубокий анализ сотен протоколов[61].
- tcpdump — консольный сниффер для UNIX-подобных систем[62].
- Microsoft Network Monitor — перехват пакетов в Windows[63].
- Fiddler — прокси-анализатор HTTP/HTTPS-трафика[64].
- Colasoft Capsa и OmniPeek — корпоративный мониторинг и диагностика[65].
- встроенные стеки TCP/IP в Linux и Windows — полнофункциональные реализации IPv4/IPv6[66];
- lwIP и uIP — легковесные стеки для микроконтроллеров и IoT[67];
- BSD TCP/IP — исторически значимая реализация, лежащая в основе FreeBSD, macOS и др[68].;
- библиотеки libpcap/Npcap (захват пакетов), Scapy (генерация и анализ пакетов на Python), Boost.Asio (асинхронный ввод-вывод на C++), пакет java.net (JDK), низкоуровневый Berkeley Socket API[69].
- ping — проверка достижимости и измерение RTT;
- traceroute / tracert — определение маршрута пакета;
- netstat — отображение активных соединений и портов;
- nslookup / dig — запросы к DNS-серверам;
- iperf — измерение пропускной способности TCP/UDP-каналов;
- nmap — сканирование портов, обнаружение служб и ОС[70].


