OSI L7: Прикладний рівень (Application Layer)

Що таке прикладний рівень?

Прикладний рівень — це інтерфейс між мережею та користувачем/додатком. Він надає мережеві сервіси безпосередньо програмам користувача.

┌─────────────────────────────────────────────────────────────────┐
│  L7 = Те, з чим взаємодіє користувач                           │
│                                                                 │
│  ┌─────────┐   ┌─────────┐   ┌─────────┐   ┌─────────┐         │
│  │ Browser │   │ Email   │   │ SSH     │   │ FTP     │         │
│  │  HTTP   │   │ SMTP    │   │ Client  │   │ Client  │         │
│  └────┬────┘   └────┬────┘   └────┬────┘   └────┬────┘         │
│       │             │             │             │               │
│  ═════╪═════════════╪═════════════╪═════════════╪═══════════   │
│       │             │             │             │               │
│       └─────────────┴─────────────┴─────────────┘               │
│                            │                                    │
│                     Network Stack                               │
└─────────────────────────────────────────────────────────────────┘

Основні протоколи L7

Огляд

Протокол Порт Призначення
HTTP/HTTPS 80/443 Веб
FTP/SFTP 21/22 Передача файлів
SMTP 25/465/587 Відправка пошти
POP3/IMAP 110/143, 995/993 Отримання пошти
DNS 53 Резолюція доменів
SSH 22 Безпечний віддалений доступ
DHCP 67/68 Автоконфігурація мережі
SNMP 161/162 Моніторинг обладнання
NTP 123 Синхронізація часу
LDAP 389/636 Каталоги, автентифікація

HTTP/HTTPS

HTTP Request

┌─────────────────────────────────────────────────────────────────┐
│  GET /api/users HTTP/1.1                                       │
│  Host: api.example.com                                         │
│  User-Agent: Mozilla/5.0                                       │
│  Accept: application/json                                       │
│  Accept-Language: uk,en                                        │
│  Authorization: Bearer eyJhbGc...                              │
│  Connection: keep-alive                                         │
│                                                                 │
│  [Request body — для POST/PUT]                                 │
└─────────────────────────────────────────────────────────────────┘
     │           │
     │           └── Resource path
     └── HTTP Method

HTTP Response

┌─────────────────────────────────────────────────────────────────┐
  HTTP/1.1 200 OK                                               
  Date: Sat, 17 Jan 2026 12:00:00 GMT                          
  Content-Type: application/json; charset=utf-8                 
  Content-Length: 1234                                          
  Cache-Control: max-age=3600                                   
  X-Request-Id: abc123                                          
                                                                 
  {"users": [{"id": 1, "name": "Ivan"}, ...]}                   
└─────────────────────────────────────────────────────────────────┘
       
       └── Status Code (200 = OK)

HTTP Methods

Method Опис Idempotent Body
GET Отримати ресурс Так Ні
POST Створити ресурс Ні Так
PUT Замінити ресурс Так Так
PATCH Частково оновити Ні Так
DELETE Видалити Так Ні
HEAD Тільки headers Так Ні
OPTIONS Доступні методи Так Ні

HTTP Status Codes

┌─────────────────────────────────────────────────────────────────┐
│  1xx  Informational                                           │
│  100 Continue                                                   │
│  101 Switching Protocols (WebSocket)                           │
├─────────────────────────────────────────────────────────────────┤
│  2xx  Success                                                  │
│  200 OK                                                         │
│  201 Created                                                    │
│  204 No Content                                                 │
├─────────────────────────────────────────────────────────────────┤
│  3xx  Redirection                                              │
│  301 Moved Permanently                                          │
│  302 Found (temporary redirect)                                │
│  304 Not Modified (cache)                                       │
├─────────────────────────────────────────────────────────────────┤
│  4xx  Client Error                                             │
│  400 Bad Request                                                │
│  401 Unauthorized                                               │
│  403 Forbidden                                                  │
│  404 Not Found                                                  │
│  429 Too Many Requests                                          │
├─────────────────────────────────────────────────────────────────┤
│  5xx  Server Error                                             │
│  500 Internal Server Error                                      │
│  502 Bad Gateway                                                │
│  503 Service Unavailable                                        │
│  504 Gateway Timeout                                            │
└─────────────────────────────────────────────────────────────────┘

HTTP/2 та HTTP/3

┌─────────────────────────────────────────────────────────────────┐
│  HTTP/1.1          HTTP/2              HTTP/3                   │
│  (1997)            (2015)              (2022)                   │
├─────────────────────────────────────────────────────────────────┤
│  Text-based        Binary              Binary                   │
│  1 request/conn    Multiplexed         Multiplexed              │
│  No compression    Header compression  Header compression       │
│  TCP               TCP                 QUIC (UDP)               │
│                    Server Push         0-RTT                    │
└─────────────────────────────────────────────────────────────────┘

HTTPS (HTTP + TLS)

# Перевірити HTTPS
curl -v https://example.com 2>&1 | grep -E "(SSL|TLS|subject|issuer)"

# SSL Labs тест
# https://www.ssllabs.com/ssltest/

DNS (Domain Name System)

Як працює DNS

┌─────────────────────────────────────────────────────────────────┐
│  Запит: "Яка IP у example.com?"                                │
│                                                                 │
│  Client ───────▶ Local DNS ───────▶ Root DNS (.com)            │
│    │               Resolver              │                      │
│    │                                     ▼                      │
│    │                              TLD DNS (.com)                │
│    │                                     │                      │
│    │                                     ▼                      │
│    │                         Authoritative DNS (example.com)   │
│    │                                     │                      │
│    │◀───────── 93.184.216.34 ◀───────────┘                     │
│                                                                 │
│  Відповідь кешується на кожному етапі                          │
└─────────────────────────────────────────────────────────────────┘

DNS Record Types

Тип Опис Приклад
A IPv4 адреса example.com → 93.184.216.34
AAAA IPv6 адреса example.com → 2606:2800:220:1:...
CNAME Alias www.example.com → example.com
MX Mail server example.com → mail.example.com
TXT Текст (SPF, DKIM) v=spf1 include:_spf.google.com
NS Name server example.com → ns1.example.com
SOA Start of Authority Primary NS, admin email, serials
PTR Reverse DNS 34.216.184.93 → example.com
SRV Service location _sip._tcp.example.com

DNS команди

# Простий запит
dig example.com
# або
nslookup example.com

# Конкретний тип запису
dig example.com MX
dig example.com TXT

# Використати конкретний DNS сервер
dig @8.8.8.8 example.com

# Трасування DNS
dig +trace example.com

# Reverse DNS
dig -x 93.184.216.34

# Коротка відповідь
dig +short example.com
# 93.184.216.34

SSH (Secure Shell)

SSH Handshake

┌─────────────────────────────────────────────────────────────────┐
│  Client                                            Server       │
│    │                                                 │          │
│    │  1. TCP connection (port 22)                    │          │
│    │ ─────────────────────────────────────────────▶ │          │
│    │                                                 │          │
│    │  2. Protocol version exchange                   │          │
│    │ ◀═══════════════════════════════════════════▶ │          │
│    │     "SSH-2.0-OpenSSH_8.9"                       │          │
│    │                                                 │          │
│    │  3. Key exchange (DH, ECDH)                     │          │
│    │ ◀═══════════════════════════════════════════▶ │          │
│    │                                                 │          │
│    │  4. Server host key verification                │          │
│    │     (fingerprint check)                         │          │
│    │                                                 │          │
│    │  5. User authentication                         │          │
│    │     - Password                                  │          │
│    │     - Public key (recommended)                  │          │
│    │     - Keyboard-interactive                      │          │
│    │                                                 │          │
│    │  6. Encrypted session established               │          │
│    │ ════════════════════════════════════════════▶ │          │
└─────────────────────────────────────────────────────────────────┘

SSH команди

# Базове підключення
ssh user@server.com

# З портом
ssh -p 2222 user@server.com

# З конкретним ключем
ssh -i ~/.ssh/id_ed25519 user@server.com

# Port forwarding (local)
ssh -L 8080:localhost:80 user@server.com
# Локальний 8080 → Сервер localhost:80

# Port forwarding (remote)
ssh -R 9090:localhost:3000 user@server.com
# Сервер 9090 → Локальний localhost:3000

# SOCKS proxy
ssh -D 1080 user@server.com
# Локальний SOCKS5 проксі на 1080

# SCP (копіювання файлів)
scp file.txt user@server:/path/to/
scp -r folder/ user@server:/path/to/

# SFTP
sftp user@server.com

SSH Config

# ~/.ssh/config
Host myserver
    HostName 192.168.1.100
    User admin
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60

Host *
    AddKeysToAgent yes
    IdentitiesOnly yes

# Тепер можна:
ssh myserver

Email протоколи

SMTP (Sending Mail)

┌─────────────────────────────────────────────────────────────────┐
  Client (MUA)              Server (MTA)                         
                                                               
      EHLO client.com                                          
     ────────────────────────▶│                                 
                                                               
      250-server.com Hello                                     
    │◀────────────────────────                                  
                                                               
      MAIL FROM:<from@x.com>                                   
     ────────────────────────▶│                                 
                                                               
      RCPT TO:<to@y.com>                                       
     ────────────────────────▶│                                 
                                                               
      DATA                                                     
     ────────────────────────▶│                                 
                                                               
      Subject: Hello                                           
      Message body...                                          
      .                                                        
     ────────────────────────▶│                                 
                                                               
      250 OK                                                   
    │◀────────────────────────                                  
└─────────────────────────────────────────────────────────────────┘

Порти:
- 25 — SMTP (server-to-server)
- 465 — SMTPS (deprecated)
- 587 — SMTP Submission (client-to-server, STARTTLS)

POP3 vs IMAP

┌─────────────────────────────────────────────────────────────────┐
│                POP3                     IMAP                    │
├─────────────────────────────────────────────────────────────────┤
│  Завантажує листи на клієнт     Синхронізує з сервером        │
│  Видаляє з сервера (зазвичай)   Зберігає на сервері           │
│  Один пристрій                  Багато пристроїв              │
│  Порти: 110, 995 (SSL)          Порти: 143, 993 (SSL)         │
│  Простий                        Складніший, більше функцій    │
└─────────────────────────────────────────────────────────────────┘

DHCP (Dynamic Host Configuration Protocol)

DHCP DORA

┌─────────────────────────────────────────────────────────────────┐
│  Client                                           DHCP Server   │
│    │                                                   │        │
│    │  1. DISCOVER (broadcast)                          │        │
│    │     "Хто може дати мені IP?"                      │        │
│    │ ═══════════════════════════════════════════════▶ │        │
│    │                                                   │        │
│    │  2. OFFER                                         │        │
│    │     "Я пропоную 192.168.1.100"                    │        │
│    │ ◀═══════════════════════════════════════════════ │        │
│    │                                                   │        │
│    │  3. REQUEST (broadcast)                           │        │
│    │     "Я беру 192.168.1.100"                        │        │
│    │ ═══════════════════════════════════════════════▶ │        │
│    │                                                   │        │
│    │  4. ACKNOWLEDGE                                   │        │
│    │     "OK, 192.168.1.100 твоя на 24 години"        │        │
│    │ ◀═══════════════════════════════════════════════ │        │
│                                                                 │
│  D - Discover                                                   │
│  O - Offer                                                      │
│  R - Request                                                    │
│  A - Acknowledge                                                │
└─────────────────────────────────────────────────────────────────┘

DHCP надає

  • IP адресу
  • Маску підмережі
  • Default gateway
  • DNS серверів
  • Lease time
  • NTP серверів (опціонально)

SNMP (Simple Network Management Protocol)

┌─────────────────────────────────────────────────────────────────┐
│  SNMP — моніторинг мережевого обладнання                       │
│                                                                 │
│  ┌────────────┐          ┌────────────┐                        │
│  │  Manager   │ GET/SET  │   Agent    │                        │
│  │ (Zabbix,   │ ───────▶ │ (Router,   │                        │
│  │  PRTG)     │          │  Switch)   │                        │
│  │            │ Response │            │                        │
│  │            │ ◀─────── │            │                        │
│  │            │          │            │                        │
│  │            │ TRAP     │            │                        │
│  │            │ ◀═══════ │ (alert!)   │                        │
│  └────────────┘          └────────────┘                        │
│                                                                 │
│  Порти: 161 (agent), 162 (trap receiver)                       │
│  Версії: v1 (небезпечна), v2c, v3 (з шифруванням)              │
└─────────────────────────────────────────────────────────────────┘

NTP (Network Time Protocol)

┌─────────────────────────────────────────────────────────────────┐
│  NTP Hierarchy (Stratum)                                        │
│                                                                 │
│  Stratum 0: Atomic clocks, GPS                                 │
│       │                                                         │
│       ▼                                                         │
│  Stratum 1: Primary servers (time.nist.gov)                    │
│       │                                                         │
│       ▼                                                         │
│  Stratum 2: Secondary servers (pool.ntp.org)                   │
│       │                                                         │
│       ▼                                                         │
│  Stratum 3+: Your servers, clients                             │
│                                                                 │
│  Порт: 123/UDP                                                  │
│  Точність: мілісекунди по інтернету                            │
└─────────────────────────────────────────────────────────────────┘
# Перевірити синхронізацію
timedatectl status

# Налаштувати NTP (systemd)
timedatectl set-ntp true

# Статус chrony
chronyc tracking
chronyc sources -v

WebSocket

┌─────────────────────────────────────────────────────────────────┐
│  WebSocket — full-duplex комунікація через HTTP upgrade        │
│                                                                 │
│  Client                                            Server       │
│    │                                                 │          │
│    │  HTTP Upgrade Request                           │          │
│    │  Upgrade: websocket                             │          │
│    │  Connection: Upgrade                            │          │
│    │ ─────────────────────────────────────────────▶ │          │
│    │                                                 │          │
│    │  HTTP 101 Switching Protocols                   │          │
│    │ ◀───────────────────────────────────────────── │          │
│    │                                                 │          │
│    │  ═══════════ WebSocket Connection ═══════════  │          │
│    │             (bidirectional)                     │          │
│    │ ◀═══════════════════════════════════════════▶ │          │
│                                                                 │
│  Використання: Chat, Live updates, Gaming, Notifications      │
└─────────────────────────────────────────────────────────────────┘

Діагностика L7

HTTP/HTTPS

# Базовий запит
curl -v https://example.com

# Тільки headers
curl -I https://example.com

# POST з JSON
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Ivan"}'

# З автентифікацією
curl -u user:pass https://api.example.com/
curl -H "Authorization: Bearer TOKEN" https://api.example.com/

# Вимірювання часу
curl -w "@curl-format.txt" -o /dev/null -s https://example.com

# HTTPie (user-friendly)
http GET https://api.example.com/users

DNS

# Базовий запит
dig example.com
host example.com
nslookup example.com

# Перевірка DNS сервера
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com

# Всі записи
dig example.com ANY

# Перевірка propagation
# https://www.whatsmydns.net/

Email

# Тест SMTP
telnet smtp.example.com 25
# або
openssl s_client -connect smtp.example.com:465

# Перевірити MX
dig example.com MX

# SPF/DKIM/DMARC
dig example.com TXT | grep -E "(spf|dkim|dmarc)"

SSH

# Debug з'єднання
ssh -vvv user@server

# Перевірити ключ сервера
ssh-keyscan server.com

# Тест автентифікації
ssh -o PreferredAuthentications=publickey user@server

Wireshark фільтри для L7

http                           # Весь HTTP трафік
http.request.method == "POST"  # POST запити
http.response.code == 404      # 404 відповіді
dns                            # DNS запити
dns.qry.name contains "example"# DNS запити з "example"
ssh                            # SSH трафік
smtp                           # SMTP трафік
tls.handshake                  # TLS handshake

Типові проблеми та рішення

Проблема Симптоми Діагностика Рішення
DNS не резолвить "Name not resolved" dig domain Перевірити DNS server
HTTP 502/504 Bad Gateway/Timeout curl -v Backend не відповідає
SSL error Certificate errors openssl s_client Оновити сертифікат
SMTP rejected Email не відправляється telnet smtp 25 SPF/DKIM, relay access
SSH timeout Connection timed out ssh -vvv Firewall, port

API та веб-сервіси

REST API

┌─────────────────────────────────────────────────────────────────┐
│  REST — стандартний підхід до API                              │
│                                                                 │
│  GET    /users          — список користувачів                  │
│  GET    /users/123      — конкретний користувач                │
│  POST   /users          — створити користувача                 │
│  PUT    /users/123      — оновити користувача                  │
│  DELETE /users/123      — видалити користувача                 │
│                                                                 │
│  Stateless, Resource-based, HTTP methods                       │
└─────────────────────────────────────────────────────────────────┘

GraphQL

┌─────────────────────────────────────────────────────────────────┐
│  GraphQL — query language для API                              │
│                                                                 │
│  POST /graphql                                                  │
│  {                                                              │
│    user(id: 123) {                                             │
│      name                                                       │
│      email                                                      │
│      posts {                                                    │
│        title                                                    │
│      }                                                          │
│    }                                                            │
│  }                                                              │
│                                                                 │
│  Один endpoint, клієнт вибирає потрібні поля                   │
└─────────────────────────────────────────────────────────────────┘

gRPC

┌─────────────────────────────────────────────────────────────────┐
│  gRPC — high-performance RPC framework (Google)                │
│                                                                 │
│  • Protocol Buffers (бінарна серіалізація)                     │
│  • HTTP/2 (multiplexing)                                        │
│  • Streaming (client, server, bidirectional)                   │
│  • Code generation                                              │
│                                                                 │
│  Використання: Microservices, Mobile backends                  │
└─────────────────────────────────────────────────────────────────┘

Підсумок

Прикладний рівень забезпечує:

  1. HTTP/HTTPS — веб-комунікація
  2. DNS — резолюція доменних імен
  3. SSH — безпечний віддалений доступ
  4. Email — SMTP, IMAP, POP3
  5. DHCP — автоматична конфігурація мережі
  6. NTP — синхронізація часу

Це рівень, з яким безпосередньо взаємодіють користувачі та додатки.


Див. також

Шлях: networking/basics/osi-7-application.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications