Протоколы прикладного уровня
Протокол прикладного уровня (англ. Application layer) — сетевой протокол верхнего уровня (7-го в сетевой модели OSI и 4-го в стеке протоколов TCP/IP), обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя иметь доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления. Пример: HTTP, POP3, SMTP.
Общие сведения
Функции и задачи
К основным функциям и задачам прикладного уровня относятся:
- обеспечение доступа к сетевым службам;
- идентификация участников обмена и проверка их подлинности;
- проверка доступности ресурсов на удалённой стороне;
- синхронизация взаимодействия между приложениями;
- передача служебной информации;
- формирование запросов к нижестоящему уровню (в модели OSI — к представительскому уровню)[1].
Взаимодействие с пользовательскими приложениями осуществляется через программные интерфейсы (API). Процесс обмена данными происходит следующим образом: пользовательское приложение формирует запрос, затем протокол прикладного уровня структурирует его, осуществляя форматирование данных, и передаёт сформированное сообщение на нижестоящий транспортный уровень для дальнейшей отправки[2][3].
Взаимодействие с транспортным уровнем
Взаимодействие между прикладным и транспортным уровнями обеспечивает передачу данных от пользовательских приложений к сетевой инфраструктуре. При отправке данных транспортный уровень принимает их от прикладного и разбивает на более мелкие блоки — сегменты (в случае использования протокола TCP) или дейтаграммы (для UDP). На принимающей стороне выполняется обратная операция: транспортный уровень собирает полученные фрагменты в исходное сообщение и передаёт его целевому приложению[4].
Для одновременной работы множества сетевых приложений на одном устройстве применяется механизм идентификации через порты. Транспортный уровень осуществляет мультиплексирование, собирая данные от различных приложений и добавляя к ним заголовки с номерами портов источника и назначения, а при получении данных — демультиплексирование, направляя информацию конкретному приложению на основе порта назначения[5].
Протоколы прикладного уровня функционируют поверх определённых протоколов транспортного уровня в зависимости от своих задач:
- TCP обеспечивает надёжную доставку данных с подтверждением получения и сохранением их последовательности. Он используется приложениями, для которых критична целостность информации (например, HTTP, FTP, SMTP)[6];
- UDP обеспечивает высокую скорость передачи и низкие задержки за счёт отсутствия механизмов установления соединения и контроля доставки. Он применяется в случаях, когда скорость передачи важнее стопроцентной надёжности (например, для DNS, VoIP)[6].
Эволюция веб-протоколов
Развитие веб-протоколов от HTTP/1.1 к HTTP/3 было обусловлено необходимостью повышения производительности передачи данных. Протокол HTTP/1.1 имел существенный недостаток — проблему «блокировки начала очереди» (англ. Head-of-Line blocking, HOL blocking), при которой медленная обработка первого запроса в соединении приводила к задержке всех последующих[7].
Внедрённый позднее протокол HTTP/2 перешёл на бинарный формат и стал использовать мультиплексирование. Это позволило одновременно передавать множество запросов и ответов в рамках одного TCP-соединения, успешно решив проблему блокировки начала очереди на прикладном уровне. Тем не менее, ограничение сохранилось на транспортном уровне: поскольку протокол TCP гарантирует последовательную доставку, потеря одного пакета останавливала передачу всех потоков данных внутри соединения до его повторной отправки[8][7].
Для решения этой проблемы был осуществлён переход на HTTP/3, который работает поверх нового транспортного протокола QUIC, использующего UDP. Использование QUIC устранило проблему блокировки начала очереди на транспортном уровне благодаря независимости потоков данных (потеря пакета в одном потоке не влияет на остальные). Кроме того, новый протокол позволил значительно ускорить процесс установления соединения[8][9].
Безопасность
На прикладном уровне сформировался комплекс современных угроз. Наблюдается смещение фокуса на DDoS-атаки прикладного уровня (L7), при которых отправляются ресурсоёмкие «умные» запросы для истощения вычислительных мощностей сервера. Среди уязвимостей веб-приложений, согласно классификации OWASP, выделяются нарушенный контроль доступа и различные виды инъекций. Кроме того, одной из ключевых целей злоумышленников стали атаки на API.
Ключевым стандартом защиты данных на прикладном уровне является протокол TLS 1.3[10]. В современных сетевых протоколах, таких как QUIC, шифрование на базе TLS 1.3 является обязательным и интегрировано непосредственно на уровне самого протокола[11]. Для противодействия новым вызовам также активно внедряются алгоритмы постквантовой криптографии[12] и архитектура нулевого доверия (Zero Trust)[13].
Протоколы
- 9P
- BitTorrent
- DHCP (вытеснил устаревший BOOTP)[14]
- DNS
- FTP
- HTTP
- NFS
- POP, POP3
- IMAP
- RTP
- SMTP
- SNMP
- SPDY (устарел, вытеснен HTTP/2)[15]
- Telnet
- SSH
- X.400
- X.500
- RDP
- Matrix
- SFTP
- MQTT и CoAP (для Интернета вещей)
- gRPC (для удалённого вызова процедур)[16]
- ActivityPub (для децентрализованных социальных сетей)