Протоколи мережного рівня є ключовими компонентами комунікаційних мереж, відповідальними за передачу даних між різними пристроями у мережі. У світі комп’ютерних технологій є безліч різних протоколів мережного рівня, кожен з яких виконує свої функції та має свої особливості. Аналіз цих протоколів стає важливим завданням для інженерів з мережевої безпеки, адміністраторів мереж та розробників. Wireshark і tcpdump – це потужні інструменти для аналізу мережевого трафіку, які дозволяють здійснювати моніторинг та запис пакетів даних, що передаються в мережі. Вони дозволяють ретельно вивчати протоколи мережного рівня, виявляти помилки, аналізувати зв’язки між пристроями та багато іншого.
Ви дізнаєтеся про різноманітність протоколів, їх функції та особливості, а також про те, як використовувати ці інструменти для виявлення проблем, оптимізації мережі та забезпечення її безпеки. Навички аналізу протоколів мережного рівня є вельми цінними в сфері інформаційної безпеки та мережевого адміністрування. Цей текст допоможе вам глибше розібратися у важливості цих протоколів та навчитися ефективно використовувати інструменти аналізу для досягнення оптимальної продуктивності та безпеки вашої мережі. Протоколи мережного рівня у Wireshark і tcpdump є фундаментальними складовими сучасних мереж і грають критичну роль у забезпеченні надійного обміну даними між комп’ютерами та пристроями. Для досягнення ефективної роботи мережі та забезпечення її безпеки, важливо розуміти, як працюють ці протоколи та як вони впливають на передачу даних. Аналіз протоколів мережного рівня є важливою частиною роботи інженерів мережевої безпеки та адміністраторів мереж. Він дозволяє виявляти аномалії, вразливості та помилки в мережі, а також оптимізувати її роботу. До цих протоколів належать такі важливі стандарти, як IPv4, IPv6, ICMP, IGMP та багато інших. Крім того, існують спеціалізовані протоколи для різноманітних мережевих послуг, таких як VPN, VoIP та безпека мережі.
Щоб виявити аномальний мережевий трафік, включаючи діагностику затримки мережі, виявлення шкідливих програм або повне пом’якшення загроз безпеці, потрібно знати, що таке звичайний мережевий трафік. У цій главі і наступних двох главах пояснюється, як працює мережевий трафік як на пакетному рівні, так і на всіх рівнях моделі OSI знизу вгору. Кожна розглянута тут частина мережевого протоколу має принаймні один файл перехоплення, пов’язаний з ним, який можна завантажити і використовувати безпосередньо.
У цій главі мова піде про протоколи мережевого рівня, які є основним виконавчим механізмом для обміну даними по мережі. До них відносяться ARP, IPv4, IPv6, ICMP і ICMPv6.
Ця та наступні дві глави, присвячені мережевим протоколам, безумовно, є одними з найважливіших у цій книзі. Пропускати матеріал в цих розділах все одно, що намагатися приготувати святкову вечерю, не нагріваючи духовку. Якщо ви вже знаєте, як працюють мережеві протоколи, перегляньте ці глави хоча б коротко, щоб освіжити пам’ять про структуру пакетів в кожному з них.
Логічні та фізичні адреси використовуються для обміну даними по мережі. Зокрема, логічні адреси використовуються для обміну даними по декількох мережах між опосередковано підключеними пристроями. А фізичні адреси спрощують обмін даними в одному сегменті мережі між пристроями, які безпосередньо з’єднані між собою через комутатор. Як правило, обидва ці типи адресації повинні спілкуватися, щоб відбувався нормальний зв’язок через мережу.
Як приклад розглянемо сценарій, коли потрібно перенести дані на пристрій, підключений до мережі. Цим пристроєм може бути сервер з певним портом або робоча станція, з якою потрібно встановити зв’язок з пристроєм у мережі. Додаток, який використовується для ініціалізації зв’язку, вже знає про віддалену адресу IP хоста (через службу DNS, як пояснюється в розділі 9). Це означає, що система повинна мати все необхідне для генерації даних з третього по сьомий рівень в пакеті, який необхідно передати. І тільки частина даних, необхідних на даний момент, – це інформація другого канального рівня, що містить MAC-адресу цільового хоста.
MAC-адреси необхідні, оскільки комутатор, що підключає пристрої в мережі, використовує асоціативну таблицю пам’яті, в якій вказані MAC-адреси всіх пристроїв і відповідні їм номери портів. Коли пасажир отримує мережевий трафік, призначений для пристрою з певною MAC-адресою, він використовує цю таблицю для визначення номера порту, через який трафік повинен бути переадресований. Якщо MAC-адреса одержувача невідомий, то передавальний пристрій спочатку буде шукати цю адресу в своєму кеші. А якщо потрібної адреси немає в кеші, то його можна отримати шляхом додаткового обміну даними по мережі.
Процес, який використовується в мережах TCP/1P (IPv4) для перетворення 1P-адреси в MAC-адресу, називається протоколом вирішення адрес (ARP). Це визначено в RFC 826. У процесі трансляції адрес ARP використовується тільки два типи пакетів: ARP-0Tap (рис. 7.1).
Комп’ютер-відправник надсилає таке повідомлення: «Привіт усім. Моя адреса IP – 192.168. 0 .101 і моя MAC-адреса f2 :f2 :f2 :f2 :f2 :f2 :f2. Мені потрібно щось надіслати комусь, хто має адресу IP 192 .168. 0 . 1, але я не знаю його фізичної адреси. Чи може той, хто має цю адресу IP, сказати мені свою MAC-адресу?”
Цей пакет відправляється в режимі трансляції і тому приймається на кожному пристрої в сегменті мережі. Всі пристрої, які не мають зазначеної адреси IP, повинні проігнорувати запит, згаданий вище. А пристрій із зазначеним IР-адресою має відправити наступну відповідь ARP: «Привіт передавальному пристрою! Я саме той, кого ви шукаєте за IP-адресою 192 .168 . Про. 1. моя MAC-адреса 02 : f2 : 02 : P : 02 : f2″
Як тільки процес адресної трансляції буде завершений, передавальний пристрій оновить свою кеш-пам’ять і помістить в неї відображення МАС і IР адрес приймаючого пристрою і почне передачу даних. Спостерігаючи за цим процесом. У дії можна зрозуміти, як саме це працює. Але перш ніж перейти до конкретних прикладів, давайте розглянемо структуру заголовка ARP-пакета.
Як показано на рис. 7.2, ARP-пакет складається з заголовка, що містить описані нижче поля.
Тип обладнання (Hardware Tour). Тип середовища, що використовується в другому шарі для передачі даних. Як правило, це мережа Ethernet (тобто тип 1).
Тип протоколу (Protocol Touré). Мережевий протокол верхнього рівня, який використовується для передачі ARP-3anpoca. Як правило, це IPv4 (0x0800).
Довжина апаратної адреси. Довжина фізичної адреси, яку потрібно використовувати (в октетах або байтах). Для мережі Ethernet його значення дорівнює 6.
Довжина адреси протоколу. Довжина логічної адреси для використання з використанням протоколу зазначеного типу (в октетах або байтах). Для IPv4 його значення дорівнює 4.
Операція. Функція пакета: код 1 для запиту або код 2 для відповіді.
Адреса обладнання відправника. Фізична адреса, присвоєна відправнику пакетів.
Адреса протоколу відправника. Адреса протоколу, присвоєний відправнику пакета.
Фізична адреса одержувача (адреса цільового обладнання). Фізична адреса одержувача для пошуку. Всі нулі вказані. Адреса цільового протоколу: передбачувана адреса одержувача пакета, що використовує протокол верхнього рівня.
Тепер відкрийте файл перехоплення .rsarpd з роздільною здатністю arp, щоб побачити процес перекладу адрес в дії. Розглядаючи цей процес, зупинимося на кожній упаковці окремо.
Файл перехоплення: arp _resolution.pcapng
Щоб переконатися, що це дійсно широкомовний пакет, досить перевірити заголовок Ethernet на панелі Packet Details програми Wireshark. Адреса одержувача цього пакета ff : ff : ff : ff : ff : ff A. Це адреса трансляції мережі Ethernet, і все, що відправляється по ньому, буде отримано всіма пристроями на поточному сегменті мережі. Адреса відправника цього пакета знаходиться в і, по суті, є MAC-адресою передавального пристрою.
Беручи до уваги розглянуту тут структуру заголовка пакета ARP, можна дізнатися, що насправді маршрутизується в мережах Ethernet по IPv4. Він містить адресу IP. (192.168.0.114) і MAC-адреса (00 : 16 : ce : be : В: 24) відправника, а також IP адреса (192 .168 . 0 . 1) одержувача. При цьому MAC-адреса одержувача, який ви хочете дізнатися, невідомий, а тому він встановлений на 00 : 00 : 00 : 00 : 00 : 00 : 00 : 00 : 00 : 00
Відповідь на початковий запит (рисунок 7.4) тепер містить адресу одержувача, що відповідає MAC-адресою відправника з першого пакета. Заголовок такого ARP-відповідь виглядає так само, як і у ряду винятків, перерахованих нижче.
Код операції пакета тепер 0x0002, що позначає ARP-відповідь, а не запит.
Інформація про адресу вказується в зворотному порядку: спочатку MAC і IP адреси відправника, а потім MAC і IP адреси одержувача.
Але найголовніше, що тепер ми маємо всю необхідну інформацію. Це означає, що ми визначили MAC-адресу (00 : 13 : ba) хоста, розташованого на 192 .168 . 0. 1.
Файл Nepexaamaarp Зазвичай слово «безоплатний» має негативний відтінок. Але іноді невиправдане застосування протоколу АКП все ж дає позитивний результат, і в цьому випадку його пакети називають сайофащенним.
IР-адреса пристрою часто може змінюватися. При цьому відбувається відображення IP- і MAC-адрес в кеш-пам’яті вузлів мережі може бути недійсним. Для запобігання виникаючих помилок при зв’язку по мережі передається самонаправлення, яке змушує будь-який приймаючий пристрій оновлювати кеш-пам’ять новим відповідністю між IP і MAC-адресами (рис. 7.5). Фактично цей пакет повідомляє про зміни в протоколі ARP, сталося з певним господарем.
Поява самоперетворення може відбуватися в самих різних випадках. Причому найчастіше це відбувається в зв’язку зі зміною IР адреси. Щоб переконатися в цьому, відкрийте файл arp_gratuitous .pcapng, який містить один пакет (рисунок 7.6), так як це все, що передається в самоспрямованої передачі по протоколу ARP.
Основне призначення мережевих протоколів третього рівня моделі OSI – забезпечити зв’язок для обміну даними між вузлами, розташованими в різних мережах. Як було показано вище, MAC-адреси використовуються для обміну даними в одній мережі на другому рівні. Аналогічним чином адреси третього рівня використовуються для обміну даними між різними мережами. Для цього можна використовувати кілька мережевих протоколів, але найпоширенішим серед них є IP (Internet Protocol – Протокол Інтернету), який на даний момент випускається в двох варіантах: IP версії 4 і IP версії 6. Отже, давайте почнемо з розгляду Інтернет-протоколу версії 4 (IPv4), як визначено в RFC 791.
Щоб зрозуміти, як працює IPv4, потрібно знати, як мережевий трафік перетікає між мережами. IPv4 служить основним виконавчим механізмом в процесі зв’язку і в кінцевому підсумку відповідає за передачу даних між пристроями, незалежно від розташування кінцевих точок встановлюваної зв’язку.
Проста мережа, в якій всі пристрої підключені через концентратори або комутатори, називається локальною мережею (LAN). Якщо потрібно підключити дві локальні мережі, це можна зробити за допомогою маршугайзера. Складні shogs можуть складатися з тисяч локальних мереж, з’єднаних по всьому світу тисячами маршугізаторів. Сам Інтернет складається з мільйонів локальних мереж і маршрутизаторів.
У протоколі IPv4 адреси – це 32-розрядні номери, призначені адміністраторами мережі, які однозначно ідентифікують пристрої, підключені до мережі. Навряд чи комусь буде комфортно запам’ятовувати послідовність одиниць і нулів довжиною 32 біта, а тому IP-адреси записуються за допомогою чотирикомпонентної (або десяткової) системи числення через тачки.
У системі числення з десятковими крапками кожен з чотирьох наборів одиниць і нулів, що складають адресу IP, перетворюється в десяткове число в діапазоні від 0 до 255 в форматі A.B.C.D (РИС. 7.7). Як приклад розглянемо IP-адреса 11000000 10101000 000000000 00000001 в первісному двійковому вигляді. Очевидно, що запам’ятати або записати IР-адресу в такому вигляді дуже складно. А в системі числення з десятковими крапками цю адресу можна представити як 192 .168. 0 . 1
Адреса IP складається з двох частин, які ідентифікують як саму мережу, так і вузол (або хост), розташований у цій мережі. У мережевій частині задається номер LAN, до якої підключено пристрій, а в вузлової – номер самого пристрою в цій мережі. Не завжди можна однозначно визначити, до якої частини (мережі або вузла) відносяться компоненти адреси IP. Тому IP-адреси забезпечуються допоміжними адресними відомостями, званими маскою мережі, або (найчастіше) маскою підмережі.
Маска мережі дозволяє дізнатися, до якої частини (мережі або вузла) відносяться компоненти IР-адреси. Довжина маски мережі також дорівнює 32 бітам, де кожен біт з встановленою одиницею позначає складову адреси IP, що відноситься до мережевої частини. А решта біти з нулями безліччю відносяться до вузлової частини.
IP-адреси відправника і одержувача є основними компонентами заголовка пакета IPv4, але це далеко не вся інформація про IP, яку можна знайти в пакеті. ЗаголовокIP досить складний в порівнянні з розглянутим раніше заголовком пакета ARP. Він містить безліч додаткових полів з інформацією, яка допомагає протоколу IP виконувати свої функції. Як показано на рис. 7.9, заголовок пакета IPv4 складається з наступних полів.
Значення терміну служби (Tirne to Live psarpd і ip ttl dest. rsarpd TTL) визначає кількість часу, який може пройти, або максимальну кількість маршрутизаторів, які пакет може пройти, перш ніж він буде визнаний недійсним по IPv4. Термін служби визначається на момент створення пакета і зазвичай зменшується на одиницю, коли пакет пересилається (NL на наступний маршрутизатор. Так, якщо термін служби пакета дорівнює 2, то перший маршрутизатор, до якого він дотягнеться, скоротить цей час до 1 і передасть пакет на другий маршрутизатор. А це, в свою чергу, скоротить час життя пакета до нуля, і якщо кінцевого одержувача пакета немає в поточній мережі, потім такий пакет анулюється (рис. 7.10).
Чому важливо пам’ятати про термін служби посилок? Як правило, він представляє інтерес тільки з точки зору часу, необхідного для переходу пакета від його відправника до одержувача. Уявіть, однак, пакет, який повинен досягти хоста через Інтернет після проходження через десятки маршрутизаторів. У якийсь момент цей страх може зіткнутися з неправильно налаштованим маршрутизатором, через що пакет збивається від своєї кнопки до кінцевого пункту призначення. У подібному випадку неправильно налаштований маршугайзер здатний зробити багато речей, які могли порушити нормальну роботу мережі. Зокрема, він може відправляти пакет по мережі в нескінченному циклі.
Нескінченний цикл може викликати найрізноманітніші ускладнення, але, як правило, призводить до збою як окремої програми, так і всієї операційної системи. Теоретично те ж саме може статися і з пакетами в мережі, які будуть циклічно переміщатися між маршугізаторами. І в міру зростання кількості таких пакетів в мережі її пропускна здатність буде знижуватися до тих пір, поки не настане умова відмови в обслуговуванні. Щоб цього уникнути, був введений термін експлуатації упаковок.
Давайте розглянемо конкретний приклад нюхання пакетів у Wireshark. IP-протокол використовується для доставки пакетів в мережевому протоколі ICMP, розглянутому далі в цьому розділі. Про це можна судити, розгорнувши відповідну частину заголовка IP на панелі Packet Details. Як показано на рис. 7.11.
Основне призначення ехо-запиту 110 протоколу ICMP – перевірити зв’язок між пристроями. Зокрема, дані надсилаються від одного хоста до іншого у вигляді запиту, а хост, що їх приймає, повинен відправити ці дані назад як відповідь. У вищезгаданому файлі перехоплення один пристрій з адресою 10 .10. О. 3 0 посилає луна-запит ICMP іншого пристрою з адресою 192.168. 128 0.
Цей початковий файл перехоплення було створено хосте-відправнику за адресою 10.10. О. 3. Тепер відкрийте файл перехоплення. У цьому файлі дані перехоплені в хосте-одержувачі на адресу 192 .168. Про .128. Розгорніть ІР-заголовок першого пакета з цього файлу перехоплення, щоб з’ясувати час життя даного пакета.
Як випливає з рис. 7.12, час життя першого пакета дорівнює 127, тобто. воно на 1 менше початкового часу життя даного пакета, який дорівнює 128. Навіть не знаючи структуру мережі, можна зробити висновок, що обидва згадані вище пристрої розділені маршрутизатором, а отже, час життя пакета під час проходження через маршрутизатор зменшується на 1.
Файл перехоплення: ipfrag_ source. pcapng
IP Interception File Packet Fragmentation є особливістю протоколу IP, обидва вихідних .rsarpd, що забезпечує надійну доставку даних по різних типах мереж шляхом розбиття потоку даних на невеликі фрагменти. Фрагментація пакетів заснована на розмірі Maximurn Transmission Unit (MTU) для протоколу другого канального рівня, а також конфігурації пристроїв, що використовують цей протокол. Як правило, мережевий протокол Ethernet використовується на другому канальному рівні, де розмір блоку MTU за замовчуванням становить 1500. Це означає, що максимум 1500 байт пакета можуть бути передані по Ethernet, не включаючи довжину 14 байт.
Коли пристрій готовий до передачі пакета IP, воно визначає, чи потрібно розбивати пакет на фрагменти, порівнюючи розмір даних в пакеті з розміром MTU мережевого інтерфейсу, через який це буде передаватися пакет. Якщо розмір даних більше, ніж у MTU, пакет буде фрагментований.
Процес фрагментації пакетів ділиться на наступні етапи:
Пристрій ділить дані на кількість пакетів, необхідних для їх успішної передачі.
У полі «Загальна довжина» кожного заголовка IP встановлюється розмір сегмента для кожного фрагмента.
Всі пакети, крім останнього пакета в потоці даних, мають прапорець фрагментів Моге.
У полі Fragment ofset заголовка IP ви вказуєте конкретне зміщення для поточного фрагмента, яке він повинен займати в потоці даних.
Потім пакети передаються по мережі.
Файл перехоплення джерела ip frag. RSARPD створювався на комп’ютері з адресою 10 .10. 0 . 3, який передав запит відлуння ICMP на пристрій з адресою 192.168. 0 .128. Зверніть увагу, що стовпець на панелі RasCat List містить два фрагментовані пакети IP, за якими слідує запит відлуння ICMP. Отже, почніть з аналізу IР заголовка першого пакета (рис. 7.13).
Як бачите, цей пакет є частиною фрагмента даних на основі значень в полях Moge fragments і Fragment ofset. Якщо пакети є фрагментами, в поле Moge fragments буде встановлено відповідний прапорець, або в поле Fragment ofset буде вказано ненульове позитивне значення. Наприклад, в поле фрагментів Moge заголовка IP першого пакета встановлюється прапорець, який вказує на те, що приймальний пристрій повинен очікувати отримання ще одного пакета з цієї послідовності. А в поле Fragment ofset значення e встановлюється рівним нулю, що вказує на те, що цей пакет є першим в послідовності фрагментів.
У полі фрагментів Moge заголовка IP другого пакета (рис. 7.14) також встановлений прапор, але на цей раз поле Fragment ofset встановлено на 1480. Це вказує на те, що розмір першого пакета відповідає розміру блоку MTU і становить 1500 байт, з яких 20 байт займає заголовок IP. Тому дані з другого отриманого пакета необхідно помістити в потік зі зміщенням в 1480 байт.
В поле фрагментів Moge з IP заголовка третього пакета (рис. 7.15) прапорець e не встановлюється, що вказує на те, що це останній фрагмент в потоці даних, а поле Fragment ofset встановлено рівним 2960, отриманим в результаті додавання розмірів другого і першого пакетів (1500 – 20) * 2. Всі ці фрагменти можуть бути розпізнаний як частина тієї ж послідовності даних, оскільки поле ldentifcation їх заголовків IP встановлено однаковими значеннями.
Зараз фрагментовані пакети можна зустріти в мережі не так часто, як це було раніше. Однак ви повинні чітко розуміти причини фрагментації пакетів, щоб ви могли діагностувати вашу мережу або виявити відсутні фрагменти, коли ви їх знайдете.
Коли була складена специфікація мережевого протоколу IPv4, ніхто не міг уявити собі кількість підключених до Інтернету пристроїв, які існують сьогодні. Максимальний адресний простір IPv4 був обмежений лише 4,3 мільярда. Але фактичний адресний простір скорочується ще більше, якщо відняти діапазони адрес, зарезервовані для спеціального використання, зокрема тестування, широкомовної трансляції та внутрішніх адрес RFC 1918. Незважаючи на те, що було зроблено кілька спроб тим чи іншим способом відстрочити виснаження пулу , в підсумку залишився тільки один спосіб подолати це обмеження: розробити нову версію специфікації для мережевого протоколу IP.
Таким чином, була складена специфікація мережевого протоколу IPv6, а його перша версія була випущена як стандарт RFC 2460 в 1998 році. У цьому випуску було впроваджено ряд покращень продуктивності, зокрема значно більший адресний простір. У цьому розділі ми розглянемо структуру пакета IPv6 і обговоримо, чим IPv6 відрізняється від свого попередника щодо мережевого зв’язку.
Довжина IPv4-адрес була обмежена 32 бітами, забезпечуючи простір, що вимірюється мільярдами адрес. А довжина адрес в протоколі IPv6 становить 128 біт, що в 4 рази більше і забезпечує простір в 2 128 адрес , що дозволяє охопити недецильйони хостів (тобто трильйони трильйонів трильйонів). І це дуже суттєве поліпшення!
Але так як довжина IPv6-адрес становить 128 біт, маніпулювати ними в двійковому вигляді дуже незручно. Найчастіше він записується у вигляді восьми двобайтових груп, представлених в шістнадцятковому вигляді, при цьому кожна група розділена двокрапкою. Наприклад, найпростіший виглядає так:
llll:aaaa:2222:bbbb:3333:cccc:4444:dddd
Дивлячись на таку адресу, мимоволі виникає така ж думка, як і в багатьох тих, хто звик запам’ятовувати 1Рv4-адреси: запам’ятати IРvб-адреси практично неможливо. І це неминучий компроміс, який довелося піти задля розширення простору адрес. Втім, таке незручне позначення IРvб-адрес іноді можна спростити, згорнувши деякі групи нулів. Розглянемо як приклад наступну IРvб-адресу:
1111:0000:2222:0000:3333:4444:5555:6666
Групи, що складаються з нулів, можна повністю згорнути, щоб зробити їх невидимими, як показано нижче.
1111::2222:0000:3333:4444:5555:6666
Але згорнути можна лише одну групу нулів, і тому наступна адреса вважається недійсним:
1111::2222::3333:4444:5555:6666
Слід також мати на увазі, що початкові нулі можна виключити з 1Рv6-адрес. Розглянемо як приклад наступну адресу, де в четвер тій, п’ятій та шостій групах є початкові нулі:
1111:0000:2222:0333:0044:0005:ffff:ffff
Цю адресу можна представити більш ефективно наведеною нижче про разом. Безумовно, користуватися такою адресою не так просто, як 1Рv4-адресом, але все ж таки набагато легше, ніж у довшому записі.
1111::2222:333:44:5:ffff:ffff
1Рv6-адреса також складається з мережної та вузлової частин, які нерідко називаються сетевъtм префіксом та ідентифікатором інтерфейсу відповідно. Розподіл цих частин змінюється залежно від класифікації обміну даними по протоколу 1Pv6. Зокрема, мережевий трафік за протоколом 1Pv6 поділяється на наступні категорії: одноадресатний (unicast), багато дрессатний (multicast) або альтернативний (anycast). Найчастіше аналізувати доводиться внутрішньоканальний одноадресатний трафік, тобто. обмін даними між пристроями однієї мережі. Формат внутрішньоканальної одноадресатної 1Рv6-адреси в такому трафіку наведено на рис. 7.16.
Внутрішньоканальні адреси застосовуються в тих випадках, коли дані потрібно передати іншому пристрою в тій же мережі. Внутрішньоканальна адреса можна розпізнати по установці двійкового значення 1111111010 у 10 старших його бітах і нулів у наступних 54 бітах. Таким чином, внутрішньоканальний адресу можна виявити за першою половиною у формі fe80: 0000: 0000: 0000.
Другу половину внутрішньоканальної 1Рv6-адреси становить ідентифікатор інтерфейсу, однозначно визначає мережевий інтерфейс у віконному хості. У мережах Ethernet цей ідентифікатор може ґрунтуватися на МАС-адреса мережного інтерфейсу. Але довжина МАС-адреси вбирається у 48 біт. Щоб заповнити всі 64 біти, МАС-адреса розділяється надвоє, і між половинами, що утворилися, вставляється шістнадцяткове значення Oxfffe в як заповнення, щоб отримати в результаті однозначний ідентифікатор.
І, нарешті, звертається сьомий біт у першому байті. Це досить складна операція, тому розглянемо структуру ідентифікатора інтерфейсу, наведену на рис. 7.17 де вихідна МАС-адреса пристрою, що позначається цим ідентифікатором, бьv~ дорівнює 78:Зl:сl:сЬ:Ь2:56. Потім байти шестнад цатеричного значення Oxfffe були вставлені посередині і далі звернений сьомий біт у першому байті, змінивши шістнадцяткову цифру 8 на а.
IРvб-адреси можуть бути представлені у згаданій раніше формі CIDR аналогічно 1Рv4-адрес. У наступному прикладі 64-розрядний простір адрес представлено внутрішньоканальною адресою: feB0:0000:0000:0000:/64 Композиція 1Рv6-адреси зміняться, коли вона використовується в глобальному одноадресатному трафіку, що направляється через відкритий Інтернет (рис. 7.18).
Якщо 1Рv6-адреса застосовується в такому трафіку, то глобальна одноадресатна передача виявляється за наявності комбінації 001, встановленої у перших трьох бітах, після чого слідує 45-розрядний префікс глобальної маршрутизації. Цей префікс присвоюється організаціям Центром з присвоєння заходів Інтернету (lnternet Assigned Numbers Autlюrity – IANA) і служить для однозначного визначення ІР-простору організації.
Наступні 16 біт виділяються під ідентифікатор підмережі, який служить для ієрархічної адресації аналогічно тій частині 1Рv4-адреси, яка відноситься до маски мережі. І останні 64 біти виділяються для ідентифікатора мережного інтерфейсу, як і у внутрішньоканальних одноадресних адресах. Розміри префікса марш рутизації та ідентифікатора підмережі можуть змінюватися.
Структура заголовка в пакеті lPv6
Файл перехоплення http Структура заголовка в пакеті IPv6 розширена ip4and6. RSARPD для підтримки додаткових функцій, хоча він розроблений для полегшення аналізу. Заголовки тепер мають фіксовану довжину 40 байт, а не змінний розмір, який раніше вимагав перевірки поля довжини заголовка для його аналізу. Додаткові опції надаються за рахунок розширення заголовків. Перевага такого підходу полягає в тому, що в більшості маршрутизаторів досить обробити 40-байтовий заголовок, щоб пересилати пакет далі.
Як показано на рис.7.19, складається з наступних полів.
А тепер порівняємо пакети IPv4 і IPv6, щоб з’ясувати деякі відмінності на прикладі їх аналізу з http файлу перехоплення ip4and6 .rsarpd. У перехопленому трафіку з цього файлу веб-сервер був налаштований на прослуховування як IPv4, так і IPv6-з’єднань на одному фізичному хості. І єдиний клієнт був налаштований на обидвапереглядати сервер окремо для кожної з його адрес і завантажувати сторінку з індексного файлу. php по протоколу HTTP через додаток бібліотеки (рис. 7.20).
Мережевий протокол HTTP, який відповідає за обслуговування веб-сторінок в інтернеті, більш детально буде розглянуто в главі 8 «Протоколи транспортного рівня». І в цьому прикладі слід лише зазначити, що обслуговування веб-сторінок залишається послідовним незалежно від використовуваного мережевого протоколу нижчого рівня. Те ж саме можна сказати і про мережевий протокол TCP, який також працює узгоджено. І це яскравий приклад дії інкапсуляції. Хоча протоколи IPv4 і IPv6 функціонують по-різному, це не робить ніякого впливу на протоколи, що працюють на інших рівнях.
На рис. 7.21 Безпосередньо порівнюються два пакети, 1 і 11, що виконують одну і ту ж функцію. Обидва пакети мають тип TCP SYN і призначені для того, щоб клієнт ініціював підключення до сервера. Ethernet і TCP частини цих пакетів практично ідентичні, в той час як IP-частини досить різні.
Нижче наведено відмінності, виявлені при безпосередньому порівнянні двох пакетів:
Формати відправника і одержувача різні.
Довжина IPv4-nakeTa становить 74 байти, а довжина корисного навантаження – 60 байт , включаючи корисне навантаження і 14-байт Довжина пакета IPv6 становить 96 байт, причому 40 байт – корисне навантаження, ще 40 байт в заголовку IPv6 і решта 14 байт на Довжина заголовка IPv6-3a становить 40 байт, тобто вдвічі довше довжини 2 () байт, для обліку розміру більшого адресного простору.
Сусідський бій на перехоплення Коли ми раніше обговорювали різні категорії s01ici tation. В результаті ми перерахували категорії одноадресного, багатоадресного та альтернативного трафіку, але не згадали про широкомовний трафік. IPv6 не підтримує широкомовний трафік, оскільки вважається неефективним механізмом передачі даних. В результаті протокол ACP не може бути використаний для того, щоб хости могли виявити один одного в мережі. Як тоді,Чи зможете ви виявити один одного?
Відповідь на це питання приходить з нової функції під назвою сусідська запитуваність, яка є особливістю протоколу виявлення сусідів (NDP), який використовує ICMPv6, розглянутий в останньому розділі цієї глави, для виконання основних функцій якого він використовує. Для цього протокол ICMPv6 використовує багатоадресний тип передачі даних, який може бути прийнятий і оброблений тільки тими хостами, які підписані на потік цих даних. Багатоадресний трафік можна швидко розпізнати, оскільки він має власний зарезервований простір 1P адрес (ff00 : : / 8).
Хоча процес адресної трансляції спирається на інший протокол, він використовує дуже просту послідовність запитів і відповідей. Як приклад розглянемо сценарій, у якому хост з IPv6-адресою 2001.•08 : 1:2: 1003 повинен зв’язатися з іншим хостом, який позначається адресою 2001 :d B8 : 1 : 1000. Як і у випадку з IPv4, передавальний пристрій повинен мати можливість визначити адресу з’єднання (MAC). Хост, з яким йому необхідно спілкуватися, так як спілкування встановлюється всередині мережі. Цей процес наочно проілюстровано на рис. 7.22.
Відповідь на запит сусіда знаходиться у другому пакеті зі згаданого вище файлу перехоплення. Розгорнувши частину цього пакета, що відноситься до протоколу ICMPv6, панелі Packet Details (рис. 7.24).
Підтримка файлів перехоплення ipv6 для фрагментації пакетів була вбудована в zafragraents. Головки протоколу RSARPD IPv4 для забезпечення пакетів
Тому може проходити через різні мережі, в яких блоки MTU помітно змінюються. А в протоколі IPv6 фрагментація пакета використовується в меншій мірі, тому параметри його підтримки не входять в заголовок IPv6. При цьому передбачається, що пристрій, що передає пакети IPv6, має спочатку запустити так званий процес знаходження розміру блоку MTU для визначення максимального розміру пакетів, які будуть відправлені перед фактичною відправкою.
Якщо маршрутизатор отримує занадто довгі пакети, що перевищують розмір MTU мережі, де вони досягаються, він скине їх і поверне пакет на передавальний пристрій з повідомленням ICMPv6 Pac.ket LLP Big (тип 2), тобто повідомленням з протоколу ICMPv6 типу 2 про те, що пакет занадто великий.
Отримавши це повідомлення, передавальний пристрій спробує відправити пакет знову, але вже з меншим MTU, якщо тільки така дія підтримується в протоколі верхнього рівня. Цей процес буде повторюватися до тих пір, поки не буде досягнутий досить малий розмір блоку MTU або межа дроблення корисної інформації (рис. 7.25). Сам агент маршрутизації взагалі не відповідає за фрагментацію пакетів, так як відповідальність за визначення відповідного розміру блоку MTU на шляху передачі і відповідної фрагментації пакета покладається на передавача пристрій.
Якщо протокол верхнього рівня, використовуваний спільно з IPv6, не в змозі обмежити корисну інформацію в пакеті, фрагментація все одно необхідна. В цьому випадку заголовок розширення фрагментації можна ввести в заголовок IPv6. Відповідний приклад фрагментації пакетів IPv6 можна знайти у файлі .rsarpd фрагментів перехоплення ipv6.
Приймальний пристрій має менший MTU, ніж передавальний пристрій, і тому в цьому файлі перехоплення є два фрагментованих пакета, які представляють кожен запит відлуння. та відповідь ICMPv6. Заголовок розширення фрагментації з першої партії показаний на рис. 7.26.
Internet Control Message Protocol (ICMP) — це сервісний протокол, який відповідає у стеку протоколів TCP/IP за надання відомостей про доступність пристроїв, служб або маршрутизаторів у мережі TCP/IP. Більшість діагностичних інструментів і методик мережі зосереджені на поширених типах повідомлень протоколу керування Інтернетом (ICMP). Мережевий протокол ICMP визначено в RFC 792.
ICMP є частиною Інтернет-протоколу (IP) і використовує його для передачі своїх повідомлень. Протокол керуючих повідомлень Інтернету (ICMP) містить відносно невеликий заголовок, який змінюється залежно від його призначення. Як показано на рис. 7.27, заголовок IMMR складається з таких полів:
Файл перехоплення ()Гордістю протоколу 1CMP є echo.rsarpd файлу ping, який використовується для перевірки поточного стану з’єднання між мережевими пристроями. Хоча пінг не є частиною специфікації ICMP, він використовує цей протокол для реалізації своєї основної функціональності.
Щоб використовувати ping, введіть ping ip-anec в командному рядку, замінивши ip-anec на конкретну IP-адресу пристрою у вашій мережі. Якщо цільове пристрій включено, то у пристрою-джерела з’явиться кнопка для передачі даних на нього. В результаті ви повинні побачити на екрані реакцію пристрою на команду ping, якщо тільки ця передача не заблокована брандмауером.
У прикладі, наведеному на рис. 7.28, показано чотири успішних відповіді, із зазначенням їх тривалості, часу передачі та підтвердження прийому, а також терміну служби пакетів. В кінці роботи він також надає підсумок кількості відправлених, прийнятих і втрачених пакетів. При виникненні збою під час передачі даних ви повинні побачити повідомлення про причину передачі.
По суті, команда ping відправляє пакети один за іншим на тестований пристрій і отримує від нього відповідь, щоб з’ясувати, чи є зв’язок з цим пристроєм (рис. 7.29).
Дія угилиты ping служить чудовим прикладом простого обміну даними за протоколом ICMP. Пакети із файлу перехоплення icmp _ echo. pcapng демонструють, що відбувається при виконанні угіліти ping. У першому пакеті (рис. 7.30) з цього файлу демонструється, що хост за адресою 192 .168 .100 .138 поспішає пакет хосту, що знаходиться за адресою 192 .168 .100 .1 О. Якщо розгорнути частину цього пакета, що відноситься до протоколу ICMP, то тип пакета ICMP можна визначити, дивлячись на поля Туре та Code. У даному випадку пакет відноситься до типу 8 8, а його код дорівнює нулю 8, вказуючи на луна-запит.
(Додаток Wireshark має підказати, що саме відображається в полях Туре і Code.) Але надіслати луна-запит – це лише половина. Адже йдеться про простий пакет ICMP, який надсилається за допомогою протоколу IP та містить невеликий обсяг даних. Крім типу, коду та контрольної суми, є порядковий номер для об’єднання запитів та відповідей у пари, а також довільний тестовий рядок у змінній частині пакета ICMP.
Щоб збільшити розмір поля, що заповнюється даними в луна-запиті і тим самим примусити до фрагментації пакетів, можна скористатися відповідним параметром (-s у системах Uпix та -1 у системі Wiпdows) команди pinq. Така потреба може виникнути при проведенні різних видів діагностики мереж, де потрібні менші розміри фрагментів.
Фаги перехоплення ICNP Утиліта traceroute використовується для ідентифікації шляху трасування. RSARPD-пакети з одного пристрою на інший.
У простій мережі цей шлях може проходити через один роутер або зовсім без нього. А в складній мережі пакетам, можливо, доведеться пройти через десятки маршрутизаторів, щоб досягти кінцевого пункту призначення. Тому для діагностики зв’язку дуже важливо вміти простежити конкретний шлях, по якому пакети проходять з одного пункту призначення в інший.
Використовуючи протокол керуючих повідомлень Інтернету (ICMP) (і в меншій мірі інтернет-протокол (IP), трасування може відображати страх пакетів. Наприклад, перший пакет з файлу перехоплення icmp traceroute .rsardpd дуже схожий на echo-запит з попереднього прикладу (рисунок 7.32).
У перехопленому трафіку з цього прикладу пакети генерувалися за допомогою команди traceroute 4.2.2.1. Щоб використовувати traceroute в Windows, введіть в командному рядку команду tracert, замінивши ip-anec на конкретну адресу IP. пристрій, до якого потрібно ідентифікувати і простежити пакети до нього. А для того, щоб використовувати утиліту traceroute в Linux або Mac 0S X, введіть команду traceroute ip-адерес.
На перший погляд, цей пакет містить простий ехо-запит від хоста, розташованого за адресою 192 .168 .100 .138 до хоста, розташованого на 4 . 2 .2.1, і тому весь вміст ICMP частини цього пакета виглядає таким же, як і при форматуванні пакета ехо-запиту. Але якщо розгорнути IP заголовок цього пакета, можна помітити, що поле цього заголовка встановлено на 1. Це означає, що цей пакет буде скасований на першому ж роутері, до якого він дойде. А так як IР-адреса одержувача пакета дорівнює 4. 2 . 2 . 1 – це міжмережева, то, як відомо, між вихідним і цільовим пристроями повинен бути хоча б один маршрутизатор. Тому дана посилка ніяк не може дістатися до місця призначення. І це добре, тому що сила трасування покладається на пакет, щоб досягти лише першого маршруту на своєму шляху.
Другий пакет, як і очікувалося, містить відповідь від першого досягнутого маршугайзера на шляху до одержувача (рис. 7.33). Перший пакет досяг пристрою на 192 .168 .100 . 1, де значення в полі TTE його [P-заголовка) зменшено до нуля, тому його неможливо передати далі. Тому маршрутизатор відправив пакет з відповіддю ICMP. Цей пакет відноситься до типу 11, і йому присвоєно код 0, що означає, що приймач недосяжний, оскільки термін служби пакета був перевищений при проходженні через роутер.
Такий ICMP-пакет іноді називають двозаголовковим пакетом, оскільки в самому кінці ICMP частина протоколу ICMP містить копію ІP-заголовка і дані ICMP , які були відправлені в оригінальному ехо-запиті. Ця інформація може стати в нагоді при діагностиці мереж.
Вищевказаний процес відправки пакетів з мінімальним значенням в поле TTL їх заголовка IP проходить ще кілька разів, перш ніж пакет 7 буде отриманий. І тут спостерігається те ж саме, що і в першому пакеті, але на цей раз в поле PI відповідного заголовка IP встановлено значення 2, гарантуючи, що пакет досягне маршугайзера при другому стрибку до його скасування. Як і слід було очікувати, відповідь буде отримана від маршрутизатора при наступному стрибку на 192 .168. 1 . 1 з тими ж ICMP повідомленнями про недосяжність одержувача і закінчення терміну служби пакета.
Цей процес, з приростом значення в поле TTL, триває до тих пір, поки не буде досягнутий приймач на 4.2.2. 1. Але перш ніж це станеться, запит вичерпається, як випливає з рядка 8 результатів, що відображаються утилітою traceroute на екрані (рис. 7.34). Як же тоді цей процес може бути успішним, якщо запит вичерпується на своєму шляху? Як правило, це відбувається, якщо маршрутизатор не відповідає на запити 1CMP. Такий маршрутизатор все одно отримує запит і пересилає дані наступному роутеру. Саме тому ми можемо знайти наступний перехід в рядку 9, як показано на рис. 7.34.
При цьому переході пакет ICMP з повідомленням про перевищення терміну служби просто не генерувався, як це було при інших переходах. Якщо утиліта traceroute не отримує відповіді через заданий проміжок часу, вона збільшує значення в полі TT AND на I і просто переходить до наступного запиту.
Оновлена версія протоколу IP спирається значною мірою на протокол ICMP для виконання таких функцій, як опитування сусіда або виявлення шляху проходження пакетів, як демонструвалося у розглянутих раніше приклади. Протокол ICMPvб описаний у документі RFC 4443 і призначений для підтримки ряду можливостей, потрібних для нормального функціонування протоколу IPvб, поряд з додатковими удосконаленнями. У цій книзі протокол ICMPvб не розглядається окремо тому, що в ньому застосовується така ж структура заголовка пакета, як і в пакетах ICMP.
Як правило, пакети ICMPvб поділяються на категорії повідомлень про помилки або інформаційні повідомлення. Повний перелік типів і кодів, доступних у протоколі ICMPvб, можна знайти на веб-сторінці організації IANA за адресою http://www. iana .org/assignments/icmpvб-parameters/ icmpvб-parameters. xhtml. У цьому розділі були представлені найбільш важливі протоколи мережного рівня, які ви повинні досліджувати в процесі аналізу пакетів.
Зокрема, протоколи ARP, IP та ICMP покладені в основу всього обміну даними по мережі, і тому вони відіграють вирішальну роль у вирішенні завдань, з якими ви зіткнетеся у своїй повсякденній діяльності. У розділі 8 будуть розглянуто найбільш уживані протоколи транспортного рівня – ТСР та UDP.
Ми використовували матеріали з книги “PRACTICAL РАСКЕТ ANALYSIS ”, яку написав Кріс Сандерс.