Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

Лабораторна робота №2

Тема: «Дослідження технологій захисту цілісності інформації. Механізм


контрольних сум. Алгоритму типу CRC та їх використання в мережевих
протоколах Ethernet»

Мета: «оволодіти навичками розрахунку контрольних сум мережевих


пакетів в межах стеку протоколів TCP/IP»

Теоретичні відомості

IP-протокол — найпоширеніша реалізація ієрархічної схеми


мережевої адресації. Даний протокол широко використовується в
мережі Інтернет. Він відповідає за адресацію пакетів, але не відповідає за
встановлення з'єднань, не є надійним і дозволяє реалізувати тільки
негарантовану доставку даних. Термін «протокол без встановлення з'єднань»
означає, що протокол для взаємодії не потребує виділеного каналу, як це
відбувається під час телефонної розмови і не існує процедури виклику перед
початком передачі даних між мережевими вузлами. Протокол IP вибирає
найефективніший шлях з числа доступних на основі рішень
прийнятих протоколом маршрутизації. Відсутність надійності і негарантована
доставка не означає, що система працює погано або ненадійно, а вказує лиш
на те, що протокол IP не докладає ніяких зусиль, щоб перевірити чи був пакет
доставлений за призначенням. Ці функції делеговані протоколам
транспортного та вищих рівнів.
IP-пакет складається з полів заголовка і даних. На рис. 2.1 наведені поля
заголовка.
Рис. 2.1. Структура заголовка IP-пакета

Контрольна сума заголовка займає 2 байта (16 біт) і розраховується


тільки по заголовку (рис.2.2б). Оскільки деякі поля заголовка змінюють своє
значення в процесі передавання пакета по мережі (наприклад, поле часу
життя), контрольна сума перевіряється і повторно розраховується на кожному
маршрутизаторі і кінцевому вузлі, як доповнення до суми всіх 16-бітних слів
заголовка. При обчисленні контрольної суми значення самого поля
контрольної суми встановлюється в нуль. Якщо контрольна сума невірна, то
пакет відкидається, як тільки буде виявлена помилка.

Принцип розрахунку контрольної суми заголовка протоколу IP


Далі необхідно вивчити формат заголовка пакета IP і на прикладі
розібрати механізм обчислення 16-бітної контрольної суми, що
використовується для виявлення помилок в заголовку протоколу IP.

Теоретичні відомості про контрольну суму протоколу IPv4 і порядок її


розрахунку.
В протоколі IPv4 контрольна сума розраховується тільки для заголовка
пакета. Дані не перевіряються, оскільки в протокол IPv4 інкапсулюються
(вкладаються) протоколи нижніх рівнів, які мають свою контрольну суму, що
враховує, як їх заголовок, так і дані. До того ж, заголовок пакета IPv4
змінюється при проходженні маршрутизаторів, а це означає, що контрольна
сума повинна обчислюватися кожним маршрутизатором кожного разу
повторно – відповідно, якби вона враховувала і дані пакета IPv4, то це б значно
підвищило би навантаження на процесори маршрутизаторів і збільшило б час
обробки кожного пакета.

Структура заголовку пакету IPv4 наведена на рис. 2.2а


0 1 23 4 56 7 8 910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Довжина Повна довжина


Версія заголовка Тип сервису пакету
Ідентифікатор пакету Прапори Смещение фрагмента
Час життя Тип протоколу Контрольна сума

IPv4-адрес відправника
IPv4-адрес отримувача
Зміст
Опції. . . пакету

Рис. 2.2а - Структура заголовку пакету IPv4

Рис.2.2 б – розташування заголовку IP пакету (IP Header) у мережевому


фреймі
Контрольна сума CSIP заголовка переданого пакета IPv4 розраховується
за наступним алгоритмом:
1.Заголовок розбивається на слова Wi по 16 біт. У випадку необхідності
останнє слово заголовку доповнюється нулями справа (біти заповнення), щоб
«вирівняти» довжину заголовка в бітах кратно 16.
2.Значення поля контрольної суми, якому відповідав би слово W 6,
приймається рівним нулю:
W6 = (0000)16:

3. Отримані 16-бітні слова Wi поелементно додаються між собою, як


двійкові числа з переносом в старші розряди:

0
𝑊𝑠 = 𝑎 𝑊𝑖
𝑖
4. В тому випадку, якщо результат додавання W s у двійковому поданні
перевищує по довжині 16 біт, він розбивається на два 16-бітних слова, які
додаються між собою. Цю процедуру називають «круговим перенесенням»,
тобто, переповнення старшого розряду переноситься в молодший, наприклад,
якщо:
Ws = (2A4E3)16; то Ws = (0002)16 + (A4E3)16 = (A4E5)16:
5. У випадку, якщо результат додавання Ws знову перевищує 16 біт, то
попередня операція повторюється.
6. Знаходиться двійкове порозрядне доповнення результату додавання,
яке і записується в поле контрольної суми:
CSIP = (FFFF)16 Ws:

Для більш детального ознайомлення з процедурою обчислення


контрольної суми в протоколах мережного і транспортного рівня мережі
Інтернет і варіантами її реалізації для різних мов програмування
рекомендується звернутися до нормативного документу RFC 1071.
Приклад 1. Розглянемо розрахунок контрольної суми заголовка IP-
пакета, наведеного на рис. 2.3. Пакет записаний в шістнадцятковій системі
числення. Поле контрольної суми виділено кольором і обнулено перед
початком формування IP-пакета для передавання по мережі.

0 15 16 31
4500 0076
252D 4000
4011 0000
C0A8 010F
C1C8 B708

Рис. 2.3. Приклад заголовка пакета IPv4 з обнуленим полем контрольної суми
1. Розбиваємо заголовок з обнуленим полем контрольної суми на слова
по 16 біт і обраховуємо суму отриманих 16-бітових слів:
(4500)16 +(0076)16 +(252D)16 +(4000)16 +(4011)16+…+(0000)16 +
(C0A8)16 + (010F)16 + (C1C8)16 + (B708)16 = (3253B)16:
2. Оскільки результат додавання в двійковому поданні перевищує 16
розрядів (або 4 шістнадцяткових цифри), то розбиваємо його на два слова по
16 біт кожне і знову їх беремо їх суму:
(0003)16 + (253B)16 = (253E)16:
3. Знаходимо контрольну суму, як двійкове порозрядне доповнення
результату складання:
CSIP = (FFFF)16(253E)16 = (DAC1)16:
Отримане число заноситься в поле контрольної суми заголовка IP пакета
(рис. 3.3).

Перевірка контрольної суми при прийомі IP-пакету отримувачем


проводиться за аналогічним алгоритмом, відрізняючись тільки тим, що в
розрахунку бере участь і контрольна сума прийнятого IP-пакета. Якщо
підсумкове порозрядне двійкове доповнення отриманої суми дорівнює 0,
тобто, (() 160000), то це говорить про коректність контрольної суми отриманого
пакету.

Приклад 2. Для прикладу перевіримо коректність контрольної суми


заголовка IP пакету, наведеного на рис. 3.3 з урахуванням значення поля
контрольної суми (DAC1)16.
1. Додаємо всі 16-бітні слова заголовка між собою:
(4500)16 + (0076)16 + (252D)16 + (4000)16 + (4011)16+ +(DAC1)16 +
(C0A8)16 + (010F)16 + (C1C8)16 + (B708)16 = (3FFFC)16:
2. Оскільки результат додавання перевищує розрядність16 біт, то
розбиваємо його на два слова по 16 біт кожне і знову їх додаємо: (0003)16 +
(FFFC)16 = (FFFF)16:
3. Знаходимо двійкове порозрядне доповнення результату додавання:
(FFFF)16 (FFFF)16 = (0000)16:
Таким чином, ми перевірили, що наведена в пакеті на рис 3.3 контрольна
сума вірна.
Останню операцію порозрядного двійкового доповнення (NOT) можна
не проводити. Тоді правильність контрольної суми прийнятого IP-пакета буде
підтверджуватися результатом взяття суми (FFFF)16 на другому кроці
алгоритму перевірки.

Приклад 3.
Маємо кадр Ethernet:

1. Виділяємо заголовок:
Вище представлений IP-header TCP-пакету, зазначеного за варіантом.
“46” на початку означає наступне:
4 — версія IP-протоколу, а 6 – довжина заголовку.
Так як довжина описана за допомогою тетрад по 4 байти, то довжина
заголовку розраховується наступним чином: 4х6 = 24.
“c0” - TOS (тип сервіса). “
00 20” - довжина заголовку. В даному випадку вона дорівнює 32.
“52 16” - поле ідентифікації. “00 00” - перший байт відповідає за флаги а
другий — fragment offset. “01 02” - перший байт відповідає за TTL поле, а
другий — за поле протоколу.
«00 00» - поле контрольної суми, яку треба знайти.
«ac 10 04 04» - порт відправника.
«e0 00 00 01» - порт одержувача. 1. Розбиваємо TCP заголовок на слова
по 16 біт і додаємо їх:

2. Знаходимо контрольну суму, як двійкове порозрядне доповнення


результату складання:

3. Робимо перевірку коректності КС:

4. Оскільки результат додавання перевищує розрядність16 біт, то


розбиваємо його на два слова по 16 біт кожне і знову їх додаємо:

5. Знаходимо двійкове порозрядне доповнення результату додавання:

Таким чином отримана КС при перевірці співпала з полем КС IP кадра.


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

TCP-протокол.

На відміну від протоколу IP, протокол TCP гарантований. Механізми,


наявні в даному протоколі за допомогою команд попередньо встановлює
з'єднання, після чого починають передачу даних; стежать за збереженням
даних і їх послідовністю, регулюють швидкість трансляції, щоб дані не
передавалися інтенсивніше, ніж їх можна прийняти.
Виправлення помилки в даному протоколі проходить через відсилання
дубль-пакету, якщо пакет втрачений. Якщо прийшло два однакових пакета за
однією адресою, то протокол виправляє помилку.
На транспортному рівні стека TCP/IP використовуються два основні
протоколи: TCP і UDP. Існують загальні завдання транспортного рівня, з
якими справляється як TCP, так і UDP.
Але основних завдань власне два: сегментація даних, що приходять з
рівня додатків і адресація додатків (передавального і приймаючої) за
допомогою портів.
Крім цього, TCP забезпечує:
 надійну доставку сегментів;
 впорядковування сегментів при отриманні;
 роботу з сесіями;
 контроль за швидкістю передавання.
Заголовок TCP сегмента має наступну структуру (рис.2.4) та таблиця 2.1:
Рис.2.4 – Структура заголовку TCP сегменту

Таблица 2.1. Структура ТСР-пакета

Поле Описание
Source port(порт отправителя) Порт ТСР узла отправителя
Destination port(порт получателя) Порт ТСР узла получателя
Sequence Number(порядковый номер) Номер последовательности пакетов
Acknowledgement Number(Номер Порядковый номер байта, который локальный
потверждения) узел расчитывает получить следующим
Data Length(длинна данных) Длинна ТСР-пакета
Reserved(зарезервированно) Зарезервированно для будущего использования
Flags(Флаги) Описание содержимого сегмента
Показывает доступное место в окне протокола
Window(окно)
ТСР
Checksum(контрольная сумма) Значение для проверки целостности пакета
При отправке срочных данных в этом поле
Urgent Point(Указатель срочности)
задается гранича области срочных данных

Визначення TCP заголовка в мережевому пакеті Ethernet

Формат заголовка TCP має вигляд (рис.2.5)


Рис.2.5 – Формат заголовка TCP має вигляд

TCP-заголовок не містить інформації про адресу відправника і


одержувача, тому навіть при співпадінні порту одержувача не можна з
точністю сказати, що повідомлення прийшло в потрібне місце. Оскільки
призначенням протоколу TCP полягає у надійному доставленні повідомлень,
то це має принципове значення. Для того, щоб не дублювати адресну
інформацію в заголовку TCP, використовується додатковий псевдозаголовок.
Псевдозаголовок, який використовується для обрахунку контрольної
суми має наступний вигляд (рис.2.6):

Рис.2.6 – формат псевдозаголовка

Псевдозаголовок не включається в TCP-сегмент. Він використовується


для розрахунку контрольної суми перед відправленням повідомлення і при
його отриманні (одержувач складає свій псевдозаголовок, використовуючи
адресу хоста, з якого прийшло повідомлення, і власну адресу, а потім вважає
контрольну суму).
Поля псевдозаголовка:
Source Address - IP-адреса джерела.
Dest. Address - IP-адреса одержувача.
zero - Чотири нульових біта.
PTCL - Тип протоколу верхнього, щодо IP рівня. У разі TCP Це поле одно 0x06.
TCP Length - Містить в собі довжину TCP-сегмента в байтах (TCP-заголовок
+ дані; довжина псевдозаголовка не враховується).

Поле контрольної суми - це 16-бітове доповнення до суми всіх 16-бітних


слів заголовка (включаючи псевдозаголовок) і даних. Якщо сегмент, за яким
обчислюється контрольна сума, має довжину не кратну 16-ти бітам, то
довжина сегмента збільшується до кратної 16-ти за рахунок доповнення до
нього справа нульових бітів заповнення. Біти заповнення (0) не передаються в
повідомленні і служать тільки для розрахунку контрольної суми.
При розрахунку контрольної суми значення самого поля контрольної
суми приймається рівним 0.

Порядок розрахунку контрольної суми TCP пакету.

Контрольна сума (KC, CS) заголовка TCP є 16-бітовим порозрядним


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

Приклад 1 для пакета TCP. Заголовок виділено зеленим, КС –


синім кольорами:

0000: 00 50 FC 1E BF 8D 00 30 4F 0E 89 65 08 00 45 00
0010: 00 38 89 28 40 00 80 06 11 21 C0 A8 01 32 C3 13
0020: DB 88 04 50 00 15 00 4C 69 E7 3C 00 27 92 50 18
0030: 22 05 D3 39 00 00 55 53 45 52 20 61 6E 6F 6E 79
0040: 6D 6F 75 73 0D 0A

Псевдозаголовок:

C0 A8 01 32
C3 13 DB 88
00 06 00 24

Обчислення КС заголовка пакета протоколу TCP:


1. Заголовок TCP розбивається на слова розміром 16 біт (2 байти) кожне.
Поле КС приймається рівним нулю (не бере участі в обчисленні). Для всіх
отриманих слів реалізується операція додавання.
0450 + 0015 + 004C + 69E7 + 3C00 + 2792 + 5018 + 2205 + 0000 + 0000 = 14447
2. Аналогічно розраховуємо дані і псевдозаголовок.
5553 + 4552 + 2061 + 6E6F + 6E79 + 6D6F + 7573 + 0D0A = 287DA
C0A8 + 0132 + C313 + DB88 + 0006 + 0024 = 2609F
3. Результат: 14447 + 287da + 2609F = 62CC0
4. Довжина результату отриманої суми перевищує 2 байта (4
шістнадцяткові цифри), отже, проводиться перенесення розряду: 0006 + 2CC0
= 2CC6.
5. Знаходиться порозрядне доповнення від підсумкової суми. Результат
і буде контрольною сумою заголовка пакета протоколу TCP.
FFFF−2CC6 = D339 = CS

Приклад 2 для пакета TCP.

Індивідуальні завдання

Вихідні дані: мережевий пакет в 16-ковому поданні, записаний


починаючи з заголовка Ethernet (Ethernet DIX). Поле контрольної суми
замінено на нулі. Перший стовпець позначає номер рядка в 16-ковому поданні.
Варіанти завдання на лабораторну роботу наведені в табл.3.2.
1. Виділити з заданого мережевого пакету заголовок протоколу IP.
Розбити заголовок протоколу IP на поля, виписати їх і вказати призначення
(+45 ECTS).
2.Розрахувати контрольну суму заголовка протоколу IP (+10 ECTS).
3.Провести перевірку правильності обчислення контрольної суми (+10
ECTS).
Таблиця 2.2 - варіанти індивідуальних завдань
4. За допомогою будь-якого мережевого сканера перехопити TCP пакет
(+10 ECTS).
5. Обрахувати контрольну суму перехопленого TCP-пакету (+10 ECTS).
6. Перевірити на коректність обраховану суму перехопленого TCP
пакету (+15 ECTS).

Зробити висновки по лабораторній роботі.

Контрольні питання (+5 ECTS)


1. Які властивості інформації захищає механізм контрольних сум в
чому?
2. Опишіть структуру заголовка IPv4.
3. Наведіть принципи фрагментації пакету IPv4.
4. Опишіть принцип розрахунку контрольної суми заголовку IPv4
пакету.
5. Опишіть принципи розрахунку контрольної суми для пакетів TCP.
6. Що є спільного при розрахунку контрольної суми заголовків для
пакетів IPv4 і TCP?

You might also like