170 likes | 361 Views
Комп'ютерні мережі. Лекція 1 3 Протоколи транспортного рівня. План лекції. TCP та UDP порти Протокол UDP – функції і формат заголовку Протокол TCP Формат заголовку Керування логічним з'єднанням. Порти.
E N D
Комп'ютерні мережі Лекція 13 Протоколи транспортного рівня
План лекції • TCP та UDP порти • Протокол UDP – функції і формат заголовку • Протокол TCP • Формат заголовку • Керування логічним з'єднанням Лекція 13
Порти • Протоколи транспортного рівня здійснюють мультиплексування-демультиплексування інформаційних потоків • Відправники і одержувачі пакетів ідентифікуються за номерами портів • Номери портів ≤1023 призначаються централізовано (організація IANA – Internet Assigned Numbers Authority) • Офіційний сайт організації IANA. Номери портів:http://www.iana.org/assignments/port-numbers Лекція 13
Схема мультиплексування-демультиплексування Telnet FTP HTTP DNS TFTP SNMP 23 21 80 53 69 161 Протокол TCP Протокол UDP Протокол IP Лекція 13
UDP • Протокол UDP є дуже простим дейтаграмним протоколом • Стандарт протоколу визначений у RFC 768: RFC-0768, User Datagram Protocol / J. Postel. – August 1980 • Основні функції UDP обмежуються мультиплексуванням і демультиплексуванням інформаційних потоків. • UDP дозволяє передавати в мережу одночасно дані від різних програм і приймати з мережі дані, що призначені різним програмам • Ідентифікація програм-відправників і програм-одержувачів здійснюється за номерами UDP-портів • Заголовок пакета (дейтаграми) UDP має довжину 8 байтів Лекція 13
Заголовок UDP (8 байт) • Максимальна довжина пакета 65535 байтів (16 двійкових розрядів) • UDP повністю покладається на ідентифікацію відправника засобами мережного рівня, тобто за IP-адресою • 16-розрядна контрольна сума захищає від помилок при передаванні даних, але жодним чином не захищає від цілеспрямованої модифікації даних • UDP не гарантує доставку і не має засобів контролю доставки — це покладається на протокол вищого (прикладного) рівня Лекція 13
TCP • Протокол TCPє протоколом із встановленням логічного з’єднання • У межах з’єднання здійснюються реєстрація послідовності пакетів, підтвердження доставки кожного пакета, керування потоком пакетів, повторна передача спотворених пакетів. Деякі із зазначених функцій надають сервіс із захисту від підміни суб’єктів з’єднання. • RFC-0793, Transmission Control Protocol / J. Postel. – September 1981 • За прийнятою термінологією, порція даних, яка передається як одне ціле, в протоколі TCP називається сегментом • Пакет TCP має заголовок мінімум 20 байтів завдовжки, після якого розміщуються дані Лекція 13
Заголовок TCP Лекція 13
Прапорці TCP • В заголовку присутні командні біти — прапорці, за допомогою яких здійснюється керування з’єднанням • CWR (Congestion Window Reduced) – встановлюється хостом, щоб показати, що було одержано TCP сегмент з установленим прапором ECE • ECE (ECN-Echo)вказує: • Якщо встановлено прапорець SYN (1) – хост підтримує ECN (явне повідомлення про перевантаження) • Якщо прапорець SYN не встановлено (0) – у ході звичайного обміну одержано пакет з прапорцемCongestion Experienced(повідомлення про перевантаження мережі) в заголовку IP • URG (Urgent Pointer field significant) – термінове повідомлення, у полі Urgent Pointerміститься 16-розрядний покажчик (зміщення від Sequence #)на кінець термінових байтів • ACK (Acknowledgment field significant) – поле Acknowledgement #містить значущі дані – квитанція на сегмент, що був прийнятий • PSH (Push Function) – запит на відправлення повідомлення без очікування заповнення буфера • RST (Reset the connection) – запит на закриття з’єднання • SYN (Synchronize sequence number) – повідомлення, що використовується для синхронізації лічильників переданих даних при встановленні з’єднання • FIN (No more data from sender) – ознака передачі останнього байта даних • Перші 2 з прапорців додані RFC 3168, останні 6 були впроваджені з самого початку Лекція 13
Сеанс ТСР • Виконання протоколу TCP можна розділити на три стадії • Встановлення з’єднання (connection establishment) • З’єднання повинно бути встановлено шляхом процедури рукостискання у три кроки • Передавання даних (data transfer) • Здійснюється контроль послідовності переданих даних і підтвердження доставки, а також керування з’єднанням на підставі завантаженості мережі • Завершення з’єднання (connection termination) • Після завершення передавання даних на цій стадії здійснюється закриття встановлених віртуальних каналів і звільнення усіх виділених ресурсів Лекція 13
Стани сеансу ТСР Лекція 13
Стани сеансу ТСР (діаграма) Лекція 13
Процедура встановлення TCP-з’єднання • Для встановлення TCР-з’єднання передбачена процедура рукостискання (Handshake) у три кроки Перший крок: A → B(клієнт серверу): SYN, ISSa • З прапорців встановлений лише SYN (так званий SYN-пакет) • У полі Номер послідовності установлено початкове 32-розрядне значення ISSa (ISN — Initial Sequence Number) • Сервер отримує сегмент, запам’ятовує номер послідовності і намагається створити сокет (буфери і керуючі структури пам’яті) для обслуговування нового клієнта Лекція 13
Процедура встановлення TCP-з’єднання (другий крок) B → A(сервер клієнту): • Якщо сервер успішно створив сокет, він надсилає пакетSYN, ACK, ISSb, ACK(ISSa+1) • Встановлені прапорці SYN і ACK • У полі Номер послідовності міститься початкове значення ISSb, обране хостом В • У полі Номер підтвердження міститься значення, яке підтверджує одержання хостом В першого пакета • (а саме ISSa+1 — це значення, яке хост В очікує в наступному пакеті) • Сервер переходить у стан SYN-RECEIVED • Якщо сервер не може створити сокет, він надсилає пакет з прапором RST Лекція 13
Процедура встановлення TCP-з’єднання (третій крок) A → B(клієнт серверу): • Якщо клієнт отримав сегмент з прапорами SYN і ACK, він надсилає пакет ACK, ISSa+1, ACK(ISSb+1) • Встановлено прапорець ACK • Поле Номер послідовності містить ISSa+1 • Поле Номер підтвердження містить ISSb+1 • Клієнт переходить у стан ESTABLISHED • Після цього: • Якщо сервер у стані SYN-RECEIVED отримує сегмент з прапором ACK, то він переходить у стан ESTABLISHED • Інакше після тайм-ауту він закриває сокет і переходить у стан CLOSED • Якщо клієнт отримує сегмент з прапором RST, він припиняє спроби з’єднатися • Якщо клієнт не отримує відповідь протягом 10 секунд, він повторює процес з’єднання з початку Лекція 13
Поля Номер послідовностіі Номер підтвердження • 32-розрядні поля Номер послідовності і Номер підтвердження відіграють роль ідентифікаторів пакета, з’єднання і суб’єкта з’єднання, а також відіграють роль лічильника пакетів • Після встановлення з’єднання лічильники Номер послідовності і Номер підтвердження відраховують кількість переданих/прийнятих байтів інформації • Хост А, який передає дані, відправляє пакет, що містить N байтів даних, із значенням Номер послідовностіISSa • Хост В, який приймає дані, надсилає у відповідь пакет (квитанцію), в якому в полі Номер підтвердження міститься значення ISSa+N • Наступний пакет від хосту А повинен містити значення Номер послідовності ISSa+N, інакше хост В не прийме такий пакет як коректний • Якщо хост А не отримає квитанцію із очікуваним значенням Номер підтвердження протягом встановленого тайм-ауту, буде вважати, що пакет не був доставлений належним чином і повторить відправлення послідовності даних, починаючи з першого байту, на який не було отримано квитанцію. Лекція 13
Обмін даними • Є кілька принципових особливостей, що відрізняютьпротокол TCP від UDP • Передавання упорядкованих даних – хост-одержувач переупорядковує отримані дані у відповідності до номерів послідовності • Повторне передавання втрачених пакетів – будь-які дані, що не були підтверджені квитанцією, будуть надіслані повторно • Передавання даних без помилок • Керування потоком – обмежує швидкість з якою відправник передає дані з метою гарантування надійної доставки. • Одержувач постійно інформує відправника скільки даних може бути отримано (керування здійснюється встановленням розміру вікна). • Коли буфер хосту-одержувача заповнюється, у наступному пакеті-підтвердженні вказують розмір вікна 0 для призупинення передавання і надання можливості для оброблення даних, що містяться у буфері • Керування перевантаженням мережі (Congestion control) Лекція 13