Page 199 - 4505
P. 199

У  загальному  випадку  протоколи  TCP  вирішують  на  власний  розсуд,  коли  проводити
               блокування і передачу даних.
                     Іноді  користувачам  буває  необхідно  переконатися  в  тому,  що  усі  дані,  передані  ними
               протоколу TCP, вже відправлені. Для цієї мети визначена функція проштовхування (push). Щоб
               переконатися в тому, що дані, відправлені протоколу TCP, дійсно передані, відправник вказує,
               що їх слід проштовхнути до одержувача.
                     Проштовхування  призводить  до  того,  що  програми  протоколу  TCP  відразу  здійснюють
               відправлення  і,  відповідно,  отримання  даних,  що  залишаються.  Правильно  здійснене
               проштовхування може бути невидимо для одержувача, а сама функція проштовхування може не
               мати маркера межі запису.
                     Достовірність
                     Протокол  TCP  повинен  мати  захист  від  руйнування  даних,  втрати,  дублювання  і
               порушення  черговості  отримання,  що  викликаються  комунікаційною  системою  Internet.  Це
               досягається  привласненням  чергового  номера  кожному  передаваному  сегменту,  а  також
               вимогою підтвердження (ACK) від програми TCP, що приймає дані. Якщо підтвердження не
               отримано  протягом  контрольного  інтервалу  часу,  то  дані  посилаються  повторно.  З  боку
               одержувача номера черги використовуються для відновлення черговості сегментів, які можуть
               бути отримані в неправильному порядку, а також для обмеження можливості появи дублікатів.
                     Ушкодження  фіксуються  за  допомогою  додавання  до  кожного  передаваного  сегменту
               контрольної суми, перевірки її при отриманні і наступній ліквідації дефектних сегментів.
                     До  тих  пір,  поки  програми  протоколу  TCP  продовжують  функціонувати  коректно,  а
               система  Internet  не  розвалилася  повністю  на  складові  частини,  помилки  пересилки  не
               впливатимуть  на  правильне  отримання  даних.  Протокол  TCP  захищає  від  помилок
               комунікаційної системи Internet.
                     Управління потоком
                     Протокол  TCP  дає  засоби  одержувачеві  управляти  кількістю  даних,  посиланих  йому
               відправником.  Це  досягається  поверненням  так  званого  "вікна"  (window)  разом  з  кожним
               підтвердженням,  яке  вказує  діапазон  прийнятних  номерів,  що  йдуть  за  номером  останнього
               успішно прийнятого сегменту. Вікно визначає кількість октетів, яку відправник може послати
               до отримання подальших вказівок.
                     Розподіл каналів
                     Щоб  дозволити  на  окремо  взятому  комп'ютері  багатьом  процесам  одночасно
               використовувати комунікаційні можливості рівня TCP, протокол TCP надає на кожному хост-
               компьютере  набір  адрес  або  портів.  Разом  з  адресами  мереж  і  хост-комп’ютеров  на
               комунікаційному рівні Internet вони утворюють сокет (socket - роз'їм).
                     Кожне з'єднання  унікальним чином ідентифікується парою сокетів. Таким чином, будь-
               який сокет може одночасно використовуватися в багатьох з'єднаннях.
                     Співвідношення  портів  і  процесів  здійснюється  кожним  хост-компьютером  самостійно.
               Проте  часто  використовувані  процеси  зв'язуються  з  фіксованими  документованими  сокетами
               (HTTP -  порт 80, FTP - 21 і так далі).
                     Цей сервіс можна згодом використовувати через відомі адреси. Установка і налаштування
               адрес портів для інших процесів може включати динамічніші механізми.
                     Робота із з'єднаннями
                     Механізми  управління  потоком  і  забезпечення  достовірності,  описані  вище,  вимагають,
               щоб  програми  протоколу  TCP  ініціалізували  і  підтримували  певну  інформацію  про  стан
               кожного  потоку  даних.  Набір  такої  інформації,  що  включає  сокети,  номери  черги,  розміри
               вікон,  називається  з'єднанням.  Кожне  з'єднання  унікальним  чином  ідентифікується  парою
               сокетів на двох кінцях.
                     Якщо два процеси бажають обмінюватися  інформацією, відповідні програми протоколу
               TCP повинні спершу встановити з'єднання (на кожній стороні  ініціалізувати  інформацію про



                                                                      195
   194   195   196   197   198   199   200   201   202   203   204