Очевидно, що найпоширеніше використання слова порт стосується судноплавства. Однак у обчислювальній техніці також використовується термін порт. Насправді він має два застосування. Перший відноситься до розетки, в яку можна вставити кабель. Типовими прикладами є порт USB або Ethernet. Технічно розетку Ethernet можна розглядати як мережевий порт. Це не прийняте значення слова порт у мережі. Мережевий порт — це логічне число, яке визначає, для якого процесу чи мережевої служби призначений або яким надсилається мережевий трафік.
Навіщо потрібні номери портів?
Коли ваш комп’ютер зв’язується з веб-сервером в Інтернеті, він розміщує свою IP-адресу в полі відправника. Це дозволяє серверу знати, на яку IP-адресу йому потрібно надіслати відповідь. Коли ця відповідь повертається на ваш комп’ютер, ваш браузер інтерпретує відповідь і відображає веб-сторінку.
Це добре працює в ідеалізованій системі з одним програмним забезпеченням, яке створює та отримує мережевий трафік. Однак реальний світ не такий. У будь-якому комп’ютері є ряд програмного забезпечення, що забезпечує мережевий трафік. Щоб переконатися, що мережевий трафік правильно передається правильній програмі, у деяких випадках належний процес у програмі. На останньому рівні адресації використовується номер порту.
Уявіть, що у вас є веб-браузер із двома відкритими вкладками та онлайн-відеоігра одночасно. Кожна вкладка браузера повинна мати можливість надсилати та отримувати мережевий трафік, можливо, одночасно. Онлайн-грі також потрібно надсилати та отримувати мережевий трафік. Ви не хочете, щоб ваша гра фільтрувала випадкові веб-відповіді, і ви також не хочете, щоб ваш браузер фільтрував ваш ігровий трафік. Кожній вкладці та грі буде призначено принаймні один мережевий порт, щоб можна було легко визначити передбачуваний процес одержувача.
Те ж саме працює і для серверів. Припустімо, що у вас є сервер, на якому працюють і веб-сервер, і сервер електронної пошти. У цьому випадку номер порту дозволяє операційній системі легко розрізняти, які мережеві пакети призначені для тієї чи іншої служби.
Що таке номери портів?
Номери портів приймають форму 16-розрядного цілого числа без знаку. Це означає, що є шістнадцять двійкових бітів для складання чисел, немає від’ємних чисел, і всі числа є цілими. Це дозволяє 65536 можливих номерів портів у діапазоні від 0 до 65535. Немає фізичної системи портів.
Вся схема адресації, як і з IP-адресами та MAC-адресами, цілком логічна. Ви можете подумати про IP- та MAC-адреси як про адресу в листі, щоб отримати його додому/комп’ютер. У цій аналогії номер порту буде схожий на ім’я на конверті, що гарантує, що він потрапляє до потрібної особи/процесу у вашому домі/комп’ютері.
У просторі номерів портів є інша структура. Номер порту 0 зарезервований. У трафіку TCP 0 взагалі не використовується. У трафіку UDP номер порту є необов’язковим, а порт 0 означає «немає порту». Це працює для UDP, оскільки це протокол без збереження стану, який не обов’язково очікує відповіді. Порти TCP і UDP є окремими. Одна служба може прив’язуватися до одного або кількох портів на одному або обох протоколах. Служби, які використовують обидва, зазвичай приєднуються до однакових номерів портів у TCP і UDP.
Порти 1-1023 відомі як «добре відомі» порти, і зазвичай для прив’язки до них потрібні адміністративні дозволи. Деякі добре відомі порти: 80 для HTTP, 443 для HTTPS і 53 для DNS. Далі, у вас є діапазон 1024 – 49151. Вони відомі як «зареєстровані» порти. Це порти, які регулярно використовуються певними службами, але вони недостатньо поширені або були недостатньо ранніми, щоб отримати число нижче 1023. Порти між 49152 і 65535 відомі як ефемерні порти.
Використання номерів портів
IANA, Управління розподілення номерів в Інтернеті, підтримує добре відомі та зареєстровані списки портів. Добре відомі порти мають лише одну пов’язану з ними службу. Проте зареєстровані порти можуть мати ряд відомих служб, які використовують порт за замовчуванням.
Загалом ніщо фактично не заважає будь-якій програмі прив’язуватися до будь-якого номера порту. Як згадувалося вище, номери портів нижче 1024, як правило, вимагають адміністративних або кореневих дозволів для прив’язки. Тим не менш, ви можете змусити будь-яку службу підключитися до порту 80, наприклад, навіть якщо це не веб-сервер. Номери портів у добре відомих і зареєстрованих діапазонах, як правило, використовуються лише мережевими слухачами, а тимчасові порти зазвичай використовуються для ініціювання з’єднань.
Слухач — це порт, який відкривають і залишають відкритим. Він прослуховує повідомлення, щоб обробити їх і надіслати відповідь. Це майже виключно поведінка служб серверного типу, таких як веб-сервер. Веб-сервер буде розміщено на портах 80 і 443, а браузер, який підключатиметься до цих портів, локально використовуватиме тимчасовий порт.
Стандартні номери портів для слухачів програм означають, що легко дізнатися, як насправді підключитися до служби. Наприклад, коли ви розміщуєте HTTPS на початку URL-адреси, ваш браузер за умовчанням припускає, що йому потрібно підключитися до порту 443. У деяких випадках слухачі будуть налаштовані на альтернативних портах. Можливо, інша служба або версія служби вже використовує стандартний порт. Це також може бути спроба захисту через невідомість.
Висновок
Мережевий порт – це логічна адреса. Програмне забезпечення може прив’язуватися до порту, тому операційна система знає, що будь-який трафік, надісланий до цього порту, призначений для цього процесу. Номери портів варіюються від 0 до 65535. Багато послуг пов'язані зі стандартним номером порту. Сервери використовують ці порти, тоді як пристрої, що підключаються до них, використовують випадкові порти з високими номерами. Це дозволяє легко підключатися до служб за замовчуванням і гарантує, що підключення до такої служби не завадить вам самостійно розмістити іншу службу.