Модель 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-порту. Для того, щоб клієнт міг звертатися до необхідного йому серверу, він повинен знати номер порту, за яким сервер очікує звернення до нього .
Програми-клієнти, які є активною стороною у взаємодії "клієнт-сервер", можуть використовувати, як правило, довільні номери портів, які призначаються динамічно безпосередньо перед зверненням до сервера. Будь-яка прикладна програма (будь то клієнт або сервер) може відкривати для взаємодії будь-яку кількість портів для використання різних транспортних протоколів.
Див. також
Це незавершена стаття про комп'ютерні мережі. Ви можете допомогти проєкту, виправивши або дописавши її. |
Ця стаття не містить посилань на джерела. (червень 2017) |