1. Знайомство з OSI

Коли ARPA-мережа тільки розроблялася, дуже хотілося зробити її якомога розумнішою. Але чим складніша мережа, тим складніше її розвивати та підтримувати. Як рішення було запропоновано поділити всі функції мережі на логічні верстви (рівні).

Модель функціонування мережі називається мережевою моделлю базової еталонної моделі взаємодії відкритих систем ISO/OSI. Коротко – модель OSI (Open Systems Interconnection).

Загалом у такій моделі 7 рівнів. Взаємодія рівнів суворо стандартизована та зведена до мінімуму. Нижній рівень поняття не має про існуваннч вищих рівнів та їх улаштування.

Найнижчий рівень вміє просто надсилати біти. Навіть не передавати, а саме надсилати. Він поняття не має, дійдуть вони чи ні. Послав і забув.

Вищий рівень оперує вже групами біт — кадрами і трохи знає про фізичне влаштування мережі, розуміє MAC-адреси, тощо.

Наступний рівень – пакетний. Він ще розумніший і вміє оперувати IP-адресами мережі. І так далі.

Навіщо це все потрібне? Для максимізації гнучкості.

Уяви, що кожен рівень – це Java-інтерфейс, і в нього може бути кілька різних реалізацій. Тут те саме. На фізичному рівні ти можеш пересилати біти через дріт, слати повітрям (Wi-Fi), відправляти через супутник, а всі інші рівні навіть знати про це не будуть. І все працюватиме, як і планувалося.

2. Стек протоколів OSI

Більш детально стек протоколів ти можеш вивчити за посиланням.

Але якщо ти не системний адміністратор, така деталізація протоколів тобі ні до чого. Цікавішим може бути вивчення стека протоколів TCP (Transmission Control Protocol)/IP (Internet Protocol).

Три верхніх рівня в моделі OSI, тобто прикладний рівень, рівень подання та сеансовий рівень, не розрізняють окремо в моделі TCP/IP, яка має прикладний рівень над транспортним рівнем:

Розподіл протоколів за рівнями моделі OSI

TCP/IP OSI
Прикладний Прикладний HTTP, SMTP, SNMP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP
Представлення XDR, AFP, TLS, SSL
Сеансовий ISO 8327 / CCITT X.225, RPC, NetBIOS, PPTP, L2TP, ASP
Транспортний Транспортний TCP, UDP, SCTP, SPX, ATP, DCCP, GRE
Мережевий Мережевий IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP
Канальний Канальний Ethernet, Token ring, HDLC, PPP, X.25, Frame Relay, ISDN, ATM, SPB, MPLS, ARP/td>
Фізичний електричні дроти, радіозв'язок, волоконно-оптичні дроти, інфрачервоне випромінювання

3. Стек протоколів TCP/IP

Стек протоколів TCP/IP включає чотири рівні:

  • Прикладний рівень (Application Layer)
  • Транспортний рівень (Transport Layer)
  • Міжмережевий рівень (Мережевий рівень) (Internet Layer)
  • Канальний рівень (Network Access Layer)

Протоколи цих рівнів повністю реалізують усі функціональні можливості OSI. На стеку протоколів TCP/IP побудовано всю взаємодію користувачів в IP-мережах.

Стек протоколів TCP/IP є незалежним від фізичного обладнання, завдяки чому, зокрема, забезпечується повністю прозора взаємодія між провідними та бездротовими мережами.

На прикладному рівні (Application layer) працює більшість мережевих програм.

Прикладний рівень

Для взаємодії програм є високорівневі протоколи обміну інформацією. Наприклад, браузери працюють за протоколом HTTP, пошта відправляється за протоколом SMTP, Телеграм працює за власним зашифрованим протоколом.

Але приватні протоколи нам не дуже цікаві. Найчастіше ти стикатимешся з масовими протоколами, як-от ftp-клієнт для протоколу FTP (передача файлів), SSH (безпечне з'єднання з віддаленою машиною), DNS (перетворення символьних імен в IP-адресаи) та багато інших.

Майже всі ці протоколи працюють поверх протоколу TCP, хоча деякі для прискорення роботи працюють за UDP (User Datagram Protocol). Але, що важливо, ці протоколи мають порти за замовчуванням. Приклад:

  • 20 FTP на TCP-порт 20 (для передачі даних) та 21 (для керуючих команд)
  • 22 – SSH
  • 23 – Telnet
  • 53 – запити DNS
  • 80 – HTTP
  • 443 – HTTPS

Ці порти визначені Агентством із виділення імен та унікальних параметрів протоколів (IANA).

Є ще кілька популярних протоколів прикладного рівня: Echo, Finger, Gopher, HTTP, HTTPS, IMAP, IMAPS, IRC, NNTP, NTP, POP3, POPS, QOTD, RTSP, SNMP, SSH, Telnet, XDMCP.

Транспортний рівень

Протоколи транспортного рівня створені для вирішення проблеми гарантованої доставки повідомлень.

Повідомлення (пакет даних) може бути надіслано та втрачено десь у мережі. У цьому випадку на плечі транспортного рівня лягає завдання моніторингу таких ситуацій та повторного надсилання повідомлення, якщо потрібно.

Ще одним важливим завданням протоколу транспортного рівня є контроль за порядком надходження повідомлень. Часто буває так, що повідомлення були надіслані в одному порядку, а прийшли в іншому. І якщо зібрати з таких шматочків початкове велике повідомлення, вийде нісенітниця.

Щоб такого не було, транспортний рівень або нумерує повідомлення, або не надсилає нове, доки не отримав підтвердження отримання попереднього. Протоколи автоматичної маршрутизації, логічно представлені в цьому рівні (оскільки працюють поверх IP), насправді є частиною протоколів мережного рівня.

Протокол TCP – "гарантований" транспортний механізм із попереднім встановленням з'єднання, який надає застосунку надійний потік даних, дає впевненість у безпомилковості даних, що отримуються, перезапитує дані у разі втрати та усуває дублювання даних.

TCP дозволяє регулювати навантаження на мережу, а також зменшувати час очікування даних під час передачі на великі відстані. Також TCP гарантує, що отримані дані надсилалися точно в такій послідовності. У цьому його основна відмінність від UDP.

Протокол UDP – це протокол передачі датаграм без встановлення з'єднання. Також його називають протоколом “ненадійної” передачі, у сенсі неможливості впевнитись у доставці повідомлення адресату, а також можливого перемішування пакетів. У програмах, які потребують гарантованої передачі даних, використовується протокол TCP.

UDP зазвичай використовується в таких програмах як потокове відео та комп'ютерні ігри, де допускається втрата пакетів, а повторний запит є ускладненим або не виправданим, або в програмах типу запит-відповідь (наприклад, запити до DNS), де встановлення з'єднання займає більше ресурсів, ніж повторне відправлення.

І TCP, і UDP використовують для визначення протоколу верхнього рівня число, яке називають портом.