Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsiya_6.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
187.16 Кб
Скачать

Обчислення rtt з урахуванням повторної передачі

Припустимо, що сегмент не підтверджений протягом часу повторення, і він таки переданий повторно. Коли TCP передавача отримує підтвердження на цей сегмент, він не знає – підтвердження це на вихідний сегмент або на повторний. Значення RTT тому обчислюється, базуючись на прибуття сегмента. Однак якщо вихідне повідомлення було втрачено і підтвердження прийшло на повторну одиницю, значення RTT буде обчислено від часу повтору сегмента. Це дилема, яка вирішується таким чином:

• не визначати RTT повторного сегмента в обчисленні нового RTT;

• не коректувати значення RTT, поки вам не посланий сегмент і не отримано підтвердження без необхідності повторної передачі.

Час наполегливості

Для того щоб мати справу з оголошенням вікна з нульовим розміром, TCP необхідний інший таймер. Припустимо, TCP приймача отримав сповіщення про нульовий розмірі вікна. TCP передавача потім зупиняє передачу сегментів, поки TCP приймача не надішле підтвердження, який сповіщає про ненульовий розмірі вікна. Це підтвердження може бути втрачено. Нагадаємо, що підтвердження не підтверджуються в TCP. Якщо TCP приймача думає, що він відпрацював, і чекає, що TCP передавача пришле ще сегменти, TCP передавача, не прийнявши підтвердження, чекає ще одне повідомлення TCP для того, щоб послати повідомлення про розмір вікна. І обидва TCP можуть продовжувати чекати один одного нескінченно. Щоб скорегувати цей недолік, TCP використовує час наполегливості для кожного з'єднання. Коли TCP передавача отримує підтвердження з розміром вікна нуль, він запускає таймер наполегливості. Коли час таймера наполегливості закінчиться, TCP передавача посилає спеціальний сегмент, званий проба. Цей сегмент містить тільки 1 байт даних. Він має порядковий номер, але порядковий номер ніколи не підтверджується; він навіть ігнорується в обчисленнях порядкових номерів для решти даних. Значення таймера наполегливості встановлюється за часом повторення передачі. Однак якщо відгук не отриманий від приймача, надсилається іншій пробний сегмент і значення таймера наполегливості дублюється і встановлювати заново. Передавач продовжує передавати пробні сегменти і дублювати і встановлювати заново значення таймера наполегливості, поки не досягне порогового значення (зазвичай 60 с.). Після цього передавач посилає один пробний сегмент кожні 60 с., Поки вікно не відкриється знову.

Черговий таймер

Черговий таймер використовується в деяких реалізаціях для запобігання тривалих не працюючих з'єднань двох TCP. Припустимо, клієнт відкрив з'єднання TCP до сервера, потім передав деякі дані і затих. Може бути, клієнт "впав", в цьому випадку з'єднання залишиться відкритим назавжди. Щоб позбавитися від цієї ситуації, в більшості реалізацій обладнується сервер з черговим таймером. Кожен раз, коли сервер "чує" клієнта, він перевстановлювати таймер. Відлік часу зазвичай - 2:00. Якщо немає жодного відгуку після 10 проб (див. попередній розділ), кожна по 75 разів, він припускає, що клієнт "не в порядку", і закінчує з'єднання.

Таймер часу очікування

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

Короткі висновки:

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

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

• На транспортному рівні TCP групує кілька байтів в пакет, званий сегментом, додає заголовок до кожного сегмента (з метою контролю) і доставляє сегмент на IP-рівень для передачі. Сегмент інкапсулюється і передається в IP-дейтаграми.

• TCP пропонує повне дуплексне обслуговування, де дані можуть рухатися в обох напрямах одночасно. Кожен TCP тому має буфер прийому і передачі і посилає сегменти в обидва напрямки.

• У переданій блоці даних є два поля – порядковий номер байта і номер підтвердження байта. Ці два поля посилаються на номер байта, а не на номер сегмента. Нумерація не обов'язково починається від 0, вона починається з випадкового числа. TCP генерує випадковий номер між 0 і 232-1 для номера першого байта. Порядковий номер для кожного сегмента – це номер першого байта, стерпного в цьому сегменті.

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

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

• Серйозна проблема може виникнути при роботі з ковзним вікном, коли яка-небудь передавальна прикладна програма повільно створює дані, або приймальня прикладна програма повільно приймає дані, або мають місця обидва випадки. У будь-якій з цих ситуацій результат полягає в посилці дуже маленьких сегментів, які зменшують ефективність роботи. Ця проблема називається синдромом "дурного вікна".

• TCP забезпечує достовірність, використовуючи контроль помилок. Контроль помилок включає в себе механізми виявлення: перекручених сегментів, втрати сегментів, порушення порядку проходження сегментів, дублювання сегментів.

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

часу очікування.

• TCP застосовує таймер повторної передачі, який контролює час повторної передачі і час очікування підтвердження сегмента, щоб контролювати втрати або видалення сегментів.

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

• Черговий таймер застосовується в деяких реалізаціях для запобігання тривалих вільних з'єднань двох TCP.

• Таймер часу очікування використовується після закінчення з'єднання. Коли TCP закривається, він реально не роз'єднується.

 

130

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]