
Третя частина серії статей розглядає процеси інкапсуляції та декапсуляції даних у мережевій моделі OSI. Описується, як дані проходять через різні рівні, стаючи все більш деталізованими, та розкривається поняття PDU, щоб допомогти читачам краще зрозуміти функціонування мережевого протоколу.
Дисклеймер: Ця стаття створена з ознайомлювальною метою. У ній пояснюється процес інкапсуляції даних та взаємодія рівнів моделей OSI і TCP/IP, щоб допомогти читачам краще зрозуміти принципи передачі інформації в мережах і побудову сучасних комунікаційних систем.
Інкапсуляція – це процес передачі даних з верхнього рівня додатків вниз (по стеку протоколів) до фізичного рівня, щоб бути переданими за мережевим фізичним середовищем (вита пара, оптичне волокно, Wi-Fi та ін.). Причому на кожному рівні різні протоколи додають до даних, що передаються, свою інформацію. Нагадаємо, що мережева модель OSI складається з 7 рівнів (рівень додатків, рівень вистави, сеансовий, транспортний, мережевий, канальний та фізичний). Всі мережні пристрої працюють відповідно до моделі OSI, лише деякі використовують усі 7 рівнів, а інші менше. Це дозволяє обробляти дані в кілька разів швидше.
Наприклад, Ваш комп’ютер використовує всі 7 рівнів, маршрутизатор – 3 нижні рівні, комутатор – лише 2 нижні рівні.
На малюнку Ви бачите взаємодію двох комп’ютерів, між якими є маршрутизатор. Комп’ютерами PC1 і PC2 може бути як домашні комп’ютери, і сервера. Маршрутизатор, як і говорилося вище, працює лише на трьох рівнях моделі, їх (трьох рівнів) достатньо, щоб прокласти маршрут у будь-якій мережі. Тепер перейдемо до процесу інкапсуляції, декапсуляції.
Найпростіше буде розібрати ці процеси інкапсуляції та декапсуляції на прикладі. Припустимо, Ви захотіли подивитися якусь веб-сторінку, ввели адресний рядок браузера адресу сайту і натиснули кнопку Enter. Після цього браузер повинен надіслати запит на сервер (на якому зберігається ця веб-сторінка) з метою отримання даних. Ось якраз на цьому етапі введена Вами адреса сайту є даними, які повинні передатися на сервер у вигляді запиту.
Ці дані опускаються з рівня додатків на рівень подання даних. На цьому рівні Ваш комп’ютер перетворить рядок введеного тексту (адреси) у формат, зручний для передачі далі на нижній рівень.
Далі дані (вже не текст) надходять на сеансовий рівень, але на ньому (в даному випадку) нам не потрібно використовувати протоколи (цього рівня), і тому дані передаються далі.
Транспортний рівень отримує дані та визначає, що далі вони мають бути передані, використовуючи протокол TCP. Перед передачею транспортний рівень розбиває дані на шматочки даних і додає до кожного шматочка заголовок, в якому міститься інформація про логічні порти комп’ютерів (з якого дані були надіслані (наприклад 1223) і для якого призначаються (у даному випадку 80)). На транспортному рівні ці шматочки даних із заголовком називаються сегментами. Сегменти передаються далі вниз до мережного рівня.
Мережевий рівень, отримуючи кожен сегмент, поділяє його ще більш маленькі частини і до кожної частини додає свій заголовок. У заголовку мережного рівня вказуються логічні мережеві адреси відправника (Ваш комп’ютер) та одержувача (Сервер).
Логічні мережеві адреси – це всім відомі IP-адреси, ще напевно незрозуміло, що позначають цифри та точки в них, але незабаром, цей пробіл у знаннях заповнить відповідна інформація 😉
Ці маленькі шматочки даних вже з кількома заголовками (на верхніх рівнях теж додаються специфічні заголовки) на мережевому рівні називаються пакетами, які передаються на канальний рівень.
На канальному рівні пакети поділяються на ще більш маленькі шматочки даних, і до них крім знову заголовка, що додається, тільки вже канального рівня, додається ще й трейлер. На цьому рівні в заголовках містяться фізичні адреси пристроїв – передавального та для кого вони призначаються, а в трейлері знаходиться обчислена контрольна сума, код (інформація), який використовується для визначення цілісності даних.
Фізичні адреси пристроїв – це MAC-адреси. Ці дуже дрібні шматочки даних називаються кадрами або кадрами (одно й теж). Далі кадри передаються на фізичний рівень.
На фізичний рівень кадри передаються вже у вигляді сигналів бітів і йдуть через інші мережеві пристрої до пункту призначення.
Весь процес перетворення даних (з верхнього рівня) сигнали (на нижній рівень) називається інкапсуляцією. Подивіться на малюнок нижче, там представлена загальна схема інкапсулювання з верхнього рівня на нижній:
Далі сигнали, проходячи через кілька мережевих пристроїв (у нашому випадку це маршрутизатор і комутатор), доходять до одержувача, в даному випадку до сервера (По всіх картинках можна натиснути і вони збільшиться).
Мережева карта сервера приймає біти (фізично) і перетворює їх у кадри (для канального рівня). Канальний рівень у зворотній послідовності повинен перетворити кадри в пакети (для мережного рівня), лише перед перетворенням рівень спочатку дивиться на МАС-адресу (фізичну адресу) одержувача, він повинен збігатися з MAC-адресою мережевої карти, інакше кадр буде знищений. Потім канальний рівень (у разі збігу MAC-адреси) вираховує суму отриманих даних та порівнює отримане значення зі значенням трейлера. Нагадаю, що значення трейлера обчислювалося на Вашому комп’ютері, а тепер воно після передачі по проводах порівнюється з отриманим значенням на сервері і якщо вони збігаються, кадр перетворюється на пакет. Якщо код перевірки цілісності даних відрізняється – кадр негайно знищується.
На мережному рівні відбувається перевірка логічної адреси (IP-адреси), у разі успішної перевірки пакет перетворюється на сегмент, потрапляючи на транспортний рівень.
На транспортному рівні перевіряється інформація із заголовка, що це за сегмент, який використовується протокол, для якого логічного порту призначається і т.п. Протокол використовувався TCP, тому на Ваш комп’ютер надсилається повідомлення про прибуття сегмента. Як говорилося вище (коли дані упаковували в сегмент), у тому випадку використовувався 80 порт призначення. Т.к. На веб-сервері якраз відкритий цей порт, дані передаються далі на верхній рівень.
На верхніх рівнях запит (введена адреса сайту) обробляється веб-сервером (перевіряється, чи доступна запитувана веб-сторінка).
Цей процес перетворення сигналів із дроту в дані називається процесом декапсуляції.
Після того, як сторінку буде знайдено на сервері, вона (текст, зображення, музика) перетворюється на цифровий код, зручний для інкапсулювання. Великий обсяг даних ділиться частини і надходить нижче рівень – транспортний. Там шматочок даних перетворюється на сегмент, тільки порт призначення тепер буде той, з якого ви посилали (згадуйте, 1223). Сегмент перетворюється на пакет, у заголовку якого міститься IP-адреса вашого комп’ютера і переходить нижче. На канальному рівні пакет у свою чергу перетворюється на кадри і додається заголовок та трейлер. У заголовок міститься МАС-адреса призначення (в даному випадку це буде адреса шлюзу), а в трейлер код перевірки на цілісність даних. Далі мережна карта надсилає кадри у вигляді сигналів кабелем у напрямку до Вашого комп’ютера.
Так і відбувається мережевий обмін даними, інкапсуляція та декапсуляція.
Ви познайомилися з еталонними мережевими моделями OSI, TCP/IP (DOD), розібралися з процесами інкапсуляції (encapsulation) та декапсуляції (decapsulation). Також з’ясували, що різні мережні пристрої працюють на різних рівнях.