Встановлення tcp з`єднання.

Відео: Протоколи TCP і UDP

Перш ніж дані можуть бути відправлені між двома хостами по протоколу TCP, має бути встановлено з`єднання. Перший власник, називається сервер, слухає запити на підключення. Хост запитує з`єднання і називається клієнтом. Для запиту на підключення, клієнт відправляє сегмент TCP із зазначенням свого номера порту і що він хоче підключитися. SYN (синхронізація порядкових номерів), прапор встановлений, послідовність вихідних даних клієнта вказує номер.

Відео: Протокол TCP / IP



Для надання зв`язку, сервер відповідає на сегмент, в якому міститься заголовок вихідної послідовності даних номера. SYN і ACK прапори встановлені. Для підтвердження отримання даних клієнта порядковий номер у поле підтвердження містить це значення плюс один.
Для завершення протоколу встановлення з`єднання, клієнт засвідчує номер послідовності даних сервера, відправляючи назад сегмент з встановленим прапором ACK і визнання поля, що містить інформацію про сервер і порядковий номер плюс один.
TCP сегменти передаються тільки між клієнтом і сервером, якщо є дані в потоці. Відбувається опитування стани. Якщо лінія зв`язку виходить з ладу, на кінці знатимуть про відмову, поки дані не будуть відправлені. На практиці застосування тайм-ауту, як правило, розриває з`єднання, коли певний проміжок часу пройшов без активності. Проте, можна продовжити невдало сесію, як ніби нічого не відбулося, якщо ви можете встановити з`єднання знову. (Зауважимо, що це вірно тільки якщо ваш провайдер надає вам фіксований IP-адреса. якщо IP-адреса виділяється динамічно при вході в систему, ви не зможете відновити зв`язок, тому що ваш сокет (який, як ми вже зазначали раніше, складається з вашого IP-адреси і номера порту) був би інший.
Передача даних
Після того, як з`єднання було встановлено, дані можуть бути відправлені. TCP-протокол ковзного вікна означає, що немає необхідності чекати коли слід визнати один сегмент, перш ніж інший може бути відправлений. Подтверженное відправляються тільки в разі потреби негайно або через певний минулий інтервал. Це робить TCP ефективним протокол для масової передачі даних.
Одним із прикладів, коли підтвердження відправляється негайно, коли відправник заповнить вхідний буфер приймача. Управління потоком здійснюється за допомогою поля розміру вікна в заголовку TCP. У частині, що містить визнання розміру вікна дорівнюватиме нулю. Коли приймач знову може приймати дані, направляється другу підтвердження із зазначенням нових обсягів вікна. Таке визнання називається вікно оновлення.
При інтерактивній сесії Telnet, один введений символ на клавіатурі може бути відправлений у своєму сегменті TCP. Кожен персонаж може бути визнаний сегментом вступу в іншу сторону. Якщо Зауважте, що ви знайшли своє відображення на віддалений хост, тоді ще пара відрізків можуть бути отримані, перший віддаленим хостом, а другий, його визнання, по Telnet клієнта. Таким чином, один збірний характер може привести до чотирьох IP-пакетів, кожен з яких містить 20 байт IP-заголовка, 20 байт заголовка TCP і тільки один байт даних, що передаються через Інтернет.
TCP має деякі особливості, щоб спробувати зробити речі трохи більш ефективним. Підтвердження затримки до 500 мс може бути зазначено в надії, що протягом цього часу деякі дані можуть бути спрямовані в іншу сторону, і визнання контрольних даних разом з нею.
Неефективність відправки багатьох дуже маленьких сегментів зменшується на те, що називається Nagle алгоритмом. Це вказує, що сегмент TCP що містить менше даних, ніж рекламований розмір вікна одержувача може бути відправлений тільки якщо попередня частина була визнана. Невелика кількість даних об`єднуються, поки вони або дорівнюють розміру вікна, або якщо отримав визнання попередній сегмент. Чим повільніше з`єднання, тим більше буде період, протягом якого дані можна об`єднати, і, отже, менше окремих сегментів TCP буде відправлено протягом зайнятої посилання.
Виправлення помилок
важливою перевагою TCP на UDP є те, що це надійний транспортний протокол передачі даних. Він може виявити дані які були успішно отримані на іншому кінці, а якщо не були отримані, TCP може вжити заходів, щоб виправити ситуацію. Якщо нічого не допомагає, він може повідомити відправкою проблеми, так що він знає, що зроблено передачу не вдалася.
Найпоширенішою проблемою є те, що сегмент TCP втрачений або пошкоджений. TCP займається цим, відстежуючи прийняті дані, які він посилає. Якщо підтвердження не отримане протягом інтервалу певного протоколом, дані передаються знову.
інтервал, TCP чекатиме перед повторною даних і залежить від швидкості з`єднання. Протокол контролює час, яке зазвичай потрібно, щоб здобути визнання і використовує таймер для розрахунку періоду для ретрансляції. Якщо підтвердження що не отримано після повторної відправки даних один раз, він відправляється повторно, на все зростаючих інтервалах, поки не буде отримана відповідь або (зазвичай) значення застосування тайм-ауту перевищено.
Як уже згадувалося, TCP реалізує потік управління за допомогою поля розміру вікна в заголовку. Потенціал тупикової ситуації виникає, якщо приймач зупиняє потік даних, встановивши розмір вікна в нуль і сегмент вікна поновлення, який призначений для запуску потоку даних знову втрачається. На кожному кінці з`єднання будуть зупинки, чекаючи, поки інші щось зроблять.
Підтвердження самі по собі не ACKed, в цьому випадку стратегія ретрансляції не вирішить проблеми. Щоб запобігти виникненню тупикової ситуації, TCP посилає зонд повідомлення вікна через регулярні проміжки часу для запиту про його приймальнику розміру вікна.
закриття з`єднання
Коли приходить час, щоб закрити з`єднання TCP, кожен напрямок потоку даних має бути закрита в окремо. Один кінець зв`язку посилає сегмент, в якому встановлений прапор FIN (закінчив передачу даних). Отримання даного сегмента визнають, і приймаюча сторона повідомляє його застосування, щоб інша сторона закрила сполука, тому що залишилася половина з`єднання.
Приймач може, якщо побажає, продовжувати передавати дані в іншому напрямку. Зазвичай, приймаюча прикладна буде змушувати TCP закривати другу половину з`єднання, використовуючи таку ж процедуру.

P.P.S. Якщо у Вас є питання, бажання прокоментувати або поділитися досвідом, напишіть, будь ласка, в коментарях нижче.

Поділися в соц мережах:
Cхоже

Увага, тільки СЬОГОДНІ!