Порт 0 има специално значение в мрежовото програмиране, особено в Unix OS, когато става въпрос за програмиране на сокет, където портът се използва за заявяване на разпределени от системата динамични портове. Порт 0 е порт със заместващ знак, който казва на системата да намери подходящ номер на порт.
За разлика от повечето номера на портове, порт 0 е запазен порт в TCP/IP мрежи, което означава, че не трябва да се използва в TCP или UDP съобщения. Мрежовите портове в TCP и UDP варират от номер нула до 65535. Номерата на портове в диапазона между нула и 1023 се определят като неефемерни портове, системни портове или добре познати портове. Органът за присвоени номера в Интернет (IANA) поддържа официален списък на предвидената употреба на тези номера на портове в интернет и системен порт 0 не трябва да се използва.
Как работи TCP/UDP порт 0 в мрежовото програмиране
Конфигурирането на нова връзка с мрежов сокет изисква един номер на порт да бъде разпределен както от страната на източника, така и от страната на дестинацията. TCP или UDP съобщенията, изпратени от инициатора (източник), съдържат и двата номера на порта, така че получателят на съобщението (дестинацията) да може да изпраща съобщения за отговор до правилната крайна точка на протокола.
IANA е разпределила предварително определени системни портове за основни интернет приложения като уеб сървъри (порт 80), но много TCP и UDP мрежови приложения нямат собствен системен порт и трябва да получават такъв от операционната система на устройството си всеки път, когато стартират.
За да разпределят своя номер на порт източник, приложенията извикват TCP/IP мрежови функции като bind(), за да поискат такъв. Приложението може да предостави фиксиран (твърдо кодиран) номер на bind(), ако предпочита да поиска конкретен номер, но такава заявка може да се провали, тъй като друго приложение, работещо в системата, може в момента да го използва.
Алтернативно, той може да предостави порт 0 на bind() като свой параметър за връзка. Това задейства операционната система автоматично да търси и връща подходящ наличен порт в диапазона на номера на динамичния TCP/IP порт.
На приложението не е предоставен порт 0, а по-скоро някакъв друг динамичен порт. Предимството на тази конвенция за програмиране е ефективността. Вместо всяко приложение да внедрява и изпълнява код, за да изпробва множество портове, докато получи валиден, приложенията разчитат на операционната система.
Unix, Windows и други операционни системи се различават по отношение на обработката на порт 0, но се прилага същата обща конвенция.
Порт 0 и мрежова сигурност
Мрежовият трафик, изпратен през интернет към хостове, слушащи на порт 0, може да бъде генериран от мрежови нападатели или случайно от приложения, програмирани неправилно. Отговорните съобщения, които хостовете генерират в отговор на трафика на порт 0, помагат на атакуващите да научат поведението и потенциалните мрежови уязвимости на тези устройства.
Много доставчици на интернет услуги (ISP) блокират трафика на порт 0, както входящи, така и изходящи съобщения, за да се предпазят от тези експлойти.
ЧЗВ
Какво представляват номерата на портовете?
Номера на портове, използвани за TCP/IP мрежови връзки, действат като адресна информация, идентифицирайки подателите и получателите на съобщението. Номерата на портовете позволяват на различни приложения в една и съща мрежа да споделят ресурси по едно и също време.
Как да намеря номера на портове?
За да намерите номера на порта на конкретен IP адрес, отидете в командния ред, въведете netstat -a, след което натиснете Enter. Ще видите списък с активни TCP връзки заедно с IP адреси и номера на портове, разделени с двоеточие.
Мога ли да се свържа с порт 0?
Не. Официално порт 0 не съществува и не можете да се свържете с него, тъй като е невалиден номер на порт. Въпреки това можете да изпратите интернет пакет до и от порт 0 по същия начин, както бихте направили с друг номер на порт.