Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Порти, з’єднання і кінцеві точки.

Поиск

Як і UDP, протокол TCP застосовує поняття номера протокольного порта для ідентифікації остаточного призначення в машині. Порту відповідає мале ціле число, яке ідентифікує його. Однак, фундаментальною абстракцією для TCP є з’єднання (connection), а не порт; з’єднання ідентифікується парою кінцевих точок. TCP визначає кінцеву точку (endpoint) як пару цілих < вузол, порт >, де вузол є IP-адреса вузла і порт - TCP-порт цього вузла. Наприклад, кінцева точка <128.10.2.3,25> визначає порт 25 на машині з IP-адресою 128.10.2.3. З’єднання може бути виражене як <18.26.0.36, 1069>&<128.10.2.3,25>. Зауважимо, що даний номер TCP-порта може бути розділений серед багатьох з’єднпнь на тій самій машині, бо з’єднання в TCP ідентифікується парою кінцевих точок.

Пасивні та активні відкриття.

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

Рис. 3.86. Приклад операції протоколу з ковзним вікном, який передає три пакети.

Сегменти, потоки і номери послідовностей.

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

 

    Поточне вікно      
                       
                      ...
                       
    ­     ­     ­      

Рис. 3.87. Управління потоком через механізм ковзного вікна.

Механізм ковзного вікна TCP оперує рівнем октетів, а не сегментів чи пакетів. Октети потоку даних пронумеровані послідовно і передавач утримує три показники, асоційовані з деяким з’єднанням (див. рис. 3.87).

На рисунку зображений приклад ковзного вікна. Октети до 2 передані і підтверджені; октети від 3 до 6 передані, але не підтверджені; октети від 7 до 9 не передані, але можуть бути передані без затримки; октети від 10 і вище не можуть бути передані, доки вікно не переміститься.

Змінний розмір вікна і управління потоком.

Одна різниця між протоколом ковзного вікна TCP/IP та простим протоколом ковзного вікна, описаним вище, полягає в тому, що TCP дозволяє змінювани розмір вікна в часі. Кожне підтвердження, яке визначає, скільки октетів буде передано, містить оголошення вікна (window advertisement), яке визначає, скільки додаткових октетів даних приймач підготований прийняти. Можна розглядати оголошення вікна як визначення поточного розміру буфера. Відповідно до збільшення оголошеного розміру вікна передавач збільшує розмір свого ковзного вікна і приступає до передачі октетів, які не були підтверджені. У відповідь на зменшення оголошеного розміру вікна передавач зменшує розмір свого вікна і зупиняє передачу октетів поза границями вікна.

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

Наявність механізму управління потоком є важливе в internet-оточенні, оскільки комп’ютери з різними швидкостями і розмрами зв’язуються між собою через мережі і раутери з різними швидкостями і ємностями. При цьому існує дві проблеми:

· internet-протоколи потребують наскрізного управління потоком між джерелом і призначенням;

· internet-протоколи потребують механізму управління потоком, який дозволяє проміжним системам (напр., раутерам) управляти джерелом, яке висилає більший трафік, ніж ця проміжна система може допустити.

Коли проміжна машина перевантажена, то ця проблема називається переповнення (congestion) і механізм, який дозволяє вирішити проблему, відомий як управління переповненням. TCP/IP не має чіткого механізму управління переповненням.

Формат сегменту TCP.


 
 

Одиниця передавання між програмним забезпеченням TCP на двох машинах називається сегментом. Сегментами обмінюються для встановлення з’єднання, для передавання даних, для пересилання підтвердження, для оголошення розміру вікна і для закриття зв’язку. Обмін сегментами TCP відбувається шляхом їх інкапсуляції в IP-данограму (рис. 3.88). Оскільки переміщення підтвердження від станції A до станції B може здійснюватися в тому самому сегменті, що й передавання даних від машини A до машини B, то підтверджнення відноситься до даних, переданих від B до A. Подальший рис. 3.89 показує формат TCP-сегменту.

Рис. 3.89. Формат TCP-сегменту.

Будь-який сегмент ділиться на дві частини: заголовок і дані. TCP-заголовок переносить інформацію, потрібну для ідентифікації та управління. Звичайно розмір TCP-заголовку становить 20 байтів (при відсутності опцій). В TCP-сегменті як опції так і дані можуть бути відсутні.

Значення полів в TCP заголовку:

Номер порта джерела (source port number) ідентифікатор процесу, що передав пакет;
Номер порта призначення (destination port_number) ідентифікатор процесу, для якого пакет призначений;
Номер послідовності (sequence number) ідентифікатор першого байта в пакеті з потоку даних від передаючого TCP модуля до приймаючого TCP модуля, тобто кожен байт в потоці має свій номер. Він не обов’язково починається з 0. Оскільки TCP забезпечує дуплексний зв’язок, дані незалежно можуть передаватися в обох напрямках, кожна сторона веде свій незалежний ідентифікатор послідовності. Ідентифікатор послідовності наступного пакету збільшується на число рівне кількості байтів даних присутніх в попередньому пакеті;
Номер підтвердження (acknowledgment number) номер наступного ідентифікатора послідовності (sequence) який очікується на приймальній стороні, тим самим підтверджує, що всі попередньо передані дані прийнято правильно;
Довжина заголовку (header length - HLEN) довжина TCP заголовку в 32-х розрядних словах. Оскільки поле займає 4 біти, максимально можлива довжина заголовку становить 15´4=60 байт. Нормально (коли TCP опції не присутні) тут записано значення 5, тобто заголовок займає 20 байт;
Резерв (reserved) зарезервовано для майбутнього використання;
Коди прапорців (flags) поле, що займає 6 біт які розглядаються як 6 прапорців, один або більше з яких можуть бути встановлені в 1. · URG - в даному TCP сегменті присутні термінові дані; · ACK - поле acknowledgment використано для підтвердження прийнятих даних, тобто пакет являється підтвердженням, що не обмежує можливості даного пакету одночасно нести і дані користувача; · PSH - передати прийняті TCP модулем дані пакету якомога швидше до процесу користувача; · RST - ініціатива в розриві або відмова встановлення зв’язку; · SYN - синхронізувати ідентифікатор послідовності, проводиться при встановленні зв’язку; · FIN - джерело пакета повідомляє що воно завершило передавати свою інформацію в данїй TCP сесії, хоча не відмовляється від приймання даних від призначення; Коли в пакеті встановлений SYN, або FIN прапорець, то наступний ідентифікатор послідовності додатково збільшується на 1.
Розмір вікна (windows size) кількість байт, яку може (погоджується) прийняти джерело TCP сегменту. Саме за допомогою windows size (збільшуючи чи зменшуючи його значення) проводиться контроль потоку інформації на обох сторонах зв’язку;
Контрольна сума (checksum) контрольна сума сегменту, що покриває як TCP заголовок так і дані. Вона рахується так само як для UDP, використовуючи псевдо-заголовок. На відміну від UDP, в TCP використння контрольної суми завжди є обов’язковим;
Показник терміновості (urgent pointer) це поле має зміст (аналізується) коли в пакеті встановлено URG прапорець. Число записане тут є позитивним зміщенням, яке треба додати до ідентифікатора послідовності пакету, для того щоб можна було визначити останній байт термінових даних в пакеті;
Опції (options) додаткові поля заголовку, які розширюють можливості TCP. Вони мають змінну довжину але завжди вирівнюються на 32-х розрядне слово за допомогою поля Набивка. Одна з найчастіше використовуваних опцій це MSS (maximum segment size) - максимальний розмір TCP сегмента який TCP модуль погоджується приймати (передається на фазі встановлення зв’язку);
Дані (data) дані користувача, кількість байт може бути некратна 32-х розрядним словам.

 

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

Поле HLEN містить ціле число, яке визначає довжину заголовка сегменту в одиницях, кратних 32 бітам. Це потрібно, окільки довжина поля ОПЦІЇ змінюється в залежності від того, які опції включаються в сегмент.

Деякі сегменти передають тільки підтвердження, тоді як інші передають дані. Інші передають запити для встановлення з’єднання або для його припинення. Програмне забезпечення TCP використовує 6-бітова поле КОД для визначення мети і змісту сегменту:

Поле ВІКНО визначає розмір буфера в байтах (октетах).

Хоч TCP є протоколом, орієнтованим на потік даних, часом необхідно терміново подати сигнал про закінчення зв’язку. Для цього дані можуть бути означені як термінові, і приймач може відзначити їх прибуття незалежно від їх позиції в потоці. TCP на приймальній стороні відзначає, яка прикладна програма є віжповідальна за з’єднання в “терміновому режимі”.Після того, як всі термінові дані використані, TCP втановлює прикладну програму до нармального функціонування. Механізм, який використовує позначку термінових даних, складається з біта URG і поля Показник терміновості. Коли біт URG встановлений в 1, показник визначає позицію в сегменті, де закінчуються термінові дані.

Не всі сегменти протягом з’єднання мають однакову довжину. Програмне забезпечення TCP використовує поле ОПЦІЇ; одна з них визначає максимальний розмір сегменту (maximum segment size - MSS).

q Опція максимальний розмір сегменту для приймання (maximum receive segment size). Ця опція використовується, коли відкривається сполучення. Вона потрібна для інформування віддаленого кінця сполучення про максимальний розмір сегменту в октетах, бажаний для приймання у сполученні TCP. Цяопця вживається тільки у посатковому пакеті SYN, який відкриває сполучення TCP. Він встановлює як максимальний розмір сегменту для приймання, так і максимальний розмір оголошеного вікна TCP, пересланого до віддаленого кінця сполучення. У деяких стійких (robust) впровадженнях TCP ця опція може бути використана разом з дослідженням значення MTU шляху для встановлення розміру сегменту, який може пересилатися через сполучення без фрагментації, що є суттєвою властивістю потоку даних з високими характеристиками.

q Опція масштабування вікна (window scale). Ця опція призначена для вирішення проблеми максимального розміру вікна для шляху, який виявляє високу затримку. Опція дозволяє зсувати вправо оголошення розміру вікна на визначену величину (у двійковій арифметиці зсув вправо на один розряд відповідає множенню на 2). Без цієї опції максимальний розмір вікна, який може бути оголошений, становить 65535 байтів (максимальне можливе значення для 16-бітового поля). Обмеження швидкості пересилання для TCP здійснюється фіксацією розміру одного вікна для пересилання між надавачем і приймачем. Для високошвидкісний мереж з великою затримкою (наприклад, при використанні сателітарного каналу) це обмеження є вагомим фактором, бо воно обмежує швидкість пересилання до 65535 байтів на інтервал часу обігу петлі незалежно від перепускної здатності мережі. Використання опції масштабування вікна дозволяє надавачу TCP ефективно пристосовуватися до широкосмугових шляхів з високою затримкою, дозволяючи помістити більше даних до отримання підтвердження. Максимальний розмір вікна з цією опцією становить 230 байтів. Опція узгоджується при старті сполучення TCP і може бути вислана у пакеті тільки з прапорцем SYN. Слід відзначити, що доки процес дослідження MTU дозволяє оптимальне встановлення опції максимальний розмір сегменту для приймання, доти відповідне дослідження затримки не дозволяє надійного автоматичного встановлення опції масштабування вікна.

q Опція дозволене селективне підтвердження і селективне підтвердження (SACK-permitted and SACK). SACK – це абревіатура від selective acknowledgment (селективне підтвердження). Ця опція змінює поведінку для підтверджень TCP. Опція дозволене селективне підтвердження пропонується для віддаленого кінця сполучення при встановленні сполучення TCP як опція для пакету SYN, який відкриває сполучення. Опція селективне підтвердження (SACK) дозволяє селективне підтвердження дозволених даних. Поведінка підтверджень TCP за замовчуванням полягає у підтвердженні найбільшого номера байту у вхідній послідовності. Ця поведінка за замовчуванням може спричинити непотрібне повторне пересилання, яке може загострити умови перевантаження і обумовити втрату оригінальних пакетів. Опція SACK дозволяє приймачу модифікувати поле підтвердження для опису непослідовних блоків прийнятих даних, так що надавач може повторно переслати тільки ті блоки, які відсутні на приймальному кінці.

Будь яке стійке впровадження TCP з високими характеристиками повинне узгоджувати ці параметри при старті сесії TCP, досягаючи при цьому того, що:

q сесія використовує максимально можливий розмір IP-пакету без фрагментування при транспортуванні;

q розміри вікна, використані при транспортуванні, адекватні затримці на шляху;

q селективне підтвердження може бути використане для швидкого коригування виникнення помилок в лінії або при короткочасному погіршенні характеристик мережі.



Поделиться:


Последнее изменение этой страницы: 2016-08-01; просмотров: 260; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.214.16 (0.008 с.)