Порт протоколу
Порти існують для того, щоб між комп'ютерами могли встановлювати власні з'єднання різні прикладні процеси в достатній кількості. Загалом процеси функціонують на різних комп'ютерах і за потреби мають взаємодіяти. Для цього всі процеси або застосунки, які потенційно потребують комунікацій, відображаються в перелік портів на машині, і саме до цього порту звертається процес іншого комп'ютера мережі. Звичайно, процесу-ініціатору з'єднання має бути відомий порт процесу, до якого він звертається.
Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
Формально, у протоколах TCP і UDP (сімейства TCP/IP) порт — це ідентифікований номером системний ресурс, що виділяється з застосунком, що виконується на деякому мережевому хості, для зв'язку з застосунками, що виконуються на інших мережевих хостах (в тому числі з іншими застосунками на цьому ж хості).
Для кожного з протоколів TCP і UDP стандарт визначає можливість одночасного виділення на хості до 65536 унікальних портів, що ідентифікують номерами від 0 до 65535. При передачі по мережі номер порту в заголовку пакета використовується (разом з IP-адресою хоста) для адресації конкретного застосунку (і конкретного, що належить йому, мережевого з'єднання).
У звичайній клієнт-серверній моделі прикладний процес або чекає вхідних даних (або запиту на з'єднання; «слухає порт»; роль сервера), або посилає дані (або запит на з'єднання) на відомий порт, відкритий процесом-сервером (роль клієнта).
За замовчуванням застосункам видається порт з довільним (наприклад, найближчим вільним, більшим 1024) номером. При необхідності програма може запросити конкретний (зумовлений) номер порту. Так, веб-сервери зазвичай відкривають для очікування з'єднання зумовлений порт 80 протоколу TCP.
Комп'ютер може бути одночасно http-сервером (web, 80 порт), POP-сервером (одержання пошти, 110 порт), SMTP-сервером (відправлення пошти, 25 порт). Користувач може одночасно переглядати web-сторінки, працювати з поштою, викачувати файли по ftp, спілкуватися по ICQ, тобто кожна програма відкриває свій порт і працює через нього, не заважаючи іншим програмам.
Взаємодія програм, що використовують протокол TCP або UDP, будується відповідно до моделі "клієнт-сервер", (Наприклад браузер і Web-сервер). Дана модель передбачає, що одна програма (сервер) завжди пасивно очікує звернення до неї іншої програми (клієнта). Для встановлення зв'язку між програмою-клієнта і сервера використовуються такі дані:
- використовуваний транспортний протокол (TCP або UDP)
- IP-адреса сервера
- номер порту сервера
- IP-адреса клієнта
- номер порту клієнта
Коли клієнт і сервер починають використовувати TCP, створюється віртуальний канал. Дані по цьому каналу можуть одночасно передаватися в обох напрямках. Один прикладний процес пише дані в TCP-порт, вони проходять по мережі, а інших прикладний процес читає їх зі свого TCP-порту. Для того, щоб клієнт міг звертатися до необхідного йому серверу, він повинен знати номер порту, за яким сервер очікує звернення до нього .
Програми-клієнти, які є активною стороною у взаємодії "клієнт-сервер", можуть використовувати, як правило, довільні номери портів, які призначаються динамічно безпосередньо перед зверненням до сервера. Будь-яка прикладна програма (будь то клієнт або сервер) може відкривати для взаємодії будь-яку кількість портів для використання різних транспортних протоколів.