Порт (компьютерные сети)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

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

Пусть:

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

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

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

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

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

При соединении по протоколу UDP допустимо вместо порта процесса — отправителя указывать число ноль (не указывать порт отправителя).

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

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

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

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

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

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

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

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

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

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

Приведём несколько примеров использования портов в компьютерных сетях.

Электронная почта (e-mail)

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

  • SMTP — протокол для передачи почты от клиента к серверу и между серверами;
  • POP, IMAP — протоколы, используемые клиентами для получения почты с сервера.

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

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

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

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

DHCP

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

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

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

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

Порты отправителя и получателя[править | править вики-текст]

Пакеты TCP или UDP всегда содержат два поля номера порта: отправителя и получателя. Тип обслуживающей программы определяется портом получателя поступающих запросов, и этот же номер является портом отправителя ответов. «Обратный» порт (порт отправителя запросов, он же порт получателя ответов) при подключении по TCP определяется клиентом произвольно (хотя номера меньше 1024 и уже занятых портов не назначаются), и для пользователя интереса не представляет.

Использование обратных номеров портов в UDP зависит от реализации.

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

Активные порты протоколов транспортного уровня во многих операционных системах (Windows, Unix-подобные) могут быть обнаружены с помощью команды NetStat или nmap (в UNIX / Linux).

Возможны следующие состояния порта, показываемые netstat и nmap:

Состояние Описание
open программа-сервер готова принимать подключения
listen сервер слушает данный порт
filtred файрвол или иная причина не позволяет nmap’у определить открыт или закрыт порт
closed порт закрыт

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

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

Ряд номеров портов стандартизован и поддерживается некоммерческой организацией IANA.

В большинстве UNIX-подобных операционных систем прослушивание портов с номерами 0—1023 (почти все из которых зарегистрированы) требует особых привилегий. Каждый из остальных портов может быть захвачен первым запросившим его процессом. Однако, зарегистрировано номеров намного больше, чем 1024.

Краткий список номеров портов[править | править вики-текст]

Ниже приведен краткий список распространённых портов сетевых сервисов с комментариями. Подразумевается использование протокола TCP там, где не оговорено иное.

  • DISCARD: 9, Discard port (RFC 863)
  • FTP: 21 для команд, 20 для данных
  • SSH: 22 — удалённое управление хостом с ОС UNIX/Linux/BSD (если разрешено)
  • telnet: 23 — подключение для удалённого управления сетевыми устройствами (если такой сервис поддерживается)
  • SMTP: 25
  • SMTP c SSL: 465, 587
  • DNS: 53 (UDP) — необходимо для работы большинства служб Интернета на ПК обычного пользователя
  • DHCP: 67, 68/UDP
  • TFTP: 69/UDP
  • HTTP: 80, 8080 — если закрыть, браузер не будет отображать страницы
  • POP3: 110
  • POP3 с SSL: 995
  • NTP: 123 (time server) (UDP)
  • IMAP: 143
  • IMAP с SSL: 993
  • SNMP: 161 — мониторинг и управление сетевыми устройствами, которые поддерживают такой сервис
  • HTTPS: 443 — используется для веб-сайтов с защищённым соединением
  • СУБД Oracle : 1521
  • СУБД MySQL: 3306
  • RDP: 3389 — удалённое управление хостом с ОС Windows (если не запрещено)
  • SIP: 5060 (TCP / UDP) — управление вызовами в IP-телефонии, однако для передачи медиа-трафика в VoIP используется также широкий диапазон UDP-портов (см. RTP/RTCP), которые также должны быть открыты
  • OSCAR (ICQ): 5190
  • XMPP (Jabber): 5222/5223 — клиент-сервер, 5269 — сервер-сервер
  • BitTorrent: 6969, 6881—6889
  • traceroute: выше 33434 (UDP) (в некоторых источниках указано, что достаточно указать диапазон портов от 33434 до 33534)

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

См. также[править | править вики-текст]

Примечания[править | править вики-текст]