Какие бывают порты
В компьютерах есть два вида портов — физические и программные.
Физический порт — это разъём на компьютере или в ноутбуке, куда можно подключить флешку, сетевой кабель, принтер, наушники и что угодно ещё. Физический порт обменивается электричеством с чем-то, что в этот порт вставлено. В электричестве закодированы какие-то данные.
Программный порт — это «виртуальный разъём» в программе, через которую она может обмениваться данными с системой и другими программами. У него нет физического устройства, а есть только число от 0 до 65 535 — оно называется адресом порта. Мы будем говорить именно про них.
Для чего нужны порты
Представьте, что у вас в компьютере есть разъём для локальной сети и интернета. В него воткнут всего один кабель. Но одновременно сетью и интернетом пользуются разные программы:
- операционная система запрашивает обновления безопасности на сервере;
- браузер загружает очередную страничку в соцсети;
- телеграм отправляет и принимает сообщения;
- фоном висит созвон с коллегой по зуму и тоже отправляет видеоданные;
- Яндекс.Диск синхронизирует данные с облаком.
👉 С вайфаем всё то же самое — всё это идёт через один разьём на материнской плате. То, что нет проводов, ничего не меняет — все данные всё равно сыпятся в один физический порт.
Чтобы при работе в сети программы и сервисы не путали данные между собой, разработчики придумали порты — они определяют, к какой программе относятся те данные, которые получает сетевая плата.
Как выглядит виртуальный порт
Мы уже работали с портами, когда собирали статичный сайт на Hugo, и тогда мы открывали в браузере такой адрес:
localhost:1313
«Локалхост» означает, что браузер будет искать страницу на своём компьютере по адресу 127.0.0.1, а 1313 — это как раз порт. Порт от адреса отделяется двоеточием.
С технической точки зрения порт — это просто число, которое прикрепляется к каждому пакету с данными, поступающими в компьютер. Система смотрит, какой номер порта стоит на пакете, находит программу, которая его использует, и отправляет ей. В этом и смысл портов — чтобы система всегда знала, кому какие данные отдавать и кто их отправляет.
Что можно сделать с портом
- Порт можно открыть — чтобы система знала, куда отдавать данные, пришедшие по этому адресу.
- Порт можно закрыть — чтобы данные больше не передавались. Они будут игнорироваться.
- Порт можно пробросить — например, можно научить систему, что если запрос пришёл на порт 1212 — отправить его на порт 2121. Так устроены многие сетевые маршрутизаторы и, в частности, ваш интернет-провайдер.
- Порты можно просканировать — перебрать все числа от 0 до 65535, чтобы посмотреть, придёт ли с какого-нибудь из них ответ. Если придёт — на этом порте сидит какая-то программа.
- Порт можно заблокировать — сказать вашему роутеру на работе или дома, чтобы все запросы на определённый порт либо выбрасывались, либо переадресовывались.
- Порт можно задать: если вы знаете, что какой-то порт у вас заблокирован, а вам жуть как надо запустить программу — можно задать для этой программы другой порт и общаться через него. Не все программы это поддерживают.
Можно ничего не делать — с точки зрения пользователя всё работает само. И правильно, и хорошо.