🎯 Вступ до мережевих протоколів
Мережеві протоколи - це набір правил та стандартів, що визначають, як пристрої обмінюються інформацією через мережу. Вони забезпечують надійну та ефективну комунікацію між різними системами, дозволяючи створювати складні мережеві архітектури, такі як Інтернет.
🔑 Основні принципи:
Стандартизація: Єдині правила для всіх пристроїв
Модульність: Різні рівні для різних функцій
Надійність: Гарантії доставки та цілісності даних
Безпека: Захист від несанкціонованого доступу
🏗️ Модель OSI та TCP/IP
📊 Модель OSI (7 рівнів)
HTTP, FTP, SMTP, DNS
Функція: Інтерфейс між користувачем та мережею
SSL/TLS, JPEG, MPEG
Функція: Шифрування, стиснення, форматування
RPC, SQL, NetBIOS
Функція: Управління сеансами комунікації
TCP, UDP
Функція: Надійна доставка даних
IP, ICMP, ARP
Функція: Маршрутизація та логічна адресація
Ethernet, WiFi, PPP
Функція: Фізична адресація та виявлення помилок
Кабель, радіосигнали
Функція: Передача бітів по середовищу
🔗 Модель TCP/IP (4 рівні)
HTTP, FTP, SMTP, DNS, SSH
TCP, UDP
IP, ICMP, IGMP
Ethernet, WiFi, DSL
🌍 Протокол IP (Internet Protocol)
📡 IPv4
Структура IPv4 заголовка
Версія протоколу IP (4)
Довжина заголовка в 32-бітних словах
Пріоритет та тип сервісу
Загальна довжина пакету
IP адреса відправника
IP адреса отримувача
🔢 Класи IP адрес
1.0.0.0 - 126.255.255.255
Підмережа: /8
Хоста: 16,777,214
128.0.0.0 - 191.255.255.255
Підмережа: /16
Хоста: 65,534
192.0.0.0 - 223.255.255.255
Підмережа: /24
Хоста: 254
🔮 IPv6
Переваги IPv6
Розширена адресна простір: 128 бітів замість 32
Автоконфігурація: SLAAC (Stateless Address Autoconfiguration)
Вбудована безпека: IPSec обов'язковий
Спрощений заголовок: Менше полів для швидшої обробки
Мобільність: Краща підтримка мобільних пристроїв
Формат IPv6 адреси
// Приклади IPv6 адрес: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 2001:db8:85a3::8a2e:370:7334 // Скорочена форма ::1 // Loopback (localhost) :: // Всі нулі
🚦 TCP (Transmission Control Protocol)
🔗 Встановлення з'єднання
Three-Way Handshake
SYN: Клієнт надсилає SYN пакет з початковим номером послідовності
SYN-ACK: Сервер відповідає SYN-ACK пакетом з власним номером послідовності
ACK: Клієнт підтверджує отримання SYN-ACK
📊 Керування потоком та переповненням
Контролює швидкість передачі даних, щоб уникнути переповнення буферів отримувача.
Механізм: Window Size у TCP заголовку
Контролює швидкість передачі для уникнення переповнення мережі.
Алгоритми: Slow Start, Congestion Avoidance, Fast Recovery
🔄 Алгоритми керування переповненням
Починає з малого розміру вікна та подвоює його після кожного успішного ACK.
Ціль: Швидко досягти доступної пропускної здатності
Повільно збільшує розмір вікна після досягнення порогу.
Формула: cwnd += 1/cwnd за кожний RTT
Швидко відновлюється після втрати пакетів без повернення до Slow Start.
Умова: При втраті одного пакету
// Three-Way Handshake: Client → Server: SYN (seq=x) Server → Client: SYN-ACK (seq=y, ack=x+1) Client → Server: ACK (seq=x+1, ack=y+1) // З'єднання встановлено!
⚡ UDP (User Datagram Protocol)
📦 Характеристики UDP
Не встановлює з'єднання перед передачею даних
Не гарантує доставку або порядок пакетів
Мінімальний overhead порівняно з TCP
Мінімальний заголовок (8 байтів)
🎯 Застосування UDP
Швидкі запити на резолюцію імен
Реальний час, толерантність до втрат
Низька затримка важливіша за надійність
Автоматичне отримання IP адрес
🌐 HTTP (Hypertext Transfer Protocol)
📡 HTTP/1.1
Основні особливості HTTP/1.1
Persistent Connections: Перевикористання з'єднань
Pipelining: Множинні запити в одному з'єднанні
Chunked Transfer Encoding: Передача даних частинами
Cache Control: Кешування ресурсів
🚀 HTTP/2
Множинні потоки в одному з'єднанні
Сервер може надсилати ресурси проактивно
Стиснення заголовків (HPACK)
Бінарний формат замість текстового
⚡ HTTP/3
Основні нововведення HTTP/3
QUIC протокол: Основа на UDP замість TCP
Вбудована безпека: TLS 1.3 інтегрований
Швидше встановлення з'єднання: 0-RTT та 1-RTT
Кращий multiplexing: Без блокування потоків
🔒 SSL/TLS (Secure Sockets Layer/Transport Layer Security)
🛡️ Процес рукостискання TLS
TLS 1.3 Handshake
Client Hello: Клієнт надсилає підтримувані шифри та ключі
Server Hello: Сервер вибирає шифри та надсилає сертифікат
Key Exchange: Обмін ключами (ECDHE або DHE)
Finished: Підтвердження завершення рукостискання
🔐 Шифрування та аутентифікація
AES-256, ChaCha20 для шифрування даних
RSA, ECDSA для аутентифікації та обміну ключами
SHA-256, SHA-384 для цілісності
Цифрові сертифікати X.509
🌍 DNS (Domain Name System)
🏗️ Архітектура DNS
13 кореневих серверів (A-M)
.com, .org, .uk, .ua
Сервери доменних імен
Локальні DNS сервери
📊 Типи DNS записів
IPv4 адреса для доменного імені
Приклад: example.com → 192.168.1.1
IPv6 адреса для доменного імені
Приклад: example.com → 2001:db8::1
Псевдонім для іншого доменного імені
Приклад: www.example.com → example.com
Поштовий сервер для домену
Приклад: example.com → mail.example.com
🎯 Практичні застосування
🌐 Веб-розробка
HTTP/HTTPS, REST API, WebSocket
📧 Електронна пошта
SMTP, POP3, IMAP протоколи
📁 Файлові передачі
FTP, SFTP, TFTP протоколи
🎮 Інтернет речей
MQTT, CoAP для IoT пристроїв
📚 Рекомендована література
"Computer Networks" - Andrew Tanenbaum, David Wetherall
"TCP/IP Illustrated" - W. Richard Stevens
"HTTP: The Definitive Guide" - David Gourley, Brian Totty
"DNS and BIND" - Cricket Liu, Paul Albitz
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Hash Function Avalanche Visualizer і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Hash Function Avalanche Visualizer