Реферат з курсу
“Інтелектуальні мережі”
студентки IV курсу ДКТ
Пархоменко Олени
Київ, 1999
Вступ
Протокол TCP (Transmission Control Protocol) є одним з базових протоколів транспортного рівня мережі Internet. Цей протокол дозволяє виправляти помилки, які можуть виникнути в процесі передачі пакетів, та є протоколом зі встановленням логічного з’єднання - віртуального каналу. По цьому каналу передаются и приймаются пакети з реєстрацією їх послідовності, здійснюється управління потоком пакетів, организовуєтся повторна передача спотворених пакетів; наприкінці сеансу канал розриваєтся. При цьому протокол TCP є єдиним базовим протоколом з сімейства TCP/IP, який має додаткову систему ідентифікації повідомлень та з’єднання. Саме цьому протоколи прикладного рівня FTP та TELNET, що надають користувачам віддалений доступ на хости Internet, реалізовані на базі протокола TCP.
Протокол TCP забов'язаний забезпечити надійний сервіс для комунікацій між процесами в багатомережній системі. Протокол TCP повинен бути спільним протоколом для комунікацій між хост-комп’ютерами у великій кількості мереж.
Отже, TCP - це протокол забезпечення надійності прямих з’єднань, створений для багаторівневої ієрархії протоколів, що підтримують міжмережні застосування. Протокол TCP забезпечує надійність комунікацій між парами процесів на хост-комп’ютерах, під’єднаних до різних комп’ютерних комунікаційних мереж, які з’єднані в єдину систему. Щодо надійності протоколів більш низького, ніж TCP, рівня зроблені досить скромні вимоги. TCP передбачає, что він може отримати простий, потенційно ненадійний сервіс для своїх датаграм з боку протоколів нижнього рівня. В принципі, протокол TCP повинен бути роботоздатним на великому наборі комунікаційних систем, починаючи з кабельних з’єднань та закінчуючи мережами з переключенням пакетів чи електричних ланцюгів.
TCP займає в багаторівневій архітектурі протоколів нишу безпосередньо над протоколом Internet, який дозволяє протоколу TCP відправляти та отримувати сегменти інформації змінної довжини, замкнені в оболонку Internet датаграм. Internet датаграма надає засоби для адресацій відправника та отримувача сегментів TCP в різних мережах. Протокол Internet також здійснює будь-яку фрагментацію та зборку сегментів TCP, необхідну для здійснення передачі та доставки через велику кількість мереж та проміжних шлюзів. Протокол Internet також обробляє інформацію про приорітет, класифікацію безпеки, а також здійснює розмежування TCP сегментів. Так що ця інформація може бути передана напряму крізь множину мереж.
Інтерфейси
Протокол TCP взаємодіє з одного боку з користувачем чи прикладною програмою, а з іншого - з протоколом більш низького рівня, таким як протокол Internet.
Інтерфейс між прикладним процесом та протоколом TCP складається з набору викликів, які схожі на виклики операційної системи, що надаються прикладному процесу для управління файлами. Наприклад, в цьому випадку існують виклики, щоб відкрити та закрити з’єднання, відправити та отримати дані при встановлених з’єднаннях. Передбачається також, що протокол TCP зможе асинхронно взаємодіяти з прикладними програмами. Інтерфейс мІж протоколом TCP та протоколами більш низького рівня заданий значно меншою мірою, за винятком того, має існувати деякий механізм, за допомогою якого ці два рівня можуть асинхронно обмінюватися інформацією один з одним. Вважається, що протокол нижнього рівня задає цей інтерфейс. Протокол TCP зпроектований таким чином, щоб працювати з досить різноманітним середовищем об’єднаних комп’ютерных мереж.
Дія
Як зазначалося раніше, головною метою протокола TCP є забезпечення надійного, безпечного сервису для логічних ланцюгів чи з’єднань між парами процесів. Щоб забезпечити такий сервіс, базуючись на менш надійних комунікаціях Internet, система повинна мати можливості для роботи у наступних областях:
- базова передача даних
- достовірність
- управління потоком
- розподілення каналів
- работа зі з’єднаннями
- приорітет та безпека
Основні дії протокола TCP у кожній з цих областей описані у наступних параграфах.
Базова передача даних
Протокол TCP здатний передавати неперервні потоки октетів між своїми клієнтами в обох напрямках, пакуючи деяку кількість октетів у сегменти для передачі крізь системи Internet. У загальному випадку протоколи TCP вирішують за власним розсудом, коли проводити блокування та передачу даних. Іноді користувачам буває необхідно впевнитись в тому, що всі дані, передані їми протоколу TCP, вже відправлені. Для цього визначена функція проштовхування (push). Щоб впевнитись в тому, що дані, відправлені протоколу TCP, дійсно передані, відправник вказувє, що їх слід проштовхнути користувачеві. Проштовхування призводить до того, що програми протокола TCP одразу здійснюють відправку та, відповідно, отримання даних, що залишилися. Правильно здійснене проштовхування може бути невидиме для отримувача, а сама функция проштовхування може не мати маркера межі запису.
Достовірність
Протокол TCP повинен мати захист від руйнування даних, втрати, дубляції та порушення порядку отримання, викликаних комунікаційною системою Internet. Це досягається присвоєнням порядкового номеру кожному октету, що передається, а також вимогою підтвердження (ACK) віт програми TCP, яка приймає дані. Якщо підтвердження не отримане протягом контрольного інтервалу часу, то дані посилаються знову. З боку отримувача номери черги використовуються для відтворення порядку сегментів, які можуть бути отримані у неправильному порядку, а також для обмеження можливості появи дублікатів.
Пошкодження фіксуються шляхом додавання до кожного сегменту, що передається, контрольної суми, перевірки її приотриманні та подальшій ліквідації дефектних сегментів.
Управління потоком
Протокол TCP надає отримувачу засоби, щоб керувати кількістю даних, які посилає йому відправник. Це досягається викликом так званого "вікна" (window) разом с кожним підтвердженням, яке вказує діапазон прийнятних номерів, що йдуть за номером останнього успішно прийнятого сегменту. Вікно визначає кількість октетів, яку відправник може послати до отримання подальших вказівок.
Розподілення каналів
Щоб дозволити багатьом процесам на окремо взятому комп’ютері одночасно використовувати комунікаційні можливості рівня TCP, протокол TCP надає на кожному хост-комп’юторі набір адрес чи портів. Разом з адресами мереж та хост-компьютерів на комунікаційному рівні Internet вони утворюють сокет (socket – роз’єм).
Кожне з’єднання унікальним чином ідентифікується парою соктів. Таким чином, будь-який сокет може одночасно використовуватись у багатоьх з’єднаннях.
Співвіднесення портів та процесів здійснюється кожним хост-комп’ютером самостійно. Проте виявляється корисним зв’язувати часто використовувані процеси (такі як "logger" чи сервіс з розподіленням часу) з фіксованими документованими сокетами.
Робота зі з’єднаннями
Механізми управління потоком та забезпечення достовірності, описані вище, вимагають, щоб програми протокола TCP ініціалізували та підтримували певну інформацію про стан кожного потоку даних. Набір такої інформації, до складу якого входять сокети, номери черги, разміри вікон, має назву з’єднання. Кожне з’єднання унікальним чином ідентифікуєтся парою сокетів на двох кінцях.
Якщо два процеси бажають обмінюватись інформацією, відповідні програми протоколу TCP повинні спочатку встановити з’єднання (на кожному боці ініціалізувати інформацію про статус). По закінченню обміну інформацією з’єднання повинно бути розторгнуте чи закрите, щоб звільнити ресурсы для інших користувачів. Оскільки з’єднання повинні встановлюватися між ненадійними хост-комп’ютерами та через ненадійну комунікаційну систему Internet, то, щоб запобігти помилковій ініціалізації з’єднань, використовується механізм підтвердження зв’язку з хронометрованими номерами черги.
Приорітет та безпека
Користувачі протокола TCP можуть вимагати для своєго з’єднання приорітет та безпеку. Передбачені прийняті за замовчанням характеристики з’єднань, коли такі параметри не потрібні.
Склад та призначення полів заголовку
TCP-сегменти відправляються як IP-датаграми. Заголовок TCP, який йде за IP-заголовком, містить інформацію TCP-протоколу.
Мал. 1 Заголовок TCP-пакета
Source Port (16 біт). Порт відправника.
Destination Port (16 біт). Порт отримувача.
Acknowlegement Number (32 біта). Поле номера кадру підтвердженого отримання. Якщо пакет містить встановлений контрольний біт ACK, то це поле містить номер наступного пакета даних відправника, який очікує отримувач. При встановленому з’єднанні пакет підтвердження відправляється завжди.
Data Offset (4 біта). Поле величини зміщення даних. Воно містить кількість 32-бітних слів заголовку TCP-пакету. Це число визначає зміщення розташування даних у пакеті.