Порт (компьютерные сети): различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м Уточнение ссылок.
Нет описания правки
Строка 6:
 
Пусть:
*# на [[хост]]е запущена [[операционная система]] (ОС);
*# под управлением [[Операционная система|ОС]] в [[Пространство пользователя|пространстве пользователя]] запущеноисполняется несколько [[Процесс (информатика)|процессов]];
# в каждом из [[Процесс (информатика)|процессов]] выполняется какая-либо [[Компьютерная программа|программа]];
* ОС получила по сети [[IP-пакет]].
# несколько [[Компьютерная программа|программ]] используют [[Вычислительная сеть|сеть]];
# [[Операционная система|ОС]] получает по сети [[IP-пакет]], предназначенный для одной из [[Компьютерная программа|программ]] (для одного из [[Процесс (информатика)|процессов]]).
 
[[Процесс (информатика)|Процессов]] ([[Компьютерная программа|программ]]) несколько. Как [[Операционная система|ОС]] определит, какому из [[Процесс (информатика)|процессов]] (какой из [[Компьютерная программа|программ]]) передать пакет? По номеру порта.
Процессов много. Как [[Операционная система|ОС]] определяет, какому из процессов передать пакет? По номеру порта. Процесс, желающий обмениваться данными по сети, получает номер порта у ОС (например, при создании [[Сокет (программный интерфейс)|socket]]).
 
[[Процесс (информатика)|Процесс]] [[Компьютерная программа|программы]], желающей обмениваться данными по сети, может (например, при создании [[Сокет (программный интерфейс)|socket]]):
Обмен данными по сети ведётся между двумя [[Процесс (информатика)|процессами]] по какому‑либо [[протокол передачи данных|протоколу]]. У каждого протокола имеется уникальный номер. Каждый из процессов получает у [[Операционная система|ОС]] номер порта — уникальный номер в пределах одного [[хост]]а. Оба процесса запущены на разных [[хост]]ах. Каждый [[хост]] имеет [[IP-адрес]] — уникальный номер в пределах сегмента сети. Таким образом, для установки соединения необходимо пять чисел:
* запросить у [[Операционная система|ОС]] определённый номер порта. [[Операционная система|ОС]] может либо предоставить запрошенный номер порт, либо отказать [[Компьютерная программа|программе]] (например, если номер порта уже выдан какому-либо [[Процесс (информатика)|процессу]]). Обычно, порты с номерами от 1 до 1024 доступны только привилегированному пользователю ([[root]]);
* запросить у [[Операционная система|ОС]] любой свободный номер порта. [[Операционная система|ОС]] сама выберет номер порта, ещё не выданный никакому [[Процесс (информатика)|процессу]], и предоставит его [[Процесс (информатика)|процессу]] запрашиваюшей [[Компьютерная программа|программы]].
 
Обмен данными по сети ведётся между двумя [[Процесс (информатика)|процессами]] по какому‑либо [[протокол передачи данных|протоколу]]. [[Процесс (информатика)|Процессы]] запущены на разных [[хост]]ах, работают под управлением одинаковых или разных [[Операционная система|ОС]]. У каждого протокола имеется уникальный номер. Каждый из [[Процесс (информатика)|процессов]] получает у [[Операционная система|ОС]] номер порта — уникальный номер в пределах одного [[хост]]а. Каждый [[хост]] имеет [[IP-адрес]] — уникальный номер в пределах [[Сегмент сети|сегмента сети]]. Учитывая вышесказанное, для установки соединения необходимо пять чисел:
* номер [[Протокол передачи данных|протокола]];
* два [[IP-адресаадрес]]а:
** (адрес хоста — отправителя и;
** адрес хоста — получателя)
: (для [[Маршрутизация|построения маршрута]] между [[хост]]ами);
* два номера порта:
** (порт процесса — отправителя и(кратко: порт отправителя);
** порт процесса — получателя (кратко: порт получателя)
: (для определения [[Процесс (информатика)|процессов]], выполняющихся на [[хост]]ах).
 
Порт процесса — отправителя (источника) может быть постоянным (статическим) или назначаться [[Динамический порт|динамически]] для каждого нового сеанса связи.
 
При соединении по протоколу [[TCP]] порт процесса — отправителя используется:
* [[Операционная система|операционной системой]] хоста — получателя для отправки пакета — подтверждения о получении данных;
* процессом — получателем для отправки пакета — ответа.
 
При соединении по протоколу [[UDP]] допустимо вместо порта процесса — отправителя указывать число ноль (нечто указыватьозначает «порт отправителяне указан»).
 
При соединении по протоколу [[SCTP]] в рамках ассоциации может использоваться:
Строка 30 ⟶ 42 :
Таким образом в протоколе [[SCTP]] достигается более высокая надёжность сеанса связи и скорость передачи.
 
Так как [[IP-адрес]] хоста — отправителя и номер порта процесса — отправителя являются аналогом обратного адреса, записываемого на почтовых [[Конверт|конвертах]] (позволяют получателю отправить ответ отправителю), номер порта процесса — отправителя называют «обратным» портом.
Если на [[хост]]е какой‑то [[Процесс (информатика)|процесс]] постоянно использует один номер порта (например, процесс, реализующий [[Веб-сервер|web-сервер]], может использовать порт 80 для приёма/передачи данных), говорят, что порт является «открытым».
 
Если на [[хост]]е какой‑то [[Процесс (информатика)|процесс]] постоянно использует один номер порта (например, процесс программы, реализующей [[Веб-сервер|web-сервер]], может использовать порт 80 для приёма и передачи данных), говорят, что порт является «открытым».
Термины «открытый порт» и «закрытый порт» (заблокированный) также используются, когда речь идёт о фильтрации сетевого трафика (см. [[Межсетевой экран|брандмауэр]]).
 
Термины «открытый порт» и «закрытый порт» (заблокированный) также используются, когда речь идёт о фильтрации [[Сетевой трафик|сетевого трафика]] (см. [[Межсетевой экран|брандмауэр]]).
Если [[Процесс (информатика)|процесс]] получил номер порта у [[Операционная система|ОС]] («открыл порт») и «держит его открытым» для приёма/передачи данных, говорят, что процесс «слушает» ({{lang-en|listen}}) порт.
 
Если [[Процесс (информатика)|процесс]] получил номер порта у [[Операционная система|ОС]] («открыл порт») и «держит его открытым» для приёма и передачи данных, говорят, что процесс «слушает» ({{lang-en|listen}}) порт.
 
Обычно, «слушает» порт [[Процесс (информатика)|процесс]] [[Компьютерная программа|программы]], реализующей [[Сервер (программное обеспечение)|сервер]] для какого-либо [[Протокол передачи данных|протокола]]. [[Процесс (информатика)|Процесс]] [[Компьютерная программа|программы]], реализующей [[Клиент (информатика)|клиента]] для того же [[Протокол передачи данных|протокола]], часто позволяет [[Операционная система|ОС]] выбрать номер порта для подключения к [[Сервер (программное обеспечение)|серверу]].
 
Если [[хост]] получит пакет, порт процесса — отправителя называется «удалённым» ({{lang-en|remote}}) портом (открытым на другом [[хост]]е), а порт процесса получателя — «локальным» портом (открытым на текущем [[хост]]е). Если [[хост]] отправил пакет, порт процесса — отправителя называется «локальным» портом (открытым на текущем [[хост]]е), а порт процесса — получателя — «удалённым» портом (открытым на другом [[хост]]е).
 
Номера портов для [[Протокол передачи данных|протоколов]] прикладного уровня модели [[TCP/IP]] ([[HTTP]], [[SSH]] и др.), обычно, назначаются организацией [[IANA]] ({{lang-en|'''i'''nternet '''a'''ssigned '''n'''umbers '''a'''uthority}}), рекомендуются к использованию. Однако на практике, в целях безопасности номера портов могут выбираться произвольно.
Строка 40 ⟶ 58 :
{{викиучебник|Порт}}
 
Термин «порт» чаще всего применяется по отношению к [[Протокол передачи данных|протоколам]] [[TCP]] и [[UDP]] ввиду популярности этих протоколов. В протоколах [[SCTP]] и [[DCCP]], обычно, используются номера, соответствующие понятию «портномер порта» вдля протоколов TCP и UDP.
 
В заголовках протоколов [[TCP]] и [[UDP]] для хранения номеров портов выделены поля размером {{nobr|16 [[бит]]}}. Для протокола [[TCP]] порт с номером 0 зарезервирован и не может использоваться. Для протокола [[UDP]] указание порта процесса — отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне {{nobr|от 1}} {{nobr|1=до 2<sup>16</sup>-1={{formatnum:65535}}}}.
 
== Примеры использования портов ==
Строка 50 ⟶ 68 :
; [[Электронная почта]] (e-mail)
 
На [[Сервер (аппаратное обеспечение)|сервере]] запущены [[Процесс (информатика)|процессы]] [[Компьютерная программа|программ]], реализующиереализующих следующие протоколы:
* [[SMTP]] — [[Протокол передачи данных|протокол]] для передачи почты от [[Клиент (информатика)|клиента]] к [[Сервер (программное обеспечение)|серверу]] и между [[Сервер (программное обеспечение)|серверами]];
* [[POP]], [[IMAP]] — [[Протокол передачи данных|протоколы]], используемые [[Клиент (информатика)|клиентами]] для получения почты с [[Сервер (программное обеспечение)|сервера]].
 
[[Процесс (информатика)|Процесс]] [[Компьютерная программа|программы]], реализующийреализующей [[Протокол передачи данных|протокол]] [[SMTP]], обычно, «слушает» порт [[TCP]] номерс номером 25 (кратко: «tcp/25»).
 
[[Процесс (информатика)|Процесс]] [[Компьютерная программа|программы]], реализующийреализующей [[Протокол передачи данных|протокол]] [[POP]], обычно, «слушает» порт [[TCP]] номерс номером 110 (кратко: «tcp/110»).
 
[[Процесс (информатика)|Процессы]] могут быть запущены на одном [[хост]]е (компьютере). Определение конкретного [[Процесс (информатика)|процесса]] выполняетсяосуществляется по номеру порта.
 
[[Процесс (информатика)|Процесс]] [[Компьютерная программа|программы]] — [[Клиент (информатика)|клиента]], желающегожелающей подключиться к [[Сервер (программное обеспечение)|серверу]] для отправки (SMTP) или получения (POP или IMAP) почты, как правило, получает номер порта [[Динамический порт|динамически]].
 
; [[DHCP]]
Строка 66 ⟶ 84 :
В некоторых случаях использование заранее известных номеров портов является обязательным.
 
Например, для получения [[IP-адрес]]а по [[Протокол передачи данных|протоколу]] [[DHCP]] [[Процесс (информатика)|процесс]] [[Компьютерная программа|программы]] — [[Клиент (информатика)|клиента]] отправляетпо [[ДатаграммаПротокол передачи данных|датаграммупротоколу]] [[UDP]] отправляет [[Датаграмма|датаграмму]] с порта  68 (порт процесса — отправителя) на порт  67 (порт процесса — получателя).
 
== Использование в URL-адресах ==
Номера портов можно иногда увидеть в адресах [[веб-сайт]]ов ([[URL]]) или других идентификаторах ресурсов в компьютерных сетях [[URI]]. По умолчанию, протокол [[HTTP]] использует порт 80, а [[HTTPS]] использует порт 443, но URL как http://www.example.com:8080/path/ указывает, что веб-ресурс обслуживается [[веб-сервер]]ом на порту 8080.
 
Номера портов могут указываться в адресах [[веб-сайт]]ов ([[URL]]) или в идентификаторах других ресурсов, доступный в компьютерных сетях ([[URI]]). По умолчанию в протоколе [[HTTP]] используется порт 80, а в протооколе [[HTTPS]] — порт 443. [[URL]] вида «http://www.example.com:8080/path/» указывает, что веб-ресурс обслуживается [[веб-сервер]]ом на порту 8080.
== Порты отправителя и получателя ==
[[сетевой пакет|Пакеты]] TCP или UDP всегда содержат два [[Битовое поле|поля]] номера порта: отправителя и получателя. Тип [[Сервер (приложение)|обслуживающей программы]] определяется портом получателя поступающих запросов, и этот же номер является портом отправителя ответов. «Обратный» порт (порт отправителя запросов, он же порт получателя ответов) при подключении по TCP определяется [[клиент (программный)|клиентом]] произвольно (хотя номера меньше 1024 и уже занятых портов не назначаются), и для пользователя интереса не представляет.
 
Использование обратных номеров портов в UDP зависит от реализации.
 
== Состояния порта ==
Активные порты протоколов транспортного уровня во многих операционных системах ([[Windows]], [[UNIX-подобные операционные системы|Unix-подобные]]) могут быть обнаружены с помощью команды [[NetStat]] или [[nmap]] (в UNIX / Linux).
 
Узнать номера активных (выданных [[Процесс (информатика)|процессам]] [[Операционная система|операционной системой]]) портов для протоколов транспортного уровня во многих [[Операционная система|операционных системах]] ([[Windows]], [[UNIX-подобные операционные системы|Unix-подобных]]) можно с помощью утилит <code>[[netstat]]</code> и <code>[[nmap]]</code> (в [[Операционная система|ОС]] [[UNIX]] и [[Операционная система|ОС]] [[Linux]]).
Возможны следующие состояния порта, показываемые netstat и nmap:
 
{| border="1"
Состояния порта, показываемые утилитами <code>[[netstat]]</code> и <code>[[nmap]]</code>, приведены в таблице.
! Состояние
 
{| class="wikitable sortable"
|-
! Состояние порта<ref>[http://rootmaster.at.ua/publ/nmap_skaner_portov/1-1-0-54 <code>nmap</code> — сканер портов] // Сайт на хостинге [[uCoz]], посвящённый администрированию компьютерных систем и сетей. Дата публикации: 6 мая 2011 года.</ref>
! Описание
|-
| Открыт или прослушивается ({{lang-en|open}} или {{lang-en2|listen}})
|open
| [[Компьютерная программа-|Программа]] — [[Сервер (программное обеспечение)|сервер]] готова принимать подключения [[Компьютерная программа|программ]] — [[Клиент (информатика)|клиентов]] («слушает» порт)
|-
| Фильтруется ({{lang-en|filtred}})
|listen
| Не удаётся определить, открыт порт или закрыт, возможно, из-за работы [[Персональный файрвол|файрвола]] или по иной причине
|сервер слушает данный порт
|-
| Закрыт ({{lang-en|closed}})
|filtred
| [[Операционная система|ОС]] ещё не выдала номер порта никакому [[Процесс (информатика)|процессу]], но в любой момент может это сделать
|[[Персональный файрвол|файрвол]] или иная причина <!-- http://rootmaster.at.ua/publ/nmap_skaner_portov/1-1-0-54 --> не позволяет nmap’у определить открыт или закрыт порт
|-
|closed
|порт закрыт
|}
 
== Номера портов ==
 
{{main|Список портов TCP и UDP}}
Порты TCP не пересекаются с портами UDP. То есть, порт 1234 протокола TCP не будет мешать обмену по UDP через порт 1234.
 
Порты TCP не пересекаются с портами UDP. То есть, порт 1234 протокола TCP не будет мешать обмену данными по протоколу UDP через порт 1234.
Ряд номеров портов стандартизован и поддерживается некоммерческой организацией [[IANA]].
 
Некоторые номера портов стандартизованы. Стандартизацией занимается некоммерческая организация [[IANA]].
В большинстве [[UNIX]]-подобных [[операционная система|операционных систем]] прослушивание портов с номерами 0—1023 (почти все из которых зарегистрированы) требует особых привилегий. Каждый из остальных портов может быть захвачен первым запросившим его [[процесс (информатика)|процессом]].
 
Однако, зарегистрировано номеров намного больше, чем 1024.
В большинстве [[UNIX-подобные операционные системы|UNIX-подобных]] [[Операционная система|ОС]] прослушивание портов с номерами 0—1023 (почти все из которых зарегистрированы [[IANA]]) требует особых привилегий ([[root]]). Другие номера портов (некоторые из которых тоже зарегистрированы [[IANA]]) выдаются [[Операционная система|операционной системой]] первым запросившим их [[Процесс (информатика)|процессам]].
 
=== Краткий список номеров портов ===
 
Ниже приведен краткий список распространённых портов сетевых сервисов с комментариями. Подразумевается использование протокола TCP там, где не оговорено иное.
 
* [[DISCARD]]{{iw|Discard Protocol|Discard}}: 9, Discard port (RFC 863, май 1983 года)
 
* [[FTP]]: 21 для команд, 20 для данных
* [[FTP]]: 21 (для команд), 20 (для данных) (передача файлов)
* [[SSH]]: 22 — удалённое управление хостом с ОС [[UNIX]]/[[Linux]]/[[BSD]] (если разрешено)
 
* [[telnet]]: 23 — подключение для удалённого управления сетевыми устройствами (если такой сервис поддерживается)
* [[SSH]]: 22 (удалённое управление [[хост]]ом с [[Операционная система|ОС]] [[UNIX]]/[[Linux]]/[[BSD]] (если разрешено))
* [[SMTP]]: 25
 
* [[SMTP]] c [[SSL]]: 465, 587
* [[telnet]]: 23 (удалённое управления сетевыми устройствами (если такой сервис поддерживается)) (без шифрования)
* [[DNS]]: 53 (UDP) — необходимо для работы большинства служб Интернета на ПК обычного пользователя
 
* [[DHCP]]: 67, 68/UDP
* [[SMTP]]: 25 (отправка [[Электронная почта|почты]] (без шифрования))
* [[TFTP]]: 69/UDP
 
* [[HTTP]]: 80, 8080 — если закрыть, браузер не будет отображать страницы
* [[SMTP]] c [[SSL]]: 465, 587 (отправка [[Электронная почта|почты]] с шифрованием))
* [[POP3]]: 110
 
* [[POP3]] с [[SSL]]: 995
* [[DNS]]: 53 (UDP) (получение [[IP-адрес]]ов по [[Доменное имя|доменным именам]] и наоборот)
* [[NTP]]: 123 (time server) (UDP)
 
* [[IMAP]]: 143
* [[DHCP]]: 67, 68/UDP (получение [[IP-адрес]]а для текущего [[хост]]а, [[IP-адрес]]а [[Шлюз по умолчанию|шлюза по умолчанию]], [[IP-адрес]]ов серверов [[DNS]] и др.)
* [[IMAP]] с [[SSL]]: 993
 
* [[SNMP]]: 161 — мониторинг и управление сетевыми устройствами, которые поддерживают такой сервис
* [[TFTP]]: 69/UDP (скачивание файлов)
* [[HTTPS]]: 443 — используется для веб-сайтов с защищённым соединением
 
* [[СУБД]] [[Oracle]] : 1521
* [[HTTP]]: 80, 8080 (получение [[Веб-страница|веб-страницы]] (без шифрования))
* [[СУБД]] [[MySQL]]: 3306
 
* [[Remote Desktop Protocol|RDP]]: 3389 — удалённое управление хостом с ОС [[Windows]] (если не запрещено)
* [[HTTPS]]: 443 (получение [[Веб-страница|веб-страниц]] (с шифрованием))
* [[SIP]]: 5060 (TCP / UDP) — управление вызовами в IP-телефонии, однако для передачи медиа-трафика в [[VoIP]] используется также широкий диапазон UDP-портов (см. [[RTP]]/[[RTCP]]), которые также должны быть открыты
 
* [[OSCAR]] ([[ICQ]]): 5190
* [[POP3]]: 110 (получение [[Электронная почта|почты]] (без шифрования))
* [[XMPP]] ([[Jabber]]): 5222/5223 — клиент-сервер, 5269 — сервер-сервер <!-- Основание: http://xmpp.org/extensions/xep-0001.html#iana -->
 
* [[BitTorrent (протокол)|BitTorrent]]: 6969, 6881—6889
* [[POP3]] с [[SSL]]: 995 (получение [[Электронная почта|почты]] (с шифрованием))
* [[traceroute]]: выше 33434 (UDP) (в некоторых источниках указано, что достаточно указать диапазон портов от 33434 до 33534)
 
* [[NTP]]: 123 (time server) (UDP) (настройка часов)
 
* [[IMAP]]: 143 (получение и отправка [[Электронная почта|почты]] (без шифрования))
 
* [[IMAP]] с [[SSL]]: 993 (получение и отправка [[Электронная почта|почты]] (с шифрованием))
 
* [[SNMP]]: 161 (мониторинг и управление сетевыми устройствами (при наличии поддержки такого сервиса))
 
* [[Система управления базами данных|СУБД]] [[Oracle]]: 1521
 
* [[Система управления базами данных|СУБД]] [[MySQL]]: 3306
 
* [[Remote Desktop Protocol|RDP]]: 3389 (удалённое управление [[хост]]ом с [[Операционная система|ОС]] [[Windows]] (если не запрещено))
 
* [[SIP]]: 5060 (TCP или UDP) (управление вызовами в [[IP-телефония|IP-телефонии]]; также должны быть открыты UDP-порты, используемые в [[VoIP]] для передачи медиа-трафика (см. [[RTP]]/[[RTCP]]))
 
* [[OSCAR]] ([[ICQ]]): 5190 (получение и отправка [[мгновенные сообщения|мгновенных сообщений]])
 
* [[XMPP]] ([[Jabber]]): 5222/5223 (клиент-сервер), 5269 (сервер-сервер)<ref>http://xmpp.org/extensions/xep-0001.html#iana</ref> (получение и отправка [[мгновенные сообщения|мгновенных сообщений]])
 
* [[BitTorrent (протокол)|BitTorrent]]: 6969, 6881—6889 (обмен файлами)
 
* [[traceroute]]: выше 33434 (UDP) (в некоторых источниках указано, что достаточно указать диапазон портов от 33434 до 33534) (построение маршрута, по которому передаются [[IP-пакет]]ы)
 
Некоторые популярные [[Компьютерная программа|программы]] — [[Анализатор трафика|анализаторы трафика]] (такие какнапример, [[Wireshark]]) и [[Межсетевой экран|сетевые брандмауэры]], пользуютсяиспользуют общепринятымиобщепринятые обозначениямиобозначения номеров портов, для определения [[Протокол передачи данных|протокола передачи данных]], что не всегда корректно. В некоторых случаях сетевые службы используют не стандартизованные номера портов или используют номера портов не по назначению. Например, такизвестны какслучаи запуска [[интернет-провайдер]]ами [[SMTP]]-[[Сервер (программное обеспечение)|серверов]] на портах 2525 (вместо 25) в некоторыхцелях обеспечения безопасности своих пользователей. Специализированные сайты, случаяхнапример, портыадминистративные могут[[веб-интерфейс]]ы, использоватьсянередко поработают другомуна ипортах, различнымиотличных сетевымиот службамистандартных 80 и 443.
Например известны случаи, когда интернет-провайдеры в целях обеспечения безопасности создавали для своих пользователей SMTP-сервер на порту 2525, вместо 25. В то же время специализированные сайты (например, такие как административные [[веб-интерфейс]]ы) нередко работают на портах, отличных от стандартных 80 и 443.
 
== См. также ==
Строка 150 ⟶ 190 :
* [[Трансляция порт-адрес]]
* [[Сканер портов]]
* [[Сетевая плата]]
 
== Примечания ==