Порт

Что такое порт простыми словами

Представим себе многоквартирный жилой дом. В квартирах живут приложения. В квартире № 21 живёт FTP сервер, в № 80 проживает ВЕБ сервер, у которого хранится красивый и полезный сайт. Старший по дому SSH живёт в квартире № 22. Чтобы глянуть, что происходит в доме – стучаться в квартиру № 3389 к RDP.
У дома есть уникальный IP адрес.
Наш виртуальный дом – это роутер с белым IP. Номер квартиры – это порт приложения, которое там проживает. Чтобы постучаться к нужному сервису нужно выбрать сам дом (IP адрес) и номер квартиры (порт). Как и в настоящей жизни, приложение должно быть дома (установлено на компьютер) и слушать у двери когда постучать (listen). Безусловно нужно не спать (быть выключенным), а бодрствовать.

Больше конкретики

Адрес дома – 212.213.25.24, FTP сервер с фильмами – 21 порт. Чтобы скачать фильм нужно постучаться по адресу 212.213.25.24:21 при помощи FTP клиента и скачать у сервера фильм. Примечателен тот факт, что, если вы находитесь уже внутри дома стучаться нужно по локальному внутридомовому адресу – 192.168.0.2:21

Таким образом и общаются приложения между собой, – клиент (вы снаружи) – сервер (живёт в доме). Если вы стучитесь к кому то, то вы являетесь клиентом. В противном случае, когда приложения находятся в вашей сети и стучаться к вам, то вы -сервер. В последнем случае, чтобы к вам смогли достучаться вы должны “пробросить порты” через ваш роутер. “Пробросом портов” заведует механизм NAT.

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

Как видим WEB, FTP и RDP сервера находятся на одном компьютере с адресом 10.105.0.5. Чтобы их различать, у каждого есть свой порт. Маршрутизатор, имеющий “белый” IP адрес 184.86.45.120 получает от пользователя запросы и маршрутизирует их во внутреннюю сеть распределяя согласно номера порта. Разумеется, что IP адрес может быть представлен как доменное имя, а не набор цифр. За преобразование IP адреса в имя отвечает DNS.

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

Проброс портов

Напрашивается вопрос, а почему мы в браузере не набираем Yandex.ru:80, а просто Yandex.ru ? Попробуйте набрать Yandex.ru:80 и всё пройдёт нормально. Просто браузер сам подставляет :80 за пользователя. Когда вы используете FTP клиент, вы тоже не набираете :22, так как программа сама это делает за вас.

Хуже всего, когда администратор сменит стандартный порт на другой, тогда :порт придётся набирать руками.

0 – 1023 являются известными портами и назначаются IANA. Они должны использоваться только для назначенных протоколов в общедоступных сетях.

1024 – 65535 раньше назывались зарегистрированными номерами портов, но теперь разделены на две области.

1 область: 1024 – 49151 являются портами пользователя и используются для ваших собственных протоколов.

2 область: 49152 – 65535 являются динамическими портами. Эти порты назначаются операционной системой динамически случайным образом.

IANA публикует список назначенных портов.

Сокет (socket)

Сокет (socket – разъём) представляет собой пару: IP адрес + порт. Например, 195.108.1120.33:27015

Сокет – является программным интерфейсом, который обеспечивает обмен данными между устройствами на низком уровне.
Протокол TCP/IP основывается на соединениях, устанавливаемых между двумя компьютерами, обычно называемых клиентом и сервером. Поэтому, различают сокет клиента и сокет сервера. Для организации общения клиент должен знать IP адрес и номер порта сервера, по которым он подключается к удаленному устройству. в рамках стека протоколов TCP/IP различают два типа сокетов TCP и UDP. Также, TCP сокеты называют потоковыми, а UDP – датаграммными.

TCP сокеты

TCP сокеты используют TCP-соединения, в которых на транспортном уровне обеспечивается надёжная доставка данных.  Протокол TCP отвечает за установление и поддержание соединения, сегментацию, доставку и буферизацию данных, упорядочивание и избавление от дублированных TCP сегментов данных, контроль ошибок и скорости передачи.

UDP сокеты

UDP сокеты устроены проще, чем TCP. В качестве транспортного уровня используется протокол UDP, который не требует установления соединения и подтверждения приема. Информация пересылается в предположении, что принимающая сторона ее ожидает. Датаграммные сокеты не контролирует ничего, кроме целостности полученных датаграмм. Несмотря на это, UDP сокеты нашли свое применение в системах, где на первом месте стоит именно актуальность данных и их быстрая доставка, а не гарантия доставки каждого сообщения.


Список портов TCP и UDP
ports_TCP_UDP