
- •1 Технічна реалізація ip-телефонії
- •1.1 Визначення ip-телефонії
- •1.2 Види з’єднань в мережі ip-телефонії
- •1.3 Побудова мережі ip-телефонії
- •1.3.1 Побудова мережі за рекомендацією h.323
- •1.3.2 Мережа на базі протоколу sip
- •1.4 Вплив мережі на показники якості ip-телефонії
- •2 Огляд протоколів ip-телефонії
- •2.1 Протокол ip
- •2.2 Протокол udp
- •2.3 Протокол tcp
- •2.4 Протокол rtp
- •2.5 Стандарт h.323
- •2.6 Протокол sip
- •2.7 Протокол mgcp
- •2.8 Протоколи кодування мовної інформації
- •2.8.1 Кодек g.711
- •2.8.2 Кодек g.723.1
- •2.8.3 Кодек g.726
- •2.8.4 Кодек g.728
- •2.8.5 Кодек g.729
- •2.8.6 Кодеки, стандартизовані etsi
- •2.9 Протокол rsvp
- •3 Вибір варіантів побудови корпоративної мережі на основі ip-телефонії
2.2 Протокол udp
Протокол дейтаграм користувача UDP (User Datagram Protocol) описаний у документі RFC 768. Він надає прикладним програмам транспортні послуги. Протокол UDP, також як і IP, забезпечує негарантовану доставку дейтаграм одержувачу і не підтримує установку сполук. Взаємодія між прикладними програмами і протоколом UDP здійснюється через протокольні порти. Протокольний порт можна визначити як абстрактну точку призначення конкретної прикладної програми, що на конкретному комп'ютері або мережному пристрої. У стеці протоколів TCP/IP, порт це механізм, що дозволяє робочій станції одночасно підтримувати кілька сеансів зв'язку з віддаленими пристроями та їх програмами. Можна сказати, що порт служить для вказівки одержувача інформації. Коли робоча станція отримує з мережі пакет, в якому вказана її IP адреса, вона може направити пакет певною програмою, використовуючи унікальний номер порту, який визначається під час установки сеансу зв'язку.
Слід зазначити що порти протоколів TCP і UDP розрізняються програмним забезпеченням робочих станцій та інших мережевих пристроїв. Дейтаграма протоколу UDP складається з двох частин: заголовка і області даних. Заголовок складається з чотирьох 16 бітних полів, які визначають порт відправника, порт одержувача, довжину повідомлення і контрольну суму. На рис. 2.2, показаний формат полів у дейтаграмі протоколу.
Рисунок 2.2 – Структура UDP-пакета
(http://uk.wikipedia.org/wiki/UDP)
Поля "Початковий номер порту" і "Номер порту призначення" містять 16 бітні номери портів. Отже 216 = 65535 значень унікальних номерів портів можна адресувати при пересиланні даних за допомогою протоколу UDP. Поле "Початковий номер порту" може бути не використано, при цьому воно повинно містити нулі.
Поле "Довжина" містить 16 бітів в дейтаграмі, при цьому враховується довжина заголовків UDP і даних.
Поле "Контрольна сума" може обчислюватися, а може і ні. Якщо контрольна сума не обчислюється, її значення дорівнює 0. Обчислення цього поля не здійснюється при роботі UDP в високонадійній локальної мережі. При роботі в ненадійній мережі тільки контрольна сума може вказати на достовірність і цілісність даних, що прийшли. Це пов'язано з тим, що протокол IP не вирахував контрольну суму поля даних в IP дейтаграмах.
Порти з нумерацією від 0 до 1023 називаються керованими і жорстко пов'язані з певними програмними процесами. Порти з номерами від 1023 до 65535 називають динамічними, і мережеве програмне забезпечення саме визначає необхідний для роботи порт в даний час. Фактично, навіть у цьому діапазоні багато номерів портів уже прив'язані до конкретних програм, які отримали широке поширення. Все вищесказане також відноситься і до портів протоколу TCP.
2.3 Протокол tcp
Протокол управління передачею TCP описаний в RFC 793. Він призначений для використання в якості надійного транспортного засобу при спілкуванні віддалених систем в локальних мережах з комутацією пакетів, а так само в системах, які об'єднують такі мережі. Протокол TCP так само як і протокол UDP працює на транспортному рівні моделі OSI. Він забезпечує надійне транспортування даних між прикладними програмами шляхом встановлення логічного з'єднання, чим і відрізняється від свого побратима UDP. Для забезпечення надійної передачі даних за встановленим логічним з'єднанням між парами прикладних програм протокол TCP повинен забезпечувати виконання таких функцій:
передачу необхідних даних;
підтримання достовірності даних при передачі;
управління потоком даних;
розподіл каналів зв'язку;
роботу з обслуговування встановлених з'єднань;
забезпечення встановленого пріоритету користувачів і відповідного рівня безпеки.
Процес з'єднання можна представити в наступній послідовності:
ініціатор з'єднання надсилає запит до протоколу TCP на відкриття порту для передачі;
після відкриття порту протокол TCP на стороні додатку-ініціатора надсилає запит додатком, з яким потрібно встановити з'єднання;
протокол TCP на приймальній стороні відкриває порт для прийому даних і відсилає квитанцію, що підтверджує прийом запиту;
приймальна сторона відкриває порт для передачі і так само передає запит до протилежної сторони;
додаток-ініціатор відкриває порт для прийому і повертає квитанцію.
З цього моменту з'єднання вважається встановленим. Після цього починається обмін інформацією по даному з'єднанню.
Заголовок TCP слідує за заголовком IP і доповнює його інформацією, специфічною для протоколу TCP. На рис. 2.3, представлений формат заголовку протоколу TCP.
Рисунок 2.3 – Формат заголовка TCP
(http://uk.wikipedia.org/wiki/TCP)
Поля "Порт джерела" і "Порт призначення" ідентичні відповідним полям у заголовку протоколу UDP.
Поле "Номер послідовності" визначає номер черги для першого байта даних в цьому сегменті. Винятки становлять випадки, коли присутній прапорець синхронізації SYN.
Поле "Номер підтвердження" містить наступний номер черги, який відправник даної дейтаграми бажає отримати у зворотньому напрямку. При цьому контрольний біт підтвердження ACK повинен бути встановлений. Номери підтвердження надсилаються постійно, як тільки з'єднання буде встановлено.
Поле "Зсув даних" визначає кількість 32-х бітних слів у TCP-заголовку і вказує на початок поля даних. Заголовок протоколу TCP завжди закінчується на 32-х бітному кордоні слова, навіть якщо він містить опції.
Поле "Зарезервовано" обов'язково має бути заповнено нулями.
Поле "Прапорці" (керуючі біти) містить 8 бітових прапорців:
CWR - gоле встановлюється відправником, щоб показати що TCP-сегмент був отриманий з встановленим полем;
ECE - Поле показує, що відправник підтримує ECN;
URG - Поле «Показник важливості» задіяно;
ACK - Поле «Номер підтвердження» задіяно;
PSH - інструктує отримувача передати дані з прийомного буферу до програми, якій ці дані призначені;
RST - обірвати з'єднання, скинути буфер (очищення буферу);
SYN - синхронізація номерів послідовності;
FIN - прапорець, якщо встановлений, вказує на завершення з'єднання.
Поле " Вікно" містить оголошуєме значення розміру вікна в байтах.
Поле "Контрольна сума" розраховується по сегменту, при цьому визчається 16-бітове доповнення суми всіх 16 бітних слів заголовка і даних. Якщо сегмент містить непарну кількість байт, то він буде доповнений нулями справа до утворення 16 бітного слова. При цьому вирівнюючий байт не передається разом з сегментом в мережі. Контрольна сума враховує так само 96-бітний псевдозаголовок, який ставитися перед заголовком протоколу TCP. Псевдозаголовок містить адресу відправника, адресу одержувача, тип протоколу і довжину TCP сегмента. Механізм псевдозаголовка забезпечує захист протоколу TCP від спотворення сегментів при передачі.
Поле "Вказівник важливості" визначає зсув даного сегмента щодо номера черги. Цей покажчик повідомляє номер черги для байта, наступного за терміновими даними. Поле використовується спільно з контрольним бітом URG.
Поле "Опції" має змінну довжину і може бути відсутнім взагалі. Воно розташовується в кінці заголовка протоколу TCP, і його довжина кратна восьми бітам. Протокол TCP повинен бути готовий обробляти всі види опцій. Опції використовуються для вирішення допоміжних завдань, наприклад при виборі максимального значення розміру сегмента.