Сетевые порты. Основные понятия

В данном посте речь пойдёт о сетевых портах, все кто знаком с этим понятием не узнают для себя ничего нового. Всех остальных прошу проследовать ниже.

Итак, сетевые порты или network ports по английски. Для чего они нужны? Изобретены они для того, что бы направлять пакеты данных нужным программам в сети в пределах одной рабочей станции.

Всего 65535 портов TCP и столько же UDP, при этом они никак не пересекаются. Порты «видны» отовсюду т.е. они находятся на сетевом уровне модели OSI т.к. базируются на самых фундаментальных протоколах TCP/IP. Работать с сетевыми портами могут устройства, которые работают с IP адресами, т.е. третий сетевой уровень модели OSI, это маршрутизаторы (роутеры).

В пределах одного ПК каждой программе, если ей нужно, выделяются необходимые порты. Это может быть как один порт так и множество, которые она будет «слушать» т.е. принимать все пакеты подписанные данными портами. Несколько разных служб/программ/сервисов на одной машине не могут слушать один и тот же порт, т.е. на один порт один слушатель. Когда компьютер получает пакеты данных, то операционная система сразу же смотрит какими портами подписан каждый пакет и если этот порт в данный момент кто то слушает, то ОС отдаёт эти пакеты предназначенной программе. Если же порты никто не слушает, то пакет отбрасывается как не нужный.

В каждом пакете данных в заголовках подписаны ip адрес получателя а так же сетевые порты получателя и отправителя. Таким образом когда конечная программа получает пакеты данных и пытается на них ответить пересылкой других пакетов в ответ, то она подписывает новый пакет таким образом, что порт отправителя ставится собственный, а порт получателя ставится тот который был портом отправителя.

Как правило номера сетевых портов до 1024 зарезервированы за определёнными популярными службами.

На самом деле этот механизм весьма свободный. Новая установленная на ПК программа по сути может добавить для себя любой порт, который ещё не занят в системе в данный момент, либо запросить свободный порт у самой операционной системы. Отправлять пакеты данных программа так же может куда угодно с указанием либо DNS имени конечного хоста приёма, либо с указанием ip адреса принимателя и естественно с указанием портов получателя и отправителя.

Для контроля сетевых портов используются программы именуемые сетевыми экранами (фаерволы, брандмауеры). Правила брандмауеров применяются исключительно только к конкретному ПК. Т.е. если через один компьютер к сети подключены другие, то они будут получать все пакеты данных вне зависимости от настроек сетевого экрана главного компьютера раздающего сеть.