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