Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Реалізація ковзаючого вікна в протоколі TCP

Порти

Протокол TCP взаємодіє через міжрівневі інтерфейси з нижче лежачим протоколом IP і з вище лежачими протоколами прикладного рівня або додатками.

Тоді як завданням мережевого рівня, до якого відноситься протокол IP, є передача даних між довільними вузлами мережі, завдання транспортного рівня, яке вирішує протокол TCP, полягає в передачі даних між будь-якими прикладними процесами, що виконуються на будь-яких вузлах мережі. Дійсно, після того, як пакет засобами протоколу IP доставлений в комп'ютер-одержувач, дані необхідно направити конкретному процесу-одержувачеві. Кожен комп'ютер може виконувати декілька процесів, більш того, прикладний процес теж може мати декілька точок входу, виступаючих як адреса призначення для пакетів даних.

Пакети, що поступають на транспортний рівень, організовуються операційною системою у вигляді безлічі черг до точок входу різних прикладних процесів. У термінології TCP/IP такі системні черги називаються портами. Таким чином, адресою призначення, яка використовується протоколом TCP, є ідентифікатор (номер) порту прикладної служби. Номер порту в сукупності з номером мережі і номером кінцевого вузла однозначно визначають прикладний процес в мережі. Цей набір ідентифікуючих параметрів має назву сокет (socket).

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

Рис. 5. Функції протоколу TCP по мультиплексуванню і демультиплексуванню потоків

Сегменти і потоки

Одиницею даних протоколу TCP є сегмент. Інформація, що поступає до протоколу TCP в рамках логічного з'єднання від протоколів більш високого рівня, розглядається протоколом TCP як неструктурований потік байтів. Дані, що поступають, буферизуються засобами TCP. Для передачі на мережевий рівень з буфера «вирізується» деяка безперервна частина даних, яка і називається сегментом (див. рис. 5). На відміну від багатьох інших протоколів, протокол TCP підтверджує отримання не пакетів, а байтів потоку.

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

З'єднання

Для організації надійної передачі даних передбачається встановлення логічного з'єднання між двома прикладними процесами. Оскільки з'єднання встановлюються через ненадійну комунікаційну систему, засновану йа протоколі IP, то щоб уникнути помилкової ініціалізації з'єднань використовується, спеціальна багатокрокова процедура підтвердження зв'язку.

З'єднання в протоколі TCP ідентифікується парою повних адрес обох взаємодіючих процесів - сокетів. Кожен з взаємодіючих процесів може брати участь в декількох з'єднаннях.

Формальне з'єднання можна визначити як набір параметрів, що характеризує процедуру обміну даними між двома процесами. Крім повних адрес процесів цей набір включає і параметри, значення яких визначаються в результаті переговорного процесу модулів TCP двох сторін з'єднання. До таких параметрів відносяться, зокрема, узгоджені розміри сегментів, які може посилати кожна із сторін, об'єми даних, які дозволено передавати без отримання на них підтвердження, початкові і поточні номери передаваних байтів. Деякі з цих параметрів залишаються постійними протягом всього сеансу зв'язку, а деякі адаптивний змінюються.

В рамках з'єднання здійснюється обов'язкове підтвердження правильності прийому для всіх переданих повідомлень і при необхідності виконується повторна передача. З'єднання в TCP дозволяє вести передачу даних одночасно в обидві сторони, тобто повнодуплексну передачу.

В рамках встановленого з'єднання правильність передачі кожного сегменту повинна підтверджуватися квитанцією одержувача. Квитування - це один з традиційних методів забезпечення надійного зв'язку. У протоколі TCP використовується окремий випадок квитування - алгоритм ковзаючого вікна.

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

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

На рис. 6 показаний потік байтів, що поступає на вхід протоколу TCP. З потоку байтів модуль TCP нарізує послідовність сегментів. Для визначеності на малюнку прийнятий напрям переміщення даних справа наліво. У цьому потоці можна вказати декілька логічних меж. Перша межа відокремлює сегменти, які вже були відправлені і на яких вже прийшли квитанції. Наступну частину потоку складають сегменти, які також вже відправлені, оскільки входять в межі, визначені вікном, але квитанції на них поки не отримані. Третя частина потоку - це сегменти, які поки не відправлені, але можуть бути відправлені, оскільки входять в межі вікна. І нарешті, остання межа указує на початок послідовності сегментів, жоден з яких не може бути відправлений до тих пір, поки не прийде чергова квитанція і вікно не буде зрушено управо.

Рисунк 6 - Особливості реалізації алгоритму ковзаючого вікна в протоколі TCP

Якщо розмір вікна рівний W, а остання за часом квитанція містила значення N, то відправник може посилати нові сегменти до тих пір, поки в черговий сегмент не потрапить байт з номером N+W. Цей сегмент виходить за рамки вікна, і передачу у такому разі необхідно припинити до приходу наступної квитанції.

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

Вибір часу очікування (тайм-ауту) чергової квитанції є важливим завданням, результат вирішення якої впливає на продуктивність протоколу TCP. Тайм-аут не повинен бути дуже коротким, щоб по можливості виключити надмірні повторні передачі, які знижують корисну пропускну спроможність системи. Але він не повинен бути і дуже великим, щоб уникнути тривалих простоїв, пов'язаних з очікуванням неіснуючої або такої, що «заблукала» квитанції.

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

Оскільки кожен байт пронумерований, то кожен з них може бути пізнаний. Прийнятний механізм пізнання є накопичувальним, тому пізнання номера Х означає, що всі байти з попередніми номерами вже отримані.

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

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

Варіюючи величину вікна, можна впливати на завантаження мережі. Чим більше вікно, тим більшу порцію непідтверджених даних можна послати в мережу. Але якщо прийшла більша кількість даних, чим може бути прийнято програмою TCP, дані будуть відкинуті. Це приведе до зайвих пересилок інформації і непотрібного збільшення навантаження на мережу і програму TCP. \

З іншого боку, вказівка вікна малого розміру може обмежити передачу даних швидкістю, яка визначається часом подорожі по мережі кожного посиланого сегменту. Щоб уникнути застосування малих вікон, одержувачеві даних пропонується відкладати зміну вікна до тих пір, поки вільне місце не складе 20-40% від максимально можливого об'єму пам'яті для цього з'єднання. Але і відправникові не варто поспішати з посилкою даних, поки вікно не стане достатнє великим. Враховуючи ці міркування, розробники протоколу TCP запропонували схему, згідно якої при встановленні з'єднання заявляється велике вікно, але згодом його розмір істотно зменшується.

Якщо мережа не справляється з навантаженням, то виникають черги в проміжних вузлах-маршрутизаторах і в кінцевих вузлах-комп'ютерах.

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

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



Читайте також:

  1. Альтернативна реалізація із вільним вихідним кодом – сервер SAMBA
  2. Багаторівневий підхід. Протокол. Інтерфейс. Стек протоколів.
  3. Важливою складовою економічної політики 60-х рр. була реалізація програми “нових рубежів” президента Дж. Кенеді.
  4. Виконання програми - реалізація мови програмування
  5. Вироблення та реалізація раціональних управлінських рішень.
  6. Вікна та їх основні параметри
  7. Вступ до Photoshop. Елементи вікна редактора.
  8. Ділова кар’єра: планування і реалізація
  9. Економічні інтереси, їх узгодження і реалізація
  10. Елементи керування в діалогових вікнах.
  11. Етап 4. Реалізація стратегічного плану.
  12. Етапи еволюції поштових протоколів




Переглядів: 1883

<== попередня сторінка | наступна сторінка ==>
Мережозалежні та мережонезалежні рівні | АДРЕСАЦІЯ КОМП'ЮТЕРІВ

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.