Что такое порт в программировании
Перейти к содержимому

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

  • автор:

Что такое порты, какие бывают и зачем они нужны?

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

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

Сетевой порт — то число, которое записывается в заголовках протоколов транспортного уровня сетевой модели OSI. Оно используется для определения программы или процесса-получателя пакета в пределах одного IP-адреса.Порты позволяют определить сетевые приложения, работающие на компьютере, множество которых может быть запущено одновременно. Основными сетевыми программами могут быть:

  • WEB-сервер – предоставляет трансляцию данных с веб-сайтов;
  • Сервер почты – позволяет обмениваться электронными письмами;
  • FTP-сервер – обеспечивает передачу информации.

Порт отображается в виде 16 битного числа от 1 до 65535, которое доступно приложениям для того, чтобы обмениваться трафиком. Организация IANA регламентирует использование портов, так как именно она предоставляет стандарты при работе с портами.Имеющееся количество портов предоставляет корректную работу всех приложений, которым необходимо использовать сетевое соединение.

Порты обеспечивают доступ в глобальную сеть не только программам, которые были установлены пользователем. Бывают ситуации, когда вредоносные программы размещаются в систему самостоятельно и открывают порт без ведома пользователя. И уже с помощью открытого порта могут считывать личную информацию, находящуюся на компьютере. Поэтому необходимо знать, какие основные порты требуются пользователю и каким образом можно их открывать и закрывать.

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

Основным предназначением сетевых портов является прием и передача данных определенного вида, а также устранение ошибки неоднозначности при попытке установить связь с хостом по IP-адресу. Для обеспечения трансляции данных с веб-сервера необходимо указать IP адрес хоста и номер порта, определяющий программу веб-сервера.

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

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

Порты TCP не пересекаются с портами UDP: порт 1234 протокола TCP не будет мешать обмену данными по протоколу UDP через порт 1234.В большинстве UNIX-подобных ОС прослушивание портов с номерами 0—1023 требует особых привилегий. Другие номера портов выдаются операционной системой первым запросившим их процессам.

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

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

Порт можно открыть, чтобы система знала, куда отдавать данные, пришедшие по этому адресу.

Порт можно закрыть, чтобы данные больше не передавались. Они будут игнорироваться.

Порт можно пробросить. Например, можно научить систему, что если запрос пришёл на порт 1212 — отправить его на порт 2121. Так устроены многие сетевые маршрутизаторы и, в частности, ваш интернет-провайдер.

Порты можно просканировать. Перебрать все числа от 0 до 65535, чтобы посмотреть, придёт ли с какого-нибудь из них ответ. Если придёт, то значит на этом порте сидит какая-то программа.

Порт можно заблокировать. Например, сказать вашему роутеру на работе или дома, чтобы все запросы на определённый порт выбрасывались или переадресовывались.

Порт можно задать. Если вы знаете, что какой-то порт у вас заблокирован, то можно задать для этой программы другой порт и общаться через него. Однако не все программы это поддерживают.

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

Есть ещё кое-что, о чём нужно знать, знакомясь с тем, что такое порты компьютера. Это специальные термины, которые характеризуют состояние портов:

  • Интернет-сокеты — файловые дескрипторы, конкретизирующие IP адрес и ассоциированный с ним номер порта плюс специальный протокол передачи, который будет работать с данными
  • Привязка — процесс использования службой или сервисом интернет-сокета при передаче и приёме файлов
  • Прослушивание — попытка связаться службой или сервисом с портом/протоколом/IP адресом или комбинацией этих составляющих сетевой идентификации системы с целью стать на ожидание запросов со стороны клиента сервиса
  • Сканирование портов — проверка состояния портов с целью распознать их готовность к дальнейшим действиям

Что такое компьютерные порты?

ВКонтакте AppGallery Huawei

Компьютерный сетевой порт – это число, которое идентифицирует назначение сетевых потоков данных в пределах одного компьютера. Все хосты (компьютеры) обмениваются друг с другом информацией при помощи уникальных цифровых IP-адресов, представленных двоичной системой.

Порты позволяют определить сетевые приложения, работающие на компьютере, множество которых может быть запущено одновременно. Основными сетевыми программами могут быть:

  • WEB – сервер, предоставляющий трансляцию данных с веб-сайтов;
  • Сервер почты, позволяющие обмениваться электронными письмами;
  • FTP – сервер, обеспечивающий передачу информации.

Основным предназначением портов является прием и передача данных определенного вида, а также устранение ошибки неоднозначности при попытке установить связь с хостом по IP-адресу. Для обеспечения трансляции данных с веб-сервера необходимо указать IP адрес хоста и номер порта, определяющий программу веб-сервера.

Принцип работы портов

Порт отображается в виде 16 битного числа от 1 до 65535, которое доступно приложениям для обмена трафиком. Использование портов регламентируется специальной организацией IANA, предоставляющей стандарты при работе с портами.

Когда на определенном хосте пользователь открывает окно браузера и набирает необходимый поисковой запрос, веб-сервер автоматически отправляет пакеты данных по протоколу TCP/IP в порт 80.

В случае использования почтового клиента Outlook Express существуют два стандартизированных порта:

  • 110 порт используется для получения электронных писем;
  • посредством порта 25 письма отправляются в глобальную сеть в поисках своего адресата.

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

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

Глоссарий

Порт (англ. port) — натуральное число (как правило, в диапазоне от 1 до 216-1=65 535), записываемое в заголовках протоколов транспортного уровня (например, TCP), которое используется для определения процесса-получателя пакета в пределах одного хоста. Обычно на хосте под управлением ОС в пространстве пользователя исполняется несколько процессов, в каждом из которых выполняется какая-либо программа. В случае, если несколько программ используют компьютерную сеть, то ОС периодически получает по сети IP-пакет, предназначенный для одной из программ.

Обмен данными по сети ведется между двумя процессами по определенному протоколу. Для установки соединения необходимы:

  • номер протокола;
  • два IP-адреса (адрес хоста-отправителя и адрес хоста-получателя для построения маршрута между ними);
  • два номера порта (порт процесса-отправителя и порт получателя).

Порт процесса-отправителя (источника) может быть постоянным (статическим) или назначаться динамически для каждого нового сеанса связи.

При соединении по протоколу TCP порт процесса-отправителя используется:

  • операционной системой хоста-получателя для отправки пакета-подтверждения о получении данных;
  • процессом-получателем для отправки пакета-ответа.

Так как IP-адрес хоста-отправителя и номер порта процесса-отправителя являются аналогом обратного адреса, записываемого на почтовых конвертах (позволяют получателю отправить ответ отправителю), номер порта процесса-отправителя иногда называют «обратным» портом. Если на хосте какой-либо процесс постоянно использует один номер порта, говорят, что порт является «открытым». Если процесс получил номер порта у ОС («открыл порт») и «держит его открытым» для приема и передачи данных, говорят, что процесс «слушает» (англ. listen) порт.

Номера портов для протоколов прикладного уровня модели TCP/IP (например, HTTP) обычно назначаются организацией IANA. Однако на практике в целях безопасности номера портов могут выбираться произвольно. Номера портов могут указываться в адресах веб-сайтов (URL).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *