Інтернет-протокол ІPv4

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Розрахункова робота
Предмет:
Комп'ютерні мережі
Група:
КН

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НУ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ІСМ Розрахункова робота на тему: “Інтернет-протокол ІPv4” З курсу: ”Комп’ютерні мережі” Завдання Протокол ІPv4. Розробити навчальну програму, яка ілюструє роботу інтернет протоколу ІPv4. Теоретична частина 1. Вступ 1.1. Мотивація Протокол IP призначений для використання в з'єднаних між собою комп'ютерних мережах обміну даними на основі комутації пакетів. Такі системи отримали назву “catenet” [l] Протокол забезпечує передачу блоків даних, що називаються дейтаграмами, від відправника до одержувача, хости яких ідентифікуються адресами фіксованої довжини. Протокол також забезпечує, при потребі, фрагментацію і збирання дейтаграм великого розміру для передачі крізь мережі, що не можуть працювати з пакетами великого розміру. 1.2. Сфера застосування Сфера застосування протоколу обмежується доставкою бітових пакетів (дейтаграм) від відправника до одержувача через систему з'єднаних між собою мереж. Протокол не підтримує механізмів підвищення надійності доставки даних, управління потоком даних, встановлення послідовності та інших функцій, які зазвичай підтримуються протоколами прямої взаємодії між хостами. Протокол IP використовує послуги підтримуючих цей протокол мереж для надання послуг різного типу та якості. 1.3. Інтерфейси Цей протокол викликається протоколами взаємодії "хост-хост" і сам викликає протоколи локальних мереждля передачі дейтаграм наступному маршрутизатору чи хосту-одержувачу. Наприклад, модуль TCP буде викликати модуль IP для розміщення сегмента TCP (до якого входить заголовок TCP і дані користувача) як об'єкта даних дейтаграми IP. Модуль TCP вкаже модулю IP адреси та інші параметри заголовка IP як аргументи виклику. Модуль IP створить дейтаграму IP і звернеться до інтерфейсу локальної мережі для передачі дейтаграми. 1.4. Робота протоколу Протокол IP реалізує дві основні функції – адресацію та фрагментацію дейтаграм. Модулі IP використовують адреси з заголовків IP для передачі дейтаграм ІР одержувачу. Процес вибору шляху до адресату називається маршрутизацією. Модулі IP використовують поля заголовків IP для фрагментації та збирання дейтаграм IP, коли це необхідно для передачічерез мережі з малим розміром пакетів. Принцип роботи протоколу полягає в тому, що модулі IP використовуються на кожному хості, що бере участь у міжмережевому зв′язку і на кожному маршрутизаторі, що з'єднує мережі. Ці модулі використовують загальні правила інтерпретації полів адреси і фрагментації та збирання дейтаграм IP. Крім того, ці модулі (особливо у маршрутизаторах) приймають рішення про маршрут пересилання дейтаграм і виконують ще ряд функцій. Протокол IP трактує кожну дейтаграму як незалежний елемент, не зв'язаний з іншими дейтаграмами IP. Протокол не використовує з'єднання та логічні схеми (віртуальні чи інші). Для забезпечення сервісу протокол IP використовує чотири ключових механізми – тип обслуговування (ToS), час життя (TTL), опції (Options) і контрольну суму заголовка (Header Checksum). Тип обслуговування (ToS) використовується для зазначення бажаної якості сервісу. ToS являє собою абстрактний чи узагальнений набір параметрів, що характеризують вибір сервісу в мережах, що входять до мережі Інтернет. Зазаначення ToS використовується шлюзами в процесі маршрутизації дейтаграм ІР для вибору поточних параметрів передачі для певної мережі, мережі для наступної транзитної точки чи наступного маршрутизатора. Час життя TTL визначає максимальний термін існування дейтаграм IP. Це значення встановлюється відправником і зменшується в кожній точці на шляху доставки, де обробляється дейтаграма. Якщо значення TTL стає нульовим до того, як дейтаграма доставлена адресату, така дейтаграма просто знищується. Можна розглядати TTL як час самознищення дейтаграм. Опції забезпечують функції контролю, які необхідні чи корисні в деяких ситуаціях, але не використовуються для більшості звичайних процесів передачі даних. Опції забезпечують роботу з мітками часу, безпеку і спеціальну маршрутизацію. Контрольна сума заголовка забезпечує можливість перевірки правильності передачі інформації, що використовується у процесі обробки дейтаграми ІР. Дані можуть містити помилки. Якщо обчислена при обробці контрольна сума заголовка не збігається зі значенням контрольної суми, що зазначена в дейтаграмі, така дейтаграма відкидається об′єктом, що зафіксував помилку. Протокол IP не забезпечує надійного зв′язку. У протоколі не використовується підтвердження ні наскрізної, ні поетапної доставки повідомлень. Не існує також засобів контролю помилок за винятком контрольних сум заголовка. Протокол також не підтримує засобів повторної передачі та керування потоком даних. Інформація про виявлені помилки може передаватися за допомогою протоколу ICMP (протоколу керуючих повідомлень мережі Інтернет) [3], який реалізується в модулі IP. 2. Загальні відомості 2.1. Зв'язок з іншими протоколами На наведеному нижче рисунку (рис. 1) показано місце даного протоколу в ієрархії протоколів.  Рис. 1. Зв'язок з іншими протоколами Протокол IP взаємодіє з протоколами вищого рівня (протоколами взаємодії між хостами) з однієї сторони та з іншої сторони протоколом локальної мережі. 2.2. Модель роботи протоколу Модель передачі дейтаграм від однієї прикладної програми до іншої можна проілюструвати описаним нижче сценарієм. Припустимо, що при передачі задіяний лише один проміжний шлюз. Прикладна програма готує свої даніі викликає локальний модуль IP для передачі даних у вигляді дейтаграми, вказуючи адресу одержувача та інші параметри як аргументи виклику. Модуль IP готує заголовок дейтаграми і приєднує до нього дані. Після цього модуль IP визначає адресу локальної мережі для зазначеної Інтернет-адреси (у даному випадку це адреса шлюзу). Модуль передає дейтаграму і адресу локальної мережі інтерфейсу локальної мережі . Інтерфейс локальної мережі створює заголовок локальної мережі і приєднує до нього дейтаграму IP, після цього пакет передається в локальну мережу. Дейтаграма надходить на хост-маршрутизатор з заголовком локальної мережі. Інтерфейс локальної мережі видаляє цей заголовок і передає дейтаграму модулю IP. На основі IP-адреси модуль IP визначає, що дейтаграму потрібно переслати хосту іншої мережі. Тоді модуль IP визначає адресу локальної мережі хоста-одержувача і викликає інтерфейс тієї локальної мережі, куди передається дейтаграма. Інтерфейс локальної мережі створює заголовок локальної мережі і, приєднавши до нього дейтаграму, передає пакет хосту-адресату. На хості-одержувачі заголовок локальної мережі видаляється інтерфейсом локальної мережі і дейтаграма передається модулю IP. Модуль IP визначає по заголовку, що дейтаграма призначена для прикладної програми на даному хості і передає їй дані разом з адресою відправника та іншими параметрами у відповідь на системний виклик.  Рис.2 Шлях передачі даних 2.3. Опис функцій Протокол IP призначений для переміщення дейтаграм через велику кількість з'єднаних між собою мереж. Це здійснюється шляхом передачі дейтаграм від одного модуля IP до іншого, поки дейтаграма не буде доставлена адресату. Модулі IP розміщуються на хостах і шлюзах (маршрутизаторах) Інтернет-системи. Дейтаграми маршрутизуються від одного модуля IP до іншого через проміжні мережі на основі інтерпретації адрес IP. Таким чином, одним з найважливіших механізмів IP є адресація. При маршрутизації повідомлень від одного модуля IP до іншого може знадобитися передача дейтаграм через мережі, для яких максимальний розмір пакета менший за розмір дейтаграми. Для вирішення цієї проблеми протокол IP забезпечує механізм фрагментації дейтаграм. Адресація Слід розрізняти імена, адреси і маршрути [4]. Ім'я вказує на об'єкт, який ми шукаємо. Адреса показує його місцезнаходження, а маршрут говорить, як його досягти. Протокол IP має справу переважно з адресами. Відображення імен на адреси – завдання протоколів вищих рівнів (тобто, протоколу взаємодії між хостами і прикладної програми). Модуль IP відображає адреси IP на адреси локальної мережі. Відображення адрес локальної мережі на маршрути – завдання процедур нижчого рівня (тобто, локальної мережі чи шлюзів). Адреси мають фіксовану довжину – 4 октети (32 біти). Адреса починається з номера мережі, за яким слідує локальна адреса (її називають “залишковим” полем). Існує три класи IP-адрес – клас А, у якому старший біт має значення 0, інші 7 бітів старшого октету задають номер мережі, а останні 24 біти – локальну адресу; клас B, у якому два старших біти мають значення 10, наступні 14 бітів визначають номер мережі, а останні 16 бітів – локальну адресу; клас C, в якому три старших біти мають значення 110, наступні 21 визначають номер мережі, а останні 8 бітів – локальну адресу. Потрібно обережно відноситися до перетворення адрес IP в адреси локальної мережі, оскільки один фізичний хост має бути здатним функціонувати як декілька різних хостів, що використовують різні адреси IP. І навпаки, деякі хости можуть мати декілька фізичних інтерфейсів (множинна адресація). Таким чином, слід забезпечити наявність на хості декількох фізичних інтерфейсів в мережу, кожний з яких може мати кілька логічних адрес IP. Фрагментація Фрагментація дейтаграм IP потрібна в тих випадках, коли дейтаграма походить з мережі, що підтримує більший розмір пакетів, ніж проміжні мережі на шляху до адресата. Дейтаграма IP може бути позначена “dоn't fragment” (не фрагментувати). Такі дейтаграми повинні не фрагментуватися ні за яких обставин. Якщо дейтаграма IP з позначкою “dоn't fragment” не може бути доставлена адресату без фрагментації, вона просто відкидається. Допускається використання невидимої для модуля IP фрагментації, передачі і збирання дейтаграм у локальній мережі. Цей процес має назву внутрішньомережевої фрагментації . Процедури фрагментації і збирання дейтаграм повинні забезпечувати можливість розбивки дейтаграм на майже довільну кількість частин, які згодом можуть бути зібрані в одне ціле. Одержувач фрагментів використовує поле ідентифікації для того, щоб фрагменти різних дейтаграм не перемішувалися. Поле зсуву фрагмента говорить одержувачу про місце фрагмента у вихідній дейтаграмі. Поля зсуву та розміру фрагмента визначають, яка частина вихідної дейтаграми міститься в окремому фрагменті. Признак наявності наступних фрагментів (якщо він встановлений на 0) говорить про те, що фрагмент є останнім у дейтаграмі. Поле ідентифікації дозволяє розрізняти фрагменти різних дейтаграм. Модуль протоколу, що відправляє дейтаграму, встановлює значення поля ідентифікації в кожній дейтаграмі так, щоб воно було унікальним для даної пари відправник- одержувач і протоколу протягом часу присутності дейтаграми в мережі Інтернет. Цей модуль також встановлює нульові значення зсуву фрагмента і признаку наявності інших фрагментів (more-fragments flag). Для фрагментування IP-дейтаграми великого розміру модуль IP (наприклад, на маршрутизаторі) створює дві нові дейтаграми IP і копіює значення полів заголовка великої дейтаграмив заголовки обох нових дейтаграм. Дані вихідної дейтаграми розділяються на дві частини по 64 бітовій (8 октетів) границі (друга частина дейтаграми може мати розмір, не кратний 8 октетам (64 бітам), що обов′язково для першої). Назвемо кількість 8-октетових блоків у першій частині дейтаграми NFB (Number of Fragment Blocks – кількість блоків фрагментації). Перша частина дейтаграми розміщується в першій з нових дейтаграм IP і значення поля розміру встановлюється у відповідності до довжини першої дейтаграми. Признак наявності додаткових фрагментів встановлюється на одиницю. Друга частина даних розміщується в другій новоствореній дейтаграмі і значення поля розміру встановлюється відповідно до довжини другої дейтаграми. Значення признаку наявності додаткових фрагментів збігається з зазначеним у великій дейтаграмі. Значення поля зсуву другої нової ІР- дейтаграми дорівнює значенню цього поля у великій дейтаграмі плюс NFB. Цю процедуру легше узагальнити для випадку розбивки дейтаграми на n фрагментів, ніж для описаної вище розбивки на 2 фрагменти. Для збирання фрагментів дейтаграми IP, модуль IP (наприклад, на хості адресата) поєднує дейтаграми IP з однаковими значеннями полів ідентифікації, адрес відправника й одержувача, а також протоколу. Об'єднання здійснюється шляхом розміщення даних з кожного фрагмента дейтаграми у відповідну позицію, зазначену в полі зсуву в заголовку IP даного фрагмента. Перший фрагмент буде мати нульовий зсув, а для останнього фрагмента признак наявності наступних фрагментів буде мати нульове значення. 2.4. Шлюзи Шлюзи забезпечують пересилання дейтаграм IP між мережами, а також підтримку протоколу GGP (Gateway to Gateway Protocol – міжшлюзовий протокол) [7] для обміну даними маршрутизації та іншою керуючою інформацією мережі Інтернет. У шлюзах реалізація протоколів вищих рівнів не обов'язкова, функції GGP реалізуються в модулі IP.  Рис.3 Протоколи шлюзів 3. Специфікація 3.1. Формат заголовка IP  * - Признаки Рисунок 4 Приклад заголовка дейтаграми IP Версія (Version) – 4 біти Це поле визначає формат заголовку ІР. Дана специфікація описує версію 4. Розмір заголовка (IHL) - 4 біти Це поле містить розмір заголовку IP у 32-бітових словах і вказує на початок даних. Відзначимо, що мінімальне значення цього поля для коректного заголовка складає 5. Тип обслуговування (ToS) – 8 біт Поле ToS забезпечує індикацію абстрактних параметрів бажаної якості обслуговування. Це значення використовується при виборі реальних параметрів обслуговування в процесі передачі дейтаграми через окрему мережу. Деякі мережі пропонують пріоритетний сервіс, що трактує трафік з високим рівнем переваги як більш важливий (зазвичай при високому навантаженні приймається тільки трафік з рівнем переваги вище певного порога). Основний вибір здійснюється між трьома варіантами – мала затримка, висока надійність, висока пропускна здатність. біти 0–2: пріоритети біт 3: 0 = звичайна затримка, 1 = мала затримка біт 4: 0 = звичайна пропускна здатність, 1= висока пропускна здатність біт 5: 0 = звичайна надійність, 1 = висока надійність біти 6–7: зарезервовані для майбутнього використання  Пріоритети 111 – керування мережею 110 – міжмережеве керування 101 – CRITIC/ECP 100 – підвищеної терміновості 011 – терміново 010 – негайно 001 – пріоритетний 000 – звичайний Використання індикаторів “затримка” (Delay), “пропускна здатність” (Throughput), “надійність” (Reliability) може збільшувати вартість (у певному значенні) обслуговування. У багатьох мережах перевага по одному з цих параметрів може бути пов'язана з втратами по іншому. За винятком особливих випадків слід використовувати не більше двох індикаторів з трьох можливих. Значення ToS використовується для завдання способу обробки дейтаграми у процесі її передачі через систему Інтернет. Приклади відображення значень ToS на реальні параметри обслуговування в мережах AUTODIN II, ARPANET, SATNET, PRNET можна знайти в роботі “Відображення сервісу” [8]. Пріоритет “керування мережею” (Network Control) означає, що дейтаграма призначена для використання всередині мережі. Реальне трактування цього позначення визначається окремо кожною мережею. Значення “міжмережеве керування” (Internetwork Control) вказує на дейтаграми, призначені тільки для керування шлюзами. Якщо та чи інша мережа використовує значення пріоритету, то вона бере на себе відповідальність за доступ до цих полів і їх використання. Розмір (Total Length) –16 біт Це поле вказує загальний розмір дейтаграми (заголовка і даних) в октетах. Розмір цього поля дозволяє створювати дейтаграми довжиною до 65 535 октетів. Такі великі дейтаграми неприйнятні для більшості хостів і мереж. Усі хости повинні бути готові до прийняття дейтаграм розміром до 576 октетів (цілих чи у вигляді фрагментів). Хостам рекомендується передавати дейтаграми, розмір яких перевищує 576 октетів, тільки в тих випадках, коли є гарантія, що адресат може приймати такі дейтаграми. Значення 576 обране для того, щоб дейтаграми могли крім заголовка містити блок даних припустимих розмірів. Наприклад, такий розмір дозволяє передавати блоки даних розміром 512 октетів з 64-октетним заголовком. Максимальний розмір заголовка IP складає 60 октетів, а розмір типового заголовка IP – 20 октетів, що залишає досить місця для заголовків вищих рівнів. Ідентифікація (Identification) –16 біт Значення поля ідентифікації вказується відправником для забезпечення коректної зборки фрагментів дейтаграми. Признаки (Flags) – З біти Набір при знаків керування. Біт 0: зарезервований (повинен мати значення 0) Біт 1: (DF) 0 = фрагментація можлива, 1 = фрагментація заборонена Біт 2: (MF) 0 = останній фрагмент, 1 = наявність інших фрагментів  Зсув фрагмента (Fragment Offset) –13 біт Це поле вказує положення даного фрагмента у вихідній дейтаграмі. Зсув вимірюється в одиницях, кратних 8 октетам (64 біта). Зсув першого фрагмента дорівнює нулю. Час життя (ТTL) – 8 біт Це поле визначає максимальний термін існування дейтаграми в системі Інтернет. Дейтаграми з нульовим значенням часу життя повинні знищуватись. Значення цього поля змінюється при обробці заголовків IP. Час вимірюється в секундах, але, оскільки кожен модуль, що обробляє дейтаграму, повинен зменшувати значення TTL мінімум на 1 (навіть якщо обробка триває менше секунди), значення TTL слід розглядати як верхню межу терміну існування дейтаграми. Це поле введено для того, щоб позбутися дейтаграм, які не можуть бути доставлені, та визначити максимальний час існування дейтаграми. Протокол (Protocol) – 8 біт Це поле вказує протокол нижчого рівня, формат якого має інформація, що міститься полі даних Інтернет-дейтаграми. Значення, що відповідають різним протоколам, містяться в документі “Призначення числових адрес” [9]. Контрольна сума полів заголовка (Header Checksum) – 16 бітів Контрольна сума лише полів заголовка. Оскільки деякі поля заголовка (наприклад, TTL) змінюються в процесі доставки, значення контрольної суми перевіряється і обчислюється в кожній точці обробки заголовку IP. Алгоритм обчислення контрольної суми: Поле контрольної суми – це 16-бітове порозрядне доповнення суми порозрядних доповнень усіх 16-бітових слів заголовка. При обчисленні контрольної суми значення поля контрольної суми приймається за нуль. Контрольну суму легко порахувати і можна експериментально підтвердити її адекватність, але алгоритм обчислення контрольної суми є умовним і може бути замінений спеціальною процедурою контролю з використанням циклічного надлишкового коду, якщо така заміна виправдовується у процесі роботи. Адреса відправника (Source Address) – 32 біта Адреса відправника. Адреса одержувача (Destination Address) – 32 біта Адреса одержувача. Опції (Options) – змінний розмір Поле опцій не завжди присутнє в дейтаграмах. Підтримка опцій повинна реалізуватися в усіх модулях IP (на хостах і шлюзах). Використання опцій є обов”язковим не для передачі кожної окремої дейтаграми, а для реалізації модуля. У деяких середовищах використання опцій безпеки є обов'язковим для всіх дейтаграм. Поле опцій має перемінну довжину. Може бути 0 чи більше опцій. Існують два варіанти форматування опцій: 1) один октет типу опції; 2) октет типу опції, октет розміру опції та октети власне даних опцій Поле розміру опції враховує поля типу, розміру і даних опції. Октет типу опції містить три поля: 1 біт – признак копіювання; 2 біти – клас опції; 5 біт – номер опції. Признак копіювання показує, що дана опція копіюється в усі фрагменти дейтаграми: 0 – опція не копіюється 1 – опція копіюється Поле класу опцій може приймати 4 значення: 0 – керування; 1 – зарезервований для майбутнього використання; 2 – налагодження і вимірювання; 3 – зарезервований для майбутнього використання. Визначено наступні номери опцій IP:  Опис окремих опцій Кінець списку опцій  Тип=0 Ця опція вказує на завершення списку опцій. Межа цієї опції може не збігатися з закінченням заголовка IP, зазначеним у полі довжини заголовка. Дана опція служить для того, щоб показати завершення списку опцій, а не окремої опції; її використання потрібно тільки в тих випадках, коли закінчення списку опцій не збігається з завершенням заголовка IP. Цю опцію можна копіювати, додавати і видаляти при фрагментації чи з інших причин. Відсутність дій  Тип=1 Ця опція може використовуватись між іншими опціями (наприклад, для вирівнювання початку наступної опції по 32-бітовій границі). Її можна копіювати, додавати і видаляти при фрагментації чи з інших причин. Безпека Ця опція служить для хостів способом передачі інформації про безпеку, категорійність захищених даних, обмеження правил роботи з захищеними даними і ТСС (закриті групи користувачів). Опція має наступний формат:  Тип=130 Розмір=11 Безпека (поле S) – 16 бітів Вказує на один з 16 рівнів безпеки (8 рівнів зарезервовані для використання в майбутньому). 00000000 00000000 – Нетаємно 11110001 00110101 – Конфіденційно 01111000 10011010 – EFTO 10111100 01001101 – ММММ 01011110 00100110 – PROG 10101111 00010011 – Обмежений доступ 11010111 10001000 – Таємно 01101011 11000101 – Цілком таємно 00110101 11100010 – (зарезервовано для використання в майбутньому) 10011010 11110001 – (зарезервовано для використання в майбутньому) 01001101 01111000 – (зарезервовано для використання в майбутньому) 00100100 10111101 – (зарезервовано для використання в майбутньому) 00010011 01011110 – (зарезервовано для використання в майбутньому) 10001001 10101111 – (зарезервовано для використання в майбутньому) 11000100 11010110 – (зарезервовано для використання в майбутньому) 11100010 01101011 – (зарезервовано для використання в майбутньому) Категорійність (поле С) – 16 бітів Якщо це поле містить одні нулі, це означає, що переданідані не потребують ізоляції. Відомості про інші значення поля категорійності можна отримати в Розвідувальному управлінні міністерства оборони США. Коди обмеження правил обробки (поле Н) –16 бітів Значення міток контролю і можливості розголошення даних є літерно-цифровими диграфами (визначені в Довіднику Розвідувального управління міністерства оборони США DIAM 65-19, "Стандартні мітки безпеки"). Контрольний код передачі (поле ТСС) – 24 біта Служить для поділу трафіка і визначення контрольованих «груп по інтересах» серед користувачів. Значення поля ТСС є триграфами, відомості про них можна отримати в документі HQ DCA Code 530. Ця опція повинна копіюватися при фрагментації і з'являється в дейтаграмі не більше одного разу. Приблизний маршрут від відправника і запис маршруту (LSRR )  Тип=131 Опція LSRR забезпечує відправникам дейтаграм IP спосіб надання маршрутної інформації, що використовується маршрутизаторами при пересиланні дейтаграм адресату, і запису маршрутної інформації. Опція починається з коду типу опції, другий октет містить значення розміру опції з урахуванням полів типу і розміру опції, а також октету покажчика і “розмір”-3 октетів маршрутних даних. Третій октет опції вказує на октет маршрутних даних, з яких буде починатися обробка наступної адреси відправника. Покажчик залежить від цієї опції і його значення не може бути менше 4. Маршрутні дані складаються з ланцюжка адрес IP. Кожна адреса займає 32 біта (4 октети). Якщо значення покажчика перевищує довжину, це говорить, що вихідний маршрут вичерпано (а поле запису маршруту заповнено), і маршрутизація здійснюється на основі поля адреси одержувача. Якщо досягнута адреса, вказана в полі адреси одержувача, а покажчик не перевищує значення поля “розмір”, наступна адреса вихідного маршруту заміняє значення поля “адреса одержувача”, адреса в записаному маршруті заміняє щойно використане значення поля “адреса відправника”, а значення покажчика збільшується на 4. Адресою маршруту, що записується, є власна адреса модуля IP, відома у тому середовищі, куди пересилається дейтаграма. Така процедура заміни вихідного маршруту записаним маршрутом (хоча в них і використовується зворотний по відношенню один до одного порядок) означає, що опція (і весь заголовок IP) зберігає постійний розмір при передачі дейтаграми через Інтернет. Ця опція не задає маршрут точно, шлюзам і хостам IP дозволяється використовувати будь-який маршрут через будь-які проміжні шлюзи для доставки дейтаграми за адресою наступної точки маршруту. Опція повинна копіюватися при фрагментації і з'являється в дейтаграмі не більше одного разу. Точний маршрут від відправника і запис маршруту (SSRR)  Тип=137 Опція SSRR забезпечує відправнику дейтаграми IP спосіб завдання маршрутної інформації, що буде використовуватися проміжними маршрутизаторами для доставки дейтаграми адресату, і запису шляху. Опція починається з коду типу опції, другий октет містить значення розміру опції з урахуванням полів типу і розміру опції, а також октету покажчика і “розмір”–3 октетів маршрутних даних. Третій октет опції вказує на октет маршрутних даних, з яких буде починатися обробка наступної адреси відправника. Покажчик залежить від цієї опції і його значення не може бути менше 4. Маршрутні дані складаються з ланцюжка адрес IP. Кожна адреса займає 32 біта (4 октети). Якщо значення покажчика перевищує довжину, це говорить, що вихідний маршрут вичерпано (а поле запису маршруту заповнено), і маршрутизація здійснюється на основі поля адреси одержувача. Якщо досягнута адреса, вказана в полі адреси одержувача, а покажчик не перевищує значення поля “розмір”, наступна адреса вихідного маршруту заміняє значення поля “адреса одержувача”, адреса в записаному маршруті заміняє щойно використане значення поля “адреса відправника”, а значення покажчика збільшується на 4. Адресою маршруту, що записується, є власна адреса модуля IP, відома у тому середовищі, куди пересилається дейтаграма. Така процедура заміни вихідного маршруту записаним маршрутом (хоча в них і використовується зворотний по відношенню один до одного порядок) означає, що опція (і весь заголовок IP) зберігає постійний розмір при передачі дейтаграми через Інтернет. Ця опція точно задає маршрут, оскільки шлюзи і хости IP повинні передавати дейтаграму безпосередньо за наступною адресою, що зазначена у заданому відправником маршруті, тільки через безпосередньо зв′язану з ними мережу, що зазначена як наступна адреса, щоб досягти наступного шлюзу або хоста, вказаних в маршруті. Опція повинна копіюватися при фрагментації і з'являється в дейтаграмі не більше одного разу. Запис маршруту  Тип=7 Опція запису маршруту забезпечує спосіб запису маршруту дейтаграми. Опція починається з коду типу опції, другий октет містить значення розміру опції з урахуванням полів типу і розміру опції, а також октету покажчика і “розмір”-3 октетів маршрутних даних. Третій октет містить покажчик на октет, з якого починається наступна область запису маршруту. Покажчик залежить від цієї опції і його значення не може бути менше 4. Записуваний маршрут являє собою послідовність адрес IP, кожна з яких має розмір 32 біта (4 октети). Якщо значення покажчика перевищує розмір опції, це говорить про завершення запису маршруту. Хост, що відправляє дейтаграму, повинен забезпечити розмір опції, достатній для запису всіх адрес на шляху до одержувача. З додаванням адрес розмір опції не змінюється. У вихідній дейтаграмі поля адрес повинні мати нульові значення. Коли модуль IP маршрутизує дейтаграму, він перевіряє наявністьв ній опції запису маршруту. При її наявності модуль вводить в цю опцію свою адресу, яка відома в тому середовищі, куди пересилається дейтаграма, починаючи з октету, на який вказує покажчик, і збільшуючи значення покажчика на 4. Якщо поле маршрутних даних уже заповнене (значення покажчика перевищує розмір опції), дейтаграма пересилається без подальшого запису маршруту. Якщо в полі маршрутних даних ще залишилось місце, але його недостатньо для введення повної адреси, дейтаграма розглядається як помилкова і відкидається. У таких випадках хосту, що відправив дейтаграму, може бути передано повідомлення ICMP про помилку в параметрах [3]. Ця опція не копіюється у фрагменти, вона наявна тільки у першому фрагменті і не повинна включатися до дейтаграми більше одного разу. Ідентифікатор потоку  Тип=136 Розмір=4 Ця опція дозволяє передавати 16-бітові ідентифікатори потоків SATNET через мережі, що не підтримують концепцію потоків. Повинна копіюватися при фрагментації і з'являється в дейтаграмі не більше одного разу. Мітка часу ІР  Тип = 68 * Признаки Поле довжини опції вказує число октетів у полях типу опції, її довжини, покажчика, переповнення (Overflow), признаків і міток часу (усього до 40 октетів). Поле покажчика містить значення, рівне числу октетів від початку цієї опції до кінця поля міток часу плюс один (тобто вказує октет, з якого починається наступна мітка часу). Мінімальне значення покажчика – 5. Поле мітки часу вважається заповненим, коли значення покажчика перевищує розмір опції. Поле переповнення (oflw, 4 біти) вказує кількість модулів IP, які не змогли ввести свої мітки часу через недостатність місця в опції. Поле признаків (flg, 4 біти) може приймати наступні значення: 0 – тільки часові мітки, що зберігаються в послідовності 32-бітових слів; 1 – перед кожною міткою міститься IP-адреса модуля, що реєструє мітку; 3 – поля адрес IP вказуються заздалегідь. Модуль IP вводить свою мітку часу тільки в тому випадку, якщо адреса цього модуля зазначена наступною у списку. Мітка часу – це вирівняна по правому краю 32-бітова мітка, що вказує час у мілісекундах відносно півночі за універсальним часом. Якщо неможливо вказати час у мілісекундах або відповідно до універсального часу, у полемітки може вводитись будь-яке значення часу, за умови встановлення старшого біта мітки на 1 для індикації використання нестандартного значення. Хост, що відправляє дейтаграму, повинен забезпечити розмір опції, достатній для введення всіх міток часу на шляху доставки дейтаграми. Розмір опції не змінюється при додаванні міток. Вихідна дейтаграма містить нульові значення всіх передбачених в опції полів тимчасових міток (крім заздалегідь зазначених адрес IР). Якщо область запису тимчасових міток вже заповнена (значення покажчика перевищує розмір опції), дейтаграма пересилається без запису мітки часу, але значення поля переповнення збільшується на одиницю. Якщо в полі запису міток часу ще залишається вільне місце, але його недостатньо для введення повної мітки, така дейтаграма трактується як помилкова і відкидається. Відправнику дейтаграми може бути передане повідомлення ICMP про помилку в параметрах дейтаграми [3]. Опція не копіюється у фрагменти і передається тільки в першому фрагменті. Опція з'являється в дейтаграмі тільки один раз. Заповнення – змінний розмір Поле заповнення призначене для вирівнювання розміру заголовка IP по 32-бітовій границі. Для заповнення використовується значення 0. Розрахункова частина Згідно з завданням потрібно розробити навчальну програму, яка ілюструє роботу інтернет протоколу IPv4. Для виконання цього завдання було використане програмне середовище C++ Builder 6. За допомогою даного середовища була створена програма, що містить теорію про протокол IPv4 та практичне тестування для кращого засвоєння матеріалу, що міститься в теоретичній частині. Також на мові HTML був написаний код простого сайту, що містить матеріали взяті з специфікації RFC-791. Опис програми: Програма запускається за допомогою подвійного натиснення лівої кнопки миші. Зявляється вікно, спочатку потрібно в відповідному полі ввести шлях до папки Materials, в котрій знаходяться матеріали та розділи, що використовує програма, це вказано в частині вікна, де написано «примітка». Також на формі програми присутні дві кнопки – це «Переглянути теорію» та «Практичне тестування» за допомогою першої ви можете переглянути теорію, що стосується інтернет протоколу IPv4, а за допомогою другої відповідно можна пройти практичне тестування по всім розділам. Після натиснення кнопки «Переглянути теорію» стають видимими наступні компоненти форми такі, як список, в якому потрібно вибрати розділ, який ви хочете переглянути, також кнопка «Переглянути», котру потрібно натиснути при виборі розділу і поле, в якому обраний розділ буде відображатись. Можна переглядати не більше одного розділу. Після натиснення кнопки «Практичне тестування» стануть видимими відповідні компоненти, а саме: це також список в якому потрібно виділити пункт «Пройти тестування по всім розділам», кнопка «Почати тестування», після натиснення якої стають видимими два перші питання тестування, щоб перейти до наступних питань потрібно натиснути кнопку «Наступні питання», після відповіді на останнє питання у вікні програми зявляється поле, що відображає ваш результат (оцінку) по сто бальній шкалі. Результати виконання програми:  Рис.4. Вигляд вікна програми на початку роботи  Рис.5. Вигляд вікна програми після здійснення дій для перегляду теорії  Рис.6. Вигляд вікна програми після вибору практичного тестування  Рис.7. Вигляд вікна програми після завершення тестування Код програми: //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Math.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { GroupBox2->Visible=false; GroupBox3->Visible=false; GroupBox4->Visible=false; Button3->Visible=false; Button4->Visible=false; CheckListBox1->Visible=false; Memo1->Visible=false; } //--------------------------------------------------------------------------- AnsiString drive; int i,k=0,count=0,nextQ=0,min=2,sec=10,cTime=0,reg=0; float res=0; void __fastcall TForm1::Button1Click(TObject *Sender) { GroupBox2->Visible=true; Button3->Visible=true; CheckListBox1->Visible=true; Label3->Visible=true; Memo1->Visible=true; if(Edit1->Text==""){ ShowMessage("Введіть шлях до папки Materials, інакше відбудеться програмна помилка."); } CheckListBox1->Clear(); CheckListBox1->Items->Add("1. Вступ"); CheckListBox1->Items->Add("2. Загальні відомості"); CheckListBox1->Items->Add("3. Специфікація"); Memo1->Text=""; drive=Edit1->Text; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { drive=Edit1->Text; count=0; for(i=0;i<2;i++){ if(CheckListBox1->Checked[i]==true){ count++; } } if(count==0){ ShowMessage("Жоден розділ не виділений. Видільть 1 розділ."); } if(count==1){ if(CheckListBox1->Checked[0]==true){ Memo1->Clear(); Memo1->Lines->LoadFromFile(drive + ":\\Materials\\M1.txt"); } if(CheckListBox1->Checked[1]==true){ Memo1->Clear(); Memo1->Lines->LoadFromFile(drive + ":\\Materials\\M2.txt"); } if(CheckListBox1->Checked[2]==true){ Memo1->Clear(); Memo1->Lines->LoadFromFile(drive + ":\\Materials\\M3.txt"); } } if(count>1){ ShowMessage("Можна переглянути тільки 1 розділ за раз. Виділіть 1 розділ."); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if(Edit1->Text==""){ ShowMessage("Введіть шлях до папки Materials, інакше відбудеться програмна помилка."); } drive=Edit1->Text; CheckListBox1->Visible=true; CheckListBox1->Clear(); CheckListBox1->Items->Add("Тестування по всіх розділах"); GroupBox1->Caption="Навчальна програма. Розділ 2. Практика."; Button4->Visible=true; GroupBox1->Visible=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { GroupBox3->Visible=true; Button4->Visible=false; if(CheckListBox1->Checked[0]==true){ RadioGroup1->Items->Clear(); RadioGroup1->Caption="Які дві основні функції реалізу протокол ІР?"; RadioGroup1->Items->LoadFromFile(drive + ":\\Materials\\Z1.txt"); RadioGroup2->Items->Clear(); RadioGroup2->Caption="Що таке маршрутизація? "; RadioGroup2->Items->LoadFromFile(drive + ":\\Materials\\Z2.txt"); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { nextQ++; if(nextQ==1){ if(CheckListBox1->Checked[0]==true){ if(RadioGroup1->ItemIndex==2 ){ res++; } if(RadioGroup2->ItemIndex==3 ){ res++; } RadioGroup1->Items->Clear(); RadioGroup1->Caption="Виберіть зайве. Ключові механізми забезпечення сервісу протоколу ІР:"; RadioGroup1->Items->LoadFromFile(drive + ":\\Materials\\Z3.txt"); RadioGroup2->Items->Clear(); RadioGroup2->Caption="Що таке час життя (TTL)?"; RadioGroup2->Items->LoadFromFile(drive + ":\\Materials\\Z4.txt"); } } //*********************************************************************** if(nextQ==2){ if(CheckListBox1->Checked[0]==true){ if(RadioGroup1->ItemIndex==0 ){ res++; } if(RadioGroup2->ItemIndex==3 ){ res++; } RadioGroup1->Items->Clear(); RadioGroup1->Caption="В класі ІР-адреси С три старших біта мають значення:"; RadioGroup1->Items->LoadFromFile(drive + ":\\Materials\\Z5.txt"); RadioGroup2->Items->Clear(); RadioGroup2->Caption="Які функції виконують шлюзи?"; RadioGroup2->Items->LoadFromFile(drive + ":\\Materials\\Z6.txt"); } } if(nextQ==3){ if(CheckListBox1->Checked[0]==true){ if(RadioGroup1->ItemIndex==1 ){ res++; } if(RadioGroup2->ItemIndex==3 ){ res++; } } Label5->Caption="Ваша Оцінка: " + FloatToStr(ceil((res/6)*100)) + " балів"; GroupBox3->Visible=false; GroupBox4->Visible=true; } } //--------------------------------------------------------------------------- //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX //--------------------------------------------------------------------------- Висновки Отже, ІPv4 протокол четвертої версії ІР, що набув широкого поширення і зараз використовується на більшості серверах, але відбувається поступовий перехід на нову версію протоколу ІPv6 через те, що в найближчі 1-2 роки адресний простір четвертого протоколу закінчиться. В ІPv6 усуненні більшість недоліків попереднього протоколу таких як: занадто складний формат заголовку IPv4, недосконала схема розподілу адресного простору і , як наслідок, проблема переповнення таблиць маршрутів. Список використаних джерел 1. RFC-791 [Електронний ресурс] : специфікація . — Режим доступу до матеріалу : http://docs.google.com/viewer?a=v&q=cache:a4jlniIh0vIJ:www.diprozvyazok.kiev.ua/files/rfc/rfc_791.pdf+rfc-791&hl=uk&gl=ua&pid=bl&srcid=ADGEEShvg_Y7-mbP8XjJMMgAf3c6cLNu5v-FumW2ZRM93pVDxTKREDYfmYTzJQbCiD7FNqk2pA9iIMwliSgVOMPaljkynDR-YADte7YfgYcB8In6FLqsd0uozikshUzBq6Gp1ckjbudh&sig=AHIEtbQ1puBX0vHxrldDWrHU1aF_C7xZBQ
Антиботан аватар за замовчуванням

22.11.2011 17:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!