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

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Порт (TCP/IP)»)
Перейти к: навигация, поиск

Порт - цифровой номер, который является программным адресом, используемым для взаимодействия различных конечных точек (сетевых устройств, хостов) в современных компьютерных сетях на транспортном уровне модели OSI. Порты используются в транспортных протоколах TCP, UDP, SCTP, DCCP и позволяют различным программам и сетевым службам на одном хосте получать данные в IP-пакетах независимо друг от друга. Всякое взаимодействие двух хостов подразумевает использование как минимум одного порта получателя, и как правило, порта источника. Номер порта, добавленный к IP-адресу компьютера, завершает идентификацию возможного сеанса связи. То есть, пакеты данных направляются по сети к определенному IP-адресу назначения, а затем, по достижении конечного компьютера, далее направляется конкретному процессу, связанному с номером порта назначения. Принцип использования портов зависит от протокола, который их использует. Порт хоста назначения конкретного сетевого взаимодействия обычно известен приложению заранее. Порт хоста-источника сетевого пакета может назначаться как динамически для каждого нового сеанса связи, так и быть постоянным, статическим. Для TCP-соединения порт хоста-отправителя особенно важен, так как именно на него должен прийти ответ и подтверждение доставки пакета от хоста-получателя. Для SCTP в рамках ассоциации может использоваться несколько портов хоста-источника и несколько портов хоста-назначения (таким образом в данном протоколе достигается более высокая надёжность сеанса связи и скорость передачи). В случае, если определённый номер постоянно закреплён за определённой программой на хосте и может постоянно использоваться для приёма и / или передачи данных, то говорят что такой порт является "открытым". Сходная терминология открытый порт или закрытый (заблокированный) порт используется в сетевых брандмауэрах. Если конкретная программа ожидает передачи на определённый порт и держит его открытым, говорят, что программа "слушает порт". Номера портов, рекомендованные и используемые для конкретных специфических целей, т.е. для сетевых сервисов, выделяет и регистрирует IANA (Internet Assigned Numbers Authority), однако на практике часто встречаются случаи их неофициального применения.

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

Номер порта является 16-разрядным целым двоичным числом, таким образом, порты возможны в диапазоне от 1 до 65535 (для TCP, номер порта 0 зарезервирован и не может быть использован). Для UDP порт источника не является обязательным и нулевое значение означает отсутствие порта.

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

Приведём несколько примеров портов в компьютерных сетях. В частности, на примере популярной сетевой службы электронной почты (E-mail). Сервер используется для отправки и получения электронной почты, т.е., как правило нуждается в существовании двух служб. Первая служба используется для передачи сообщений на другие сервера. Это выполняется посредством простого протокола передачи почты (SMTP). Приложение-служба протокола SMTP обычно прослушивает TCP-порт 25 для входящих запросов. Вторая служба, это как правило, либо Post Office Protocol (POP) или Internet Message Access Protocol (IMAP), которые используются клиентскими приложениями электронной почты на персональных компьютерах пользователей, для получения сообщений электронной почты с сервера. Служба POP прослушивает TCP-порт под номером 110. Обе услуги могут быть запущены на том же хост-компьютере, и в этом случае номер порта отличает сервис, который был предложен одним из удаленного компьютера, будь то компьютер пользователя или другой почтовый сервер. Номера порта-источника (т.е. клиента) для подключения к серверу SMTP и POP3 обычно определяется динамически.

Как отмечалось выше, в некоторых приложениях, использования конкретных номеров портов клиентами и сервером чётко определены. Хорошим примером этого является протокол динамического управления IP-адресами (DHCP), в котором клиент всегда использует UDP-порт 68, а сервер всегда использует UDP-порт 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.

Ссылки[править | править исходный текст]


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