Как называется сетевой порт

Порт (англ. port ) — натуральное число, записываемое в заголовках протоколов транспортного уровня модели OSI (TCP, UDP, SCTP, DCCP). Используется для определения процесса-получателя пакета в пределах одного хоста.

Содержание

Описание [ править | править код ]

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

Процесс программы, желающей обмениваться данными по сети, может (например, при создании socket):

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

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

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

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

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

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

При соединении по протоколу UDP допустимо вместо порта процесса-отправителя указывать число ноль, означающее «порт не указан».

При соединении по протоколу SCTP в рамках ассоциации может использоваться:

  • несколько портов процесса-отправителя (источника)
  • несколько портов процесса-получателя.

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

Если на хосте какой‑либо процесс постоянно использует один номер порта (например, процесс программы, реализующей web-сервер, может использовать порт 80 для приёма и передачи данных), говорят, что порт является «открытым».

Термины «открытый порт» и «закрытый порт» (заблокированный) также используются, когда речь идёт о фильтрации сетевого трафика.

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

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

Если хост получит пакет, порт процесса-отправителя называется «удалённым» (англ. remote ) портом или "открытым на другом хосте", а порт процесса получателя — «локальным» портом, то есть открытым на текущем хосте. Если хост отправил пакет, порт процесса-отправителя называется «локальным» портом (открытым на текущем хосте), а порт процесса-получателя — «удалённым» портом (открытым на другом хосте).

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

Термин «порт» чаще всего применяется по отношению к протоколам TCP и UDP ввиду популярности этих протоколов. В протоколах SCTP и DCCP используются номера, соответствующие понятию «номер порта» для протоколов TCP и UDP.

Читайте также:  Как зарегистрироваться на алиэкспресс для покупки товаров

В заголовках протоколов TCP и UDP для хранения номеров портов выделены поля размером 16 бит . Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 2 16 -1=65 535 .

Примеры использования портов [ править | править код ]

На сервере запущены процессы программ, реализующих следующие протоколы:

Процесс программы, реализующей протокол SMTP, обычно «слушает» порт TCP с номером 25 (кратко: «tcp/25»).

Процесс программы, реализующей протокол POP, обычно «слушает» порт TCP с номером 110 (кратко: «tcp/110»).

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

Процесс программы-клиента, желающей подключиться к серверу для отправки (SMTP) или получения (POP или IMAP) почты, как правило, получает номер порта динамически.

В некоторых случаях использование заранее известных номеров портов является обязательным.

Например, для получения IP-адреса по протоколу DHCP процесс программы-клиента по протоколу UDP отправляет датаграмму с порта 68 (порт процесса-отправителя) на порт 67 (порт процесса-получателя).

Использование в URL-адресах [ править | править код ]

Номера портов могут указываться в адресах веб-сайтов (URL) или в идентификаторах других ресурсов, доступных в компьютерных сетях (URI). По умолчанию в протоколе HTTP используется порт 80, а в протоколе HTTPS — порт 443. URL вида http://www.example.com:8080/path/ указывает, что веб-ресурс обслуживается веб-сервером на порту 8080.

Состояния порта [ править | править код ]

Узнать номера активных (выданных процессам операционной системой) портов для протоколов транспортного уровня во многих операционных системах (Windows, Unix-подобных) можно с помощью утилит netstat и nmap (в ОС UNIX и ОС Linux).

Состояния порта, показываемые утилитами netstat и nmap , приведены в таблице.

Состояние порта [1] Описание
Открыт или прослушивается (англ. open или listen ) Программа-сервер готова принимать подключения программ-клиентов («слушает» порт)
Фильтруется (англ. filtered ) Не удаётся определить, открыт порт или закрыт, возможно, из-за работы файрвола или по иной причине
Закрыт (англ. closed ) ОС ещё не выдала номер порта никакому процессу, но в любой момент может это сделать

Номера портов [ править | править код ]

Порты TCP не пересекаются с портами UDP: порт 1234 протокола TCP не будет мешать обмену данными по протоколу UDP через порт 1234.

В большинстве UNIX-подобных ОС прослушивание портов с номерами 0—1023 требует особых привилегий (root). Другие номера портов выдаются операционной системой первым запросившим их процессам.

Некоторые популярные программы-анализаторы трафика (например, Wireshark) и сетевые брандмауэры используют общепринятые обозначения номеров портов для определения протокола передачи данных, что не всегда корректно. В некоторых случаях сетевые службы используют нестандартные номера портов или используют номера портов не по заявленному назначению. Например, известны случаи запуска интернет-провайдерами SMTP-серверов на портах 2525 (вместо 25) в целях обеспечения безопасности своих пользователей. Специализированные сайты, например, административные веб-интерфейсы, нередко работают на портах, отличных от стандартных 80 и 443.

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

Для начала дадим определение — что такое сетевой порт с технической точки зрения. Это натуральное число 0 до 65535, которое записывается в заголовках протоколов транспортного уровня сетевой модели OSI. Оно используется для определения программы или процесса-получателя пакета в пределах одного IP-адреса. Но такое определение понятно только специалистам, а работать с портами бывает приходиться и обычным пользователям – например, необходимо освободить занятый порт.

Рассмотрим простое определение сетевого порта. Всем известно, что для доступа к ресурсам в сети используются IP-адреса. Такой адрес есть у любого устройства — компьютера, телефона, сервера и т.д. Но на одном IP-адресе могут быть доступны разные сервисы – могут работать различные программы для выполнения разных функций. Например, на сервере с одним IP может быть размещен сайт и установлены дополнительные программы, помимо этого сайта. Как в таком случае получить доступ к конкретному сервису? Всё просто – указать при обращении не только IP-адрес, но и порт. Сайту отводится один порт, каждому другому сервису назначается другой уникальный порт. В результате по одному IP-адресу доступно множество сервисов.

Читайте также:  Как поменять интерфейс в зуп

При обращении к сайту браузер обычно не указывает порт в строке адреса, он подставляет его автоматически. Например, запрос к сайту https://example.com на самом деле выглядит как https://example.com:443. Порт в URL-адресе указывается после двоеточия, в данном примере 443 – для https (если бы использовался http – порт был бы 80).

Просканировать и проверить порты можно при помощи специальных сервисов в интернете или при помощи стандартных утилит ОС. Некоторые порты зарезервировала для себя корпорация IANA, которая отвечает за правильное функционирование сетевых протоколов. Это короткие номера идентификаторов, диапазон чисел от 0 до 1023 (всего – 1024).

Список портов по умолчанию для популярных протоколов:

  • 21 – ftp;
  • 22 – ssh;
  • 23 – telnet;
  • 25 – smtp;
  • 43 – whois;
  • 53 – dns;
  • 68 – dhcp;
  • 80 – http;
  • 110 – pop3;
  • 115 – sftp;
  • 119 – nntp;
  • 123 – ntp;
  • 139 – netbios;
  • 143 – imap;
  • 161 – snmp;
  • 179 – bgp;
  • 220 – imap3;
  • 389 – ldap;
  • 443 – https;
  • 993 – imaps;
  • 1723 – pptp;
  • 2049 – nfs;
  • 3306 – mysql;
  • 3389 – rdp;
  • 5060 – sip;
  • 8080 – http (альтернативный).

Как видно из списка, если порт занят, можно использовать альтернативный. Порт 80 и 8080 — разница здесь не существенна, просто если порт 80 занят, можно дописать еще число 80 и получится порт 8080.

Частый вопрос — как открыть закрытый порт? Это делается в настройках файрволла (брандмауэр) компьютера или сервера. Обычно достаточно открыть его дополнительные параметры и там создать правила для входящих подключений, в которых потребуется выбрать нужный протокол и прописать нужные порты. А как освободить занятый порт? Для этого необходимо узнать какой программой он занят и просто закрыть ее или указать в ее настройках другой порт.

Порт прослушивания (также называемый портом для входящих соединений или портом сервера) используется программой, ждущей приглашений к соединениям от других программ. Подробнее — см. TCP/IP.

«Недоступным» порт прослушивания называют, когда эти приглашения не приходят, а пропадают где-то по дороге. Ещё такой порт часто называют «закрытым», поэтому шаги, делающие порт доступным, называют «открытием порта».

Содержание

Как открыть порт [ править ]

Если у вас «нет внешнего IP-address» (то есть вы за NAT провайдера), то ничего сделать нельзя.

Иначе просто настройте свои сетевой экран (файервол) и маршрутизатор (роутер):

Кому нужны доступные порты [ править ]

Это зависит от программ, которыми вы пользуетесь:

  • программы-клиенты, такие как веб-браузер или почтовая программа, всегда сами начинают соединения к другим компьютерам, поэтому порта прослушивания у них нет вообще;
  • программы-серверы, например веб-сервер или ftp-сервер, имеют свои порты прослушивания, на которых они ждут соединений, инициируемых клиентами. Если вы хотите, чтобы к вашему серверу могли обращаться из Интернета, эти порты надо обязательно сделать доступными;
  • P2P программа, например битторрент-клиент, одновременно и ждёт приглашений к соединениям (как сервер), и сама инициирует соединения к другим P2P клиентам. Поэтому делать её порт прослушивания доступным в принципе не обязательно, но очень желательно. Подробнее — см.Порт в битторрент клиенте.
Читайте также:  Как выложить музыку в айтюнс

Выбор номера [ править ]

Порт — это просто любое условное число от 0 до 65535. Теоретически номер порта ни на что не влияет. Важно только, чтобы этот порт был свободен. Впрочем, если ваша программа при запуске обнаружит, что указанный вами порт занят (то есть его уже слушает какая-то другая программа на вашем компьютере), то она вам сразу пожалуется сама.

На практике некоторые номера выбирать не сто́ит. Некоторые номера, особенно небольшие, могут быть заняты системными службами вашего компьютера. Некоторые номера могут специально блокироваться интернет-провайдерами.

Если вам не важен с эстетической точки зрения номер порта, то рекомендуется выбрать какой-нибудь порт выше 5000. Некоторые пользователи рекомендуют выбирать порт выше 42000.

  • Для системных и некоторых популярных программ выделены порты с номерами от 0 до 1023, называемые системными или общеизвестными.
  • Порты с номерами 1024 — 49151 называются пользовательскими или зарегистрированными.
  • Порты с номерами 49152 — 65535 называются динамическими, эфемерными или частными.

Проверка доступности [ править ]

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

Клиентом [ править ]

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

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

Telnet [ править ]

Для проверки доступности TCP-порта (а большинство прикладных протоколов используют TCP) достаточно попытаться установить с вашим сервером «сырое» TCP-соединение с помощью telnet.

  • В Windows XP: нажмите Пуск -> Выполнить (Win+R), затем в открывшемся окне наберите cmd и нажмите "Ок".
  • В Windows Vista и Windows 7 необходимо установить соответствующий компонент: "Панель управления" — "Программы и компоненты" — "Включение или отключение компонентов Windows" — "Клиент Telnet". После перезагрузки компьютера нажмите Пуск -> Выполнить (Win+R), наберите cmd и нажмите "Ок".

В появившемся окне командной строки наберите telnet , введите через пробелы IP-адрес, затем номер порта и нажмите "Enter".

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

Сканером [ править ]

В сети есть специальные онлайн-сканеры портов.

Port Number: 5908 Scan Port Зайдите на страницу любого из них, например whatsmyip.org/port-scanner.
Введите номер порта для проверки и нажмите кнопку Scan Port.

Ваш IP-адрес сканер видит сам, а порт вы ему сообщаете, и он делает попытку установить к вашему серверу TCP-соединение. Статус порта Open означает, что ваш порт прослушивания доступен.
Другие сканеры:

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

Этот сканер позволяет проверить порт для любого IP-адреса:

Как задать вопрос [ править ]

Итак, у вас не получается открыть порт, и вы собираетесь просить о помощи на каком-нибудь форуме.

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

  • о том, что вы запустили вашу программу и проверили доступность порта онлайн-сканером (в битторрент-клиенте не полагайтесь на индикатор порта или показания трекера);
  • адрес вашего компьютера из команды ipconfig ( ifconfig для unix-подобных ОС);
  • адрес, под которым вас видно в Интернете (можно первые два числа из четырёх);
  • какой файервол и как вы пытались его настроить (со скриншотом);
  • какой роутер и как вы пытались его настроить (со скриншотом).
Adblock
detector