TCP - TCPрус

TCP (протокол управління передачею), скорочено ТСП - це надійний транспортний протокол, режим з'єднання, описаний в РФЦ 793 ІЕТФ.

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

ТСП сесія проходить у 3 етапи

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

Структура сегмента ТСП

Numéro de sequence

Taille de l'en-tête

Somme de contrôle

Pointeur de données urgentes

Вихідний порт – номер вихідного порту

Порт призначення – номер порту призначення

Номер послідовності – номер послідовності першого байта цього сегмента

Платіжний порт – номер послідовності наступного очікуваного байта

Розмір заголовка – довжина заголовка із 32-бітових слів (вибори становлять частину заголовка)

Резерв – резерв для майбутнього використання

ECN - сигнал присутності скупчення, см РЦФ 3168

- URG - сигнал подання термінових даних

-ACK- сигнал, що пакет розписався в отриманні

-PSH- дані передані далі

-RST- ненормальний обрив з'єднання

-SYN– запит синхронізації або встановлення моєднання

-FIN– запит закінчення з'єднання

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

ЧекСуммма - контрольна сума, що обчислюється насукупності заголовків ТСП та даних, але також на псевдо-заголовках (витягнуті із заголовків IP)

Вказівник на термінові дані – відносна позиція останніх термінових даних

Опції – не обов'язково

Наповнення – нуль доданий щоб вирівняти наступні поля пакету до 32 біт, якщо потрібно

Дані - послідовність байтів, що передається додатком

даних

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

1. Клієнт передає сегмент на сервер SYN

2. Сервер відповідає сегментом SYN/ACK

3. Клієнт підтверджує сегмент ACK

Продовжуючи цей початковий обмін, номери послідовностей обох частин синхронізуються:

1. Клієнт використовує свій початковий номер послідовності в полі номер послідовності сегмента SYN (x наприклад)

2. Сервер використовує свій номер послідовності в полі номер послідовності сегмента SYN/ACK (y наприклад) і додає номер послідовності клієнта плюс 1 (х + 1) в полі очікуваний номер.

3.Клієнт підтверджує отримуючи ACK зі збільшеним номером (х+1) і очікуваний номер, що відповідає номеру послідовності сервера плюс один (у+1)

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

Нумерація послідовності та підтвердження прийому

Завдяки нумерації послідовності та сигналу підтвердження прийому кінцеві системи можуть передавати отримані дані в порядку призначеному додатком.

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

Наприклад, у випадку обміну сегментами по Телнету:

1. Об'єкт А відправляє сегмент об'єкту, що містить байт даних, номер послідовності рівний 42 (Seq=42) і номер сигналу отримання рівний 79 (Ack=79)

2/ Об'єкт відправляє сегмент АСК об'єкту А, що містить той же байт даних. Номер послідовності цього сегмента відповідає номеру підтвердження об'єкта А (Seq = 79) і номер підтвердження - номеру послідовності А саме отриманому, збільшене на кількість отриманих даних в байтах (Ack = 42 + 1 = 43),

3. Об'єкт А підтверджує отримання сегмента і відправляє АСК об'єкту В як номером послідовності свого нового номера послідовності, що став 43 і як номер підтвердження номера послідовності щойно отриманого сегмента, збільшеному на кількістьпереданих даних. (Ack = 79 + 1 = 80).

Номери послідовності це цілі 32-бітові числа, які переходять через нуль після досягнення 2^32-1. Вибір початкового номера – ключ до стійкості безпеки з'єднання ТСП.

16-бітна контрольна сума ґрунтується на доповненні на одиницю суми, доданої на одиницю всіх елементів сегмента ТСП (заголовків даних), вираховується відправником і включається в сегмент, що передається. Одержувач перераховує суму отриманого сегмента, і якщо вона збігається з отриманою контрольною сумою, вважає сегмент отриманий без помилок.

Контрольна сума, що використовується ТСП, відносно слабка відповідно до сучасних стандартів. Це обмежує використання ТСП у мережах, які пропонують малу кількість помилок. Якби ТСП було б перевизначено сьогодні, використали б ймовірно СРС на 32 бітах замість даного механізму. Це нехтування слабкістю контрольної суми частково компенсується частим використання СРС або одного з кращих інтегрованих контролів 2 рівня (передачі даних), під TCP/IP, наприклад, у кадрах РРР або зерне. Тим не менш, це не показує, що контрольна сума ТСП зайва: вивчення трафіку Інтернет показали, що часто зустрічаються апаратні і програмні помилки, які вводять помилки в пакети між вузлами, захищеними СРС і що принцип контрольної суми повністю на ТСП визначає більшість таких помилок.

Втрата сегмента управляється ТСП, використовуючи механізм затримки та повторної передачі. Після відправлення сегмента, ТСП чекатиме деякий час на отримання відповідного АСК. Час занадто короткий спричинить велику кількість непотрібних повторних передач, а час занадто довгий – уповільнить реакцію у разі поткри сегмента.

Фактично, затримка перед повторним відправленням маєбути вищим за середній РТТ сегмент, що означає часу, який бере сегмент для здійснення «руху» між клієнтом і сервером. Так як це значення може змінюватися в часі, "віднімають" вибірки постійно і обчислюють середньозважене значення.

Типове значення для альфа – 0,125. Вплив вибірки зменшується експоненційно у часі.

Затримка використовує з цієї вибірки середніх РТТ і додає запас на безпеку. Більше відмінностей між найменшим і найбільшим зразком – важливіший за великий запас на майбутню безпеку. Обчислення здійснюється починаючи із середнього відхилення між зразком та середнім значенням.

Типове значення для бета – 0,25. використовується затримка остаточно дана в наступній формулі

Іноді, коли затримка надто довга, корисно не чекати перед повторною передачею сегмента. Якщо об'єкт надіслав 3 АСК для одного сегмента, тоді він розглядає, що всі сегменти передані після отриманого сегмента втрачені і повторна передача починається негайно.

Кожен учасник у поєднанні ТСП має в своєму розпорядженні буфер отримання необмеженого розміру. З метою уникнення об'єкта, перевантаженого іншим об'єктом, ТСп передбачає багато механізмів контролю потоку. Так, кожен сегмент ТСП містить доступну величину буфері отримання об'єкта, який він передає. У відповідь об'єкт – одержувач обмежить розмір вікна з метою запобігти навантаженню.

Інші алгоритми як Нагл чи Кларк також полегшують контроль потоку.

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

Підтвердження відправлення даних або відсутність підтверджень використовуються передавачемщоб інтерпретувати неявним способом стан мережі меджу кінцевими системами. За допомогою затримок відправник і одержувач ТСП можуть змінювати властивість потоку даних. Це те, що називається глобальним контролем скупчень.

Існує безліч алгоритмів запобігання скупченням, як і версій ТСП.

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

Етап закриття з'єднання використовує «рукостискання» у 4 етапи, кожен кінець з'єднання здійснює своє завершення незалежно. Так, кінець з'єднання необхідний парі сегментів FIN та ACK для кожного кінця.

Рішення щодо зміни ТСП

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