Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lections (1).doc
Скачиваний:
22
Добавлен:
12.02.2016
Размер:
1.43 Mб
Скачать

Надійна потокова транспортна служба tcp

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

TCP забезпечує надійність. Коли TCP відправляє дані на другий кінець зв’язку, він вимагає, щоб при їх отриманні було вислано підтвердження. Якщо його нема, TCP автоматично передає дані повторно і збільшує час очікування на підтвердження.

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

В певний момент часу TCP може отримати значення RTT між клієнтом і сервером =1с., а потім через 30 с. змінити RTT і отримати значення 2-3 с., що пояснюється відмінностями мережевого трафіка. TCP упорядковує дані, зв’язуючи даний порядковий номер з кожним відправленим байтом.

Сегмент – це блок даних, що передається протоколом TCP до протоколу IP. Якщо який-небудь сегмент приходить поза чергою, приймальний TCP заново впорядковує сегменти, базуючись на їх порядкових номерах, перед тим як відправити дані прикладній програмі.

Якщо TCP отримує продубльовані дані, він може виявити цю ситуацію по порядкових номерах, і ці дані будуть проігноровані.

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

З’єднання TCP є двостороннім (full duplex) – аплікація відправляє і приймає дані в обох напрямках в любий момент часу. TCP повинен відслідковувати порядкові номери і розміри вікна для кожного напрямку потоку даних.

Встановлення і завершення з’єднання tcp.

При встановленні з’єднання TCP дії відбуваються в наступній послідовності:

1) сервер повинен бути підготовлений для того щоб прийняти з’єднання, переважно це досягається шляхом виклику функцій socket, bind, listen, і називається пасивним відкриттям.

2) клієнт виконує активне відкриття, викликаючи функцію connect. Це заставляє клієнта TCP послати сегмент SYN. Для того щоб повідомити серверу початковий порядковий номер даних, в який клієнт буде посилати для з’єднання. З сегментом SYN не посилаються дані. Він містить заголовок IP, заголовок TCP і певні параметри TCP.

3) сервер повинен підтвердити отримання клієнтського сегмента SYN, а також сервер повинен послати власний сегмент SYN, що містить початковий порядковий номер для даних, які сервер буде посилати по з’єднанню. Сервер посилає SYN i ASK – підтвердження прийому клієнтського SYN у вигляді клієнтського сегменту.

4) клієнт повинен підтвердити SYN від себе.

j – початковий порядковий номер клієнта

k – початковий порядковий номер сервера

Номер підтвердження в ASK – це наступний порядковий номер, який передбачається на тому кінці зв’язку, який відправив сегмент SYN. Так як SYN займає 1 байт простору порядкових номерів, номер підтвердження в сегменті ASK кожного сегмента SYN – це початковий порядковий номер, збільшений на 1.

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