logo
Part_3

Реасемблювання данограми.

Механізм фрагментації та збирання або реасемблювання (reassembling) данограм розроблено так, що для вищих рівнів (TCP, UDP) він виглядає зовсім прозоро, хоча впливає на їх кількісні характеристики пеерсилання даних. У TCP/IP фрагменти данограми передаються від пункту фрагментації до адреси станції-призначення і лише там реасемблюються. Поле ідентифікація (Identification) данограми містить унікальний номер, встановлений станцією-джерелом у межах, визначених 16-бітовим числом. Оскільки це поле не змінюється при фрагментації, то фрагмент, яких досягає приймальну станцію, може бути ідентифікований на підставі значень поля ідентифікація та IP-адрес джерела і призначення. При цьому також перевіряється значення поля протокол (Protocol).

Для реасемблювання фрагментів приймальна станція виділяє буфер, як тільки поступає перший фрагмент данограми. Водночас стартує програма таймера реасемблювання. Якщо таймер вичерпується, а не всі фрагменти данограми прийняті, то данограма знищується. Початкове значення цього таймера називають часом існування (time to liveTTL) данограми. Значення TTL залежить від впровадження протоколу IP; окремі впровадження дозволяють конфігурувати його.

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

Збереження фрагментів на всьому шляху до остаточного пункту призначення має два недоліки. По-перше, оскільки данограма не реасемблюється безпосередньо після проходження через мережу з малим MTU, то малі фрагменти повинні передаватися від пункту фрагментації до остаточного призначення. Це приводить до зменшення ефективності передавання, бо не використовуються можливості проміжних мереж із більшим MTU. По-друге, якщо будь-який фрагмент втрачений при передаванні, то данограма не може бути реасембльована. Тому ймовірність втрати данограми зростає при здійсненні фрагментації, бо втрата хоч одного фрагменту означає втрату всієї данограми - не існує механізму для повторного передавання окремого фрагменту. Однак, незважаючи на ці недоліки, реасемблювання на приймальному кінці загалом працює добре. Воно дозволяє незалежно маршрутувати кожен фрагмент і не вимагає від проміжних раутерів зберігати фрагменти або реасемблювати їх.