Фрагментація данограми.
В ідеальному випадку IP-данограма розміщається всередині однієї фізичної рамки. Мережеве обладнання звичайно накладає обмеження на довжину даних: Ethernet обмежує дані до 1500 байт, FDDI - приблизно до 4470 байт. Це обмеження називають максимальним блоком для пересилання (Maximum Transfer Unit ~ MTU). Кожен мережевий інтерфейс має відповідне значення MTU. Коли IP-рівень потребує передати данограму, розмір якої більший від MTU, то відбувається процес IP-фрагментації, тобто розбиття даних на частини (фрагменти).
Програмне забезпечення TCP/IP створює можливість для поділу довгої данограми на менші частини, якщо данограма передається через мережу із занадто малим MTU. Фрагментація може відбуватися як на комп’ютері, який є джерелом IP-данограми, так і на проміжному маршрутизаторі. Фрагментована данограма не збирається в одне ціле, аж поки не досягне свого місця призначення. Окремий фрагмент данограми є цілком незалежною IP-данограмою зі своїм IP-заголовком і маршрутизується незалежно від інших фрагментів, тобто фрагменти можуть приходити до джерела різними шляхами і не в тому порядку, як їх було відіслано, крім того, фрагментація може відбуватися неодноразово.
Нагадаємо які поля IP-заголовку використовуються при фрагментації:
identification | Унікальний номер кожної IP данограми, він копіюється у кожний фрагмент при фрагментації для ідентифікації фрагментів при збиранні данограми в пункті призначення. |
flags | Два молодші біти з трьох контролюють фрагментацію. Один з бітів (more fragments - MF) вказує на те, що це не останній фрагмент, тобто очікується прийняття як мінімум ще одного фрагменту. Другий з бітів (don’t fragment - DF) використовується для того, щоб позначити IP-данограму, яку не можна піддавати фрагментації. Коли при пересиланні такої данограми фрагментація все ж необхідна, то у відповідь до її джерела генерується ICMP-повідомлення про помилку. |
fragment offset | Використовується при фрагментації данограми і означає відступ в оригінальній данограмі для даних, які передаються у фрагменті, від початку даних нефрагментованої IP-данограми; визначається числом, кратним 8 байтам (байти заголовку оригінальної данограми не враховуються). Для першого фрагенту або для нефрагментованої данограми це значення завжди дорівнює 0. Щоб здійснити реасемблювання, адресат повинен отримати всі фрагменти, починаючи від фрагменту з відступом 0 до фрагменту з найбільшим відступом. Фрагменти, які не прибувають в потрібному порядку, а також ті, які не належать до комунікації між маршрутизатором, що фрагментує данограму, і адресатом, утруднюють реасемблювання. |
total length | Вказує на довжину фрагменту, тобто це поле коректується під час фрагментації. |
Фрагментацію звичайно здійснює раутер, який з’єднує мережу з більшим MTU з мережею, в якій MTU менший, ніж довжина данограми. Довжина фрагменту повинна бути кратною 8 байтам (див. FRAGMENT OFFSET), останній останній фрагмент звичайно коротший. Щоб можна було відновити копію оригінальної данограми перед її подальшим опрацюванням у місці призначення, фрагменти повинні бути реасембльовані (reassembled).
Протокол IP вимагає, щоб кожне сполучення мало MTU, не менший від 68 байтів, так що коли будь-яка мережа передбачає менше значення від вказаного (наприклад, мережа ATM має довжину комірки 53 байти, з яких 48 відведені для поміщення даних), то фрагментація і реасемблювання мусять бути вбудовані в мережевий інтерфейс у спосіб, прозорий для IP. 68 байтів – це сума максимальної довжини IP-заголовка (60 байтів) і мінімально можливої довжини даних у фрагменті, крім останнього (8 байтів). Маршрутизатор завжди повинен сприймати данограми з довжиною, яка не перевищує MTU мережі, до якої він під'єднаний, і завжди повинен опрацьовувати нефрагментовані данограми довжиною до 576 байтів. Хоч протокол IP не вимагає обслуговування нефрагментованих IP-данограм, довших від 576 байтів, однак конкретні впровадження IP-протоколу можуть працювати із довжинами 8192 байти і більше, і рідко працюють із меншими від 1500 байтів. Станції також повинні сприймати і при потребі реасемблювати данограми довжиною щонайменше 576 байтів.
Фрагменти данограм мають той самий формат, як данограми, за вийнятком поля FLAG, яке вказує, що це фрагменти.
Приклад: Оригінальна данограма з довжиною даних 1400 байтів (рис. 3.30 а) і три фрагменти (рис. 3.30 б) для мережі з MTU = 620 байт. Значення відступів на рис. 5.5 вказують кількість байтів в десятковій системі; їх слід поділити на 8, щоб отримати значення, яке зберігається в заголовках фрагментів: відступ визначається кількістю 8-байтових блоків. Довжина IP-заголовків становить 20 байтів.
(а) оригінальна данограма;
(б) фрагменти.
Рис. 3.30. Приклад фрагментації данограми.
Нефрагментована данограма позначена у заголовку бітами прапорців фрагментації, рівними нулю, також відступ нульовий. Коли здійснюється фрагментація, то повинні бути виконані такі кроки:
Біт прапорця фрагментування DF перевіряється для вияснення, чи фрагментація можлива. Якщо цей біт встановлено в “1”, то данограма повинна бути відкинена, а повідомлення про помилку через протокол ICMP доручається до джерела.
Базуючись на значенні MTU, поле даних ділиться на дві або більше частин. Всі новостворені порції даних (фрагменти), за винятком останньої, повинні мати довжину, кратну 8 байтам.
Всі фрагменти даних поміщаються в IP-данограми. Заголовки цих данограм копіюються із оригінального заголовка із такими модифікаціями:
біт прапорця MF (more fragments) встановлюється в “1”, за винятком останнього фрагменту;
поле відступ фрагменту (Fragment Offset) отримує значення, яке вказує на розташування фрагменту даних в оригінальній (нефрагментованій) данограмі;
якщо опції включені в оригінальну данограму, то біт найвищого порядку в байті тип опції (Option Type) визначає, чи опції будуть скопійовані у всі данограми фрагментів, чи тільки у перший фрагмент; наприклад, опція маршрутувати від джерела (Source Route) копіюється у всі фрагменти, а тому цей біт встановлюється в “1”;
встановлюється значення поля довжина заголовка (Header Length) для нової данограми;
встановлюється значення поля повна довжина (Total Length) для нової данограми;
переобчислюється поле контрольна сума заголовку данограми фрагменту (Header Checksum).
Кожна із форагментованих данограм пересилається як звичайна данограма. Протокол незалежно обслуговує кожен фрагмент, тобто фрагменти можуть пересилатися до призначення різними маршрутами і можуть бути суб’єктами нових фрагментацій, якщо вони перетинають мережі з меншими MTU.
- 3. Мережі ip.
- Коротка історія Internet та ip-технологій
- Модель tcp/ip.
- Потреба в проектуванні ip-мереж
- Проектування ip-мережі
- Загальний погляд на проектування.
- Етапи проектування мережі
- Розгляд застосувань
- Розгляд платформ.
- Розгляд мережевої інфраструктури.
- Ідеальна мережа
- Структура ip-адреси.
- Повнокласова та безкласова ip-адресація
- Структура ip-адрес при повнокласовій адресації.
- Використання мережевої маски.
- Безкласова ip-адресація
- Мережі та підмережі.
- Спосіб впровадження підмереж.
- Розширений мережевий префікс і мережева маска.
- Організація підмереж – складання адресного плану
- Загальні правила побудови адресного плану мережі з підмережами.
- Нові розв’язання для масштабування адресного простору Internet.
- Мережеві маски змінної довжини.
- Впровадження cidr
- Раутінг у безкласовому середовищі.
- Трансляція мережевих адрес
- Статична nat.
- Динамічна nat .
- Динамічна nat з перевантаженням.
- Динамічна nat з надлишковими зовнішніми інтерфейсами.
- Nat всередині локальних адрес.
- Динамічна nat з трансляцією номерів портів для глобальної адресації.
- Спільне використання статичної та динамічної nat.
- Переваги та недоліки nat
- Відповідність між mac-адресами та ip-адресами.
- Протоколи високого рівня і mac-адреси.
- Протокол arp.
- Протокол rarp (Reverse Address Resolution Protocol)
- Пересилання данограм.
- Концепція пересилання данограм.
- Опції данограми.
- Інкапсуляція, фрагментація та реасемлювання данограми.
- Інкапсуляція данограми.
- Фрагментація данограми.
- Реасемблювання данограми.
- Протокол повідомлень управління icmp
- Повідомлення icmp
- Раутінг в ip-мережах
- Раутінг (маршрутування) – основні поняття
- Встановлення маршруту
- Комутація.
- Маршрутовані протоколи і протоколи раутінгу
- Прямий і непрямий раутінг.
- Прямий раутінг і використання arp
- Непрямий раутінг
- Машрути за замовчуванням
- Використання протоколу icmp для маршрутизації
- Статичний раутінг та організація підмереж
- Під’єднання окремого вузла до раутера wan
- Стандартна керована конфігурація раутера
- Під’єднання локальної мережі до раутера wan
- Ієрархічний розподіл адрес класу c
- Об’єднання мереж через wan-зв’язок “пункт-пункт”
- Замовник з багатьма локалізованими lan
- Замовник з окремими lan, сполученими через виділені лінії
- Замовник із сервером мережевого доступу
- Динамічний раутінг