Какво е мрежов порт?

Очевидно най-честата употреба на думата пристанище се отнася до корабоплаването. Компютърът обаче също използва термина порт. Всъщност има две приложения. Първият се отнася до гнездото, в което може да се включи кабел. Типичните примери включват USB или Ethernet порт. Технически ethernet гнездото може да се разглежда като мрежов порт. Това не е приетото значение на думата порт в мрежата. Мрежовият порт е логическо число, което идентифицира за кой процес или мрежова услуга мрежовият трафик е предназначен или от който се изпраща.

Защо са необходими номера на портове?

Когато компютърът ви комуникира с уеб сървър в интернет, той поставя своя IP адрес в полето за подател. Това позволява на сървъра да знае на кой IP адрес трябва да изпрати отговора. Когато този отговор се върне на вашия компютър, вашият браузър интерпретира отговора и изобразява уеб страницата.

Това работи добре в идеализирана система с един софтуер, създаващ и получаващ мрежов трафик. Реалният свят обаче не е такъв. Във всеки компютър има набор от софтуер, създаващ мрежов трафик. За да се гарантира, че мрежовият трафик се предава правилно на правилната програма, в някои случаи правилният процес в програмата. Един последен слой за адресиране се използва номера на порта.

Представете си, че имате уеб браузър с два отворени раздела и онлайн видео игра едновременно. Всеки раздел на браузъра трябва да може да изпраща и получава мрежов трафик, потенциално едновременно. Онлайн играта също трябва да изпраща и получава мрежов трафик. Не искате играта ви да трябва да филтрира произволни уеб отговори и също не искате браузърът ви да трябва да филтрира трафика ви от играта. И на двата раздела и на играта ще бъде присвоен поне един мрежов порт, така че желаният процес на получател да може лесно да бъде определен.

Същото работи и за сървъри. Да предположим, че имате сървър, който работи както с уеб сървър, така и с имейл сървър. В този случай номерът на порта позволява на операционната система лесно да разграничи кои мрежови пакети за коя услуга са предназначени.

Какво представляват номерата на портове?

Номерата на портовете са под формата на 16-битово цяло число без знак. Това означава, че има шестнадесет двоични бита за съставяне на числата, без отрицателни числа и всички числа са цели. Това позволява 65536 възможни номера на портове, вариращи от 0 до 65535. Няма физическа портова система.

Цялата схема на адресиране, както при IP адресите и MAC адресите, е напълно логична. Можете да мислите за IP и MAC адресите като адреса на писмо, за да го получите до дома/компютъра си. В тази аналогия номерът на порта би бил като името на плика, като гарантира, че ще стигне до правилния човек/процес във вашия дом/компютър.

В пространството на номерата на портовете има друга структура. Порт номер 0 е запазен. В TCP трафика 0 е напълно неизползван. При UDP трафик номерът на порта не е задължителен, като порт 0 означава „няма порт“. Това работи за UDP, защото това е протокол без състояние, който не очаква непременно отговор. TCP и UDPs портовете са отделни. Една услуга може да се свърже с един или повече портове на един или двата протокола. Услугите, които използват и двете, обикновено се свързват към едни и същи номера на портове в TCP и UDP.

Портове 1-1023 са известни като „добре познати“ портове и обикновено изискват административни разрешения за свързване. Някои добре познати портове са 80 за HTTP, 443 за HTTPS и 53 за DNS. След това имате диапазона 1024 – 49151. Те са известни като „регистрирани“ портове. Това са портове, използвани редовно от определени услуги, но това не е достатъчно често или не е достатъчно рано, за да получите номер под 1023. Портовете между 49152 и 65535 са известни като ефимерни портове.

Използване на номера на портове

IANA, органът за присвоени номера в Интернет, поддържа добре познатите и регистрирани списъци с портове. Добре познатите портове имат само една услуга, свързана с тях. Регистрираните портове обаче може да имат набор от известни услуги, които използват порта по подразбиране.

Като цяло нищо всъщност не спира която и да е програма да се свърже с произволен номер на порт. Както бе споменато по-горе, номерата на портове под 1024 обикновено изискват административни или root разрешения за свързване. Все пак можете да принудите всяка услуга да се свърже с порт 80, например, дори и да не е уеб сървър. Номерата на портове в добре познатите и регистрирани диапазони обикновено се използват само от мрежови слушатели, като краткотрайните портове обикновено се използват за иницииране на връзки.

Слушателят е порт, който се отваря и оставя отворен. Той следи за съобщения, за да може да ги обработи и да изпрати отговор. Това е почти изключително поведението на услуги от тип сървър, като например уеб сървър. Уеб сървърът ще бъде хостван на портове 80 и 443, докато браузър, свързващ се с тези портове, ще използва локално ефимерен порт.

Стандартните номера на портове за слушатели на приложения означават, че е лесно да знаете как всъщност да се свържете с услуга. Например, когато поставите HTTPS в предната част на URL адрес, вашият браузър приема по подразбиране, че трябва да се свърже с порт 443. В някои случаи слушателите ще бъдат настроени на алтернативни портове. Това може да се дължи на факта, че друга услуга или версия на услугата вече използва стандартния порт. Може също да е опит за сигурност чрез неизвестност.

Заключение

Мрежовият порт е логически адрес. Софтуерът може да се свърже с порт, така че операционната система знае, че всеки трафик, изпратен до този порт, е предназначен за този процес. Номерата на портовете варират от 0 до 65535. Много услуги са свързани със стандартен номер на порт. Сървърите използват тези портове, докато устройствата, които се свързват с тях, използват произволни портове с голям номер. Това позволява лесно свързване по подразбиране към услуги и гарантира, че свързването към такава услуга не ви пречи да хоствате сами друга услуга.