Что такое порт в программировании

Что такое порт в программировании

С ними компьютер не путает, что и куда отправлять

Какие бывают порты

В компьютерах есть два вида портов — физические и программные. 

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

Программный порт — это «виртуальный разъём» в программе, через которую она может обмениваться данными с системой и другими программами. У него нет физического устройства, а есть только число от 0 до 65 535 — оно называется адресом порта. Мы будем говорить именно про них.

Что такое порт в программировании
Типичный набор портов в современной материнской плате

Для чего нужны порты

Представьте, что у вас в компьютере есть разъём для локальной сети и интернета. В него воткнут всего один кабель. Но одновременно сетью и интернетом пользуются разные программы:

  • операционная система запрашивает обновления безопасности на сервере;
  • браузер загружает очередную страничку в соцсети;
  • телеграм отправляет и принимает сообщения;
  • фоном висит созвон с коллегой по зуму и тоже отправляет видеоданные;
  • Яндекс.Диск синхронизирует данные с облаком.

👉 С вайфаем всё то же самое — всё это идёт через один разьём на материнской плате. То, что нет проводов, ничего не меняет — все данные всё равно сыпятся в один физический порт.

Чтобы при работе в сети программы и сервисы не путали данные между собой, разработчики придумали порты — они определяют, к какой программе относятся те данные, которые получает сетевая плата.

Как выглядит виртуальный порт

Мы уже работали с портами, когда собирали статичный сайт на Hugo, и тогда мы открывали в браузере такой адрес:

localhost:1313

«Локалхост» означает, что браузер будет искать страницу на своём компьютере по адресу 127.0.0.1, а 1313 — это как раз порт. Порт от адреса отделяется двоеточием.

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

Что можно сделать с портом

  • Порт можно открыть — чтобы система знала, куда отдавать данные, пришедшие по этому адресу.
  • Порт можно закрыть — чтобы данные больше не передавались. Они будут игнорироваться. 
  • Порт можно пробросить — например, можно научить систему, что если запрос пришёл на порт 1212 — отправить его на порт 2121. Так устроены многие сетевые маршрутизаторы и, в частности, ваш интернет-провайдер. 
  • Порты можно просканировать — перебрать все числа от 0 до 65535, чтобы посмотреть, придёт ли с какого-нибудь из них ответ. Если придёт — на этом порте сидит какая-то программа. 
  • Порт можно заблокировать — сказать вашему роутеру на работе или дома, чтобы все запросы на определённый порт либо выбрасывались, либо переадресовывались. 
  • Порт можно задать: если вы знаете, что какой-то порт у вас заблокирован, а вам жуть как надо запустить программу — можно задать для этой программы другой порт и общаться через него. Не все программы это поддерживают. 

Можно ничего не делать — с точки зрения пользователя всё работает само. И правильно, и хорошо. 

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства и компенсация, если вы пойдёте работать в «Яндекс».
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Богдан Овсиюк: из пограничника в тестировщики за полгода
Богдан Овсиюк: из пограничника в тестировщики за полгода

История выпускника Практикума.

Асимметричное шифрование
Асимметричное шифрование

Сложное, но очень полезное.

Большой разбор: как ИИ играет в змейку

Современные технологии против игры прошлого века.

Nginx — быстрый, дерзкий и суперпопулярный сервер
Nginx — быстрый, дерзкий и суперпопулярный сервер

Сделан в России

Как начать программировать с нуля

Подборка материалов для начинающих.

Контрольная сумма: что это и почему это важно

Рассказываем на примере покупок в магазине.

Какая бывает память
Какая бывает память

Краткий обзор для тех, кто не хочет глубоко копать.

Отлить в бетоне!
Отлить в бетоне!

Сага о генераторах статических сайтов.

Роман Халкечев, руководитель отдела аналитики в Яндекс.Еде и Лавке
Роман Халкечев, руководитель отдела аналитики в Яндекс.Еде и Лавке

Часть 2: о Яндекс.Еде и Лавке, аналитических задачах и оптимизации бизнеса на основе данных.

Что такое UNIX и зачем он нужен
Что такое UNIX и зачем он нужен

Операционная система, которая изменила мир, хотя в ней почти никто не работал

Все опять заговорили про VPN. Что это такое, объясни мне!

Мы не можем вам сказать. Но можем показать.

Асимметричное шифрование
Асимметричное шифрование

Сложное, но очень полезное.

Стрелочные функции в JavaScript
Стрелочные функции в JavaScript

Почти как обычные функции, только стрелочные.

easy