Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ysatenko_Osnovi Internet.doc
Скачиваний:
0
Добавлен:
17.11.2019
Размер:
1.1 Mб
Скачать

2.5.3 Фрагментація та дефрагментація датаграм

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

Тому другою основною функцією IP-протоколу є фрагментація й дефрагментація датаграм для передачі даних через мережі з малим розміром пакетів.

IP-протокол використовує спеціальне поле Flags в IР-заголовку для фрагментації та відновлення IP-датаграм, коли це необхідно для їх передачі через мережі з малим розміром пакетів.

Ще раз звернемо увагу на те, що кожний IP-модуль повинен бути здатний передати датаграму з 68 октетів без подальшої фрагментації. Це відбувається тому, що IP-заголовок може включати до 60 октетів, а мінімальний фрагмент – 8 октетів. Кожен IP-одержувач повинен приймати датаграму розміром в 576 октетів як єдиний шматок, або у вигляді фрагментів, що підлягають збиранню.

Розглянемо, як реалізуються процедури фрагментації й дефрагментації на прикладах.

У наступних псевдопрограмах введемо такі позначення:

 менше або дорівнює;

 не дорівнює;

= дорівнює;

 встановлюється в;

вираз «від x до y» варто розуміти як інтервал [x,y).

Наприклад, вираз "від 0 до 5" означав би включення 0, 1, 2, 3 й 4, але не включало б 5;

FO – зсув фрагмента;

IHL – довжина IP-заголовка;

DF – прапорець заборони фрагментації;

MF – прапорець появи додаткових фрагментів;

TTL – час існування;

NFB – кількість фрагментів;

TL – загальна довжина;

TDL – загальна довжина даних;

OFO – старий зсув фрагмента;

OIHL – стара довжина IP-заголовка;

OMF – старе значення прапора MF;

OTL – старе значення загальної довжини;

NFB – кількість блоків фрагментації;

MTU – максимальна довжина переносу;

BUFID – ідентифікатор буфера;

RCVBT – бітова таблиця фрагментації;

TLB – нижня границя для значення таймера.

Процедура фрагментації

Датаграма найбільшого розміру, що ще може бути передана через чергову локальну мережу, називається максимальною одиницею, що передається (maximum transmission unit – MTU).

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

Процедура:

BEGIN

IF TL  MTU

THEN відправити датаграму на наступні процедури обробки

ELSE

IF DF =1

THEN зруйнувати датаграму

ELSE

BEGIN

(1) Створити перший фрагмент:

      • скопіювати вихідний IP-заголовок;

      • OIHL  IHL; OTL  TL; OMF  MF;

      • NFB  (MTU - IHL4)/8;

      • взяти перші NFB8 октетів даних;

      • скорегувати заголовок:

          • MF1;TL (IHL4)+(NFB8);

          • перерахувати контрольну суму;

      • направити даний фрагмент на наступні процедури обробки.

(2) Створити другий фрагмент:

  • вибірково скопіювати IP-заголовок (деякі опції не копіюються);

  • додати дані, що залишилися;

  • корегування заголовка:

    • IHL(((OIHL*4)-(довжина нескопійованих опцій))+3)/4;

    • TLOTL -NFB8 -(OIHL-IHL)4;

    • FO  OFO + NFB;

    • MF OMF;

    • перерахувати контрольну суму;

          • приготувати цей фрагмент до повторного тесту на необхідність фрагментації. Виконати тест.

END

END.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]