Interested Article - Порт (компьютерные сети)
- 2020-04-27
- 2
Порт ( англ. port ) — целое неотрицательное число, записываемое в заголовках протоколов транспортного уровня сетевой модели OSI ( TCP , UDP , SCTP , DCCP ).
Описание
Обычно на хосте под управлением операционной системы в пространстве пользователя исполняется несколько процессов , в каждом из которых выполняется какая-либо программа . В случае если несколько программ используют компьютерную сеть , то ОС периодически получает по сети IP-пакет , предназначенный для одной из программ.
Процесс программы, желающей обмениваться данными по сети, может (например, при создании socket ):
- запросить у ОС в своё распоряжение порт с определённым номером. ОС может либо предоставить порт с этим номером, либо отказать программе (например, в случае, когда порт с этим номером уже отдан в распоряжение другому процессу);
- запросить у ОС в своё распоряжение свободный порт с любым номером. ОС в этом случае сама выберет свободный порт, ещё не занятый никаким процессом, и предоставит его в распоряжение запрашивающей программе.
Обмен данными по сети ведётся между двумя процессами по определённому протоколу . Для установки соединения необходимы:
- номер протокола ;
- два IP-адреса (адрес хоста-отправителя и адрес хоста-получателя для построения маршрута между ними);
- два номера порта (порт процесса-отправителя и порт получателя).
Порт процесса-отправителя (источника) может быть постоянным (статическим) или назначаться динамически для каждого нового сеанса связи.
При соединении по протоколу TCP порт процесса-отправителя используется:
- операционной системой хоста-получателя для отправки пакета-подтверждения о получении данных;
- процессом-получателем для отправки пакета-ответа.
При соединении по протоколу UDP допустимо вместо порта процесса-отправителя указывать число ноль, означающее «порт не указан».
При соединении по протоколу SCTP в рамках ассоциации может использоваться:
- несколько портов процесса-отправителя (источника)
- несколько портов процесса-получателя.
Так как IP-адрес хоста-отправителя и номер порта процесса-отправителя являются аналогом обратного адреса, записываемого на почтовых конвертах (позволяют получателю отправить ответ отправителю), номер порта процесса-отправителя иногда называют «обратным» портом.
Если на хосте какой‑либо процесс постоянно использует один номер порта (например, процесс программы, реализующей web-сервер , может использовать порт 80 для приёма и передачи данных), говорят, что порт является «открытым».
Термины «открытый порт» и «закрытый порт» (заблокированный) также используются, когда речь идёт о фильтрации сетевого трафика .
Если процесс получил номер порта у ОС («открыл порт») и «держит его открытым» для приёма и передачи данных, говорят, что процесс «прослушивает» ( разг. слушает , от англ. listen ) порт.
Обычно прослушиванием порта занимается процесс программы, реализующей сервер для какого-либо протокола. Процесс программы, реализующей клиент для того же протокола, часто позволяет ОС указать номер порта для подключения к серверу.
Если хост получит пакет, порт процесса-отправителя называется «удалённым» ( англ. remote ) портом или "открытым на другом хосте ", а порт процесса получателя — «локальным» портом, то есть открытым на текущем хосте. Если хост отправил пакет, порт процесса-отправителя называется «локальным» портом (открытым на текущем хосте ), а порт процесса-получателя — «удалённым» портом (открытым на другом хосте ).
Номера портов для протоколов прикладного уровня модели TCP/IP ( HTTP , SSH и др.) обычно назначаются организацией IANA ( англ. i nternet a ssigned n umbers a uthority ). Однако на практике в целях безопасности номера портов могут выбираться произвольно.
Термин «порт» чаще всего применяется по отношению к протоколам TCP и UDP ввиду популярности этих протоколов. В протоколах SCTP и DCCP используются номера, соответствующие понятию «номер порта» для протоколов TCP и UDP.
В заголовках протоколов TCP и UDP для хранения номеров портов выделены поля размером 16 бит . Для протокола TCP порт с номером 0 зарезервирован и не может использоваться. Для протокола UDP указание порта процесса-отправителя («обратного» порта) не является обязательным, и порт с номером 0 означает отсутствие порта. Таким образом, номер порта — число в диапазоне от 1 до 2 16 -1=65 535 .
Примеры использования портов
- Электронная почта (e-mail)
На сервере запущены процессы программ , реализующих следующие протоколы:
- SMTP — протокол для передачи почты от клиента к серверу и между серверами ;
- POP , IMAP — протоколы , используемые клиентами для получения почты с сервера .
Процесс программы , реализующей протокол 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
, приведены в таблице.
Состояние порта | Описание |
---|---|
Открыт или прослушивается ( англ. open или listen ) | Программа - сервер готова принимать подключения программ - клиентов («слушает» порт) |
Фильтруется ( англ. filtered ) | Не удаётся определить, открыт порт или закрыт, возможно, из-за работы файрвола или по иной причине |
Закрыт ( англ. closed ) | ОС ещё не выдала номер порта никакому процессу , но в любой момент может это сделать |
Номера портов
Порты TCP не пересекаются с портами UDP: порт 1234 протокола TCP не будет мешать обмену данными по протоколу UDP через порт 1234.
В большинстве UNIX-подобных ОС прослушивание портов с номерами 0—1023 требует особых привилегий ( root ). Другие номера портов выдаются операционной системой первым запросившим их процессам.
Некоторые популярные программы- анализаторы трафика (например, Wireshark ) и сетевые брандмауэры используют общепринятые обозначения номеров портов для определения протокола передачи данных , что не всегда корректно. В некоторых случаях сетевые службы используют нестандартные номера портов или используют номера портов не по заявленному назначению. Например, известны случаи запуска интернет-провайдерами SMTP - серверов на портах 2525 (вместо 25) в целях обеспечения безопасности своих пользователей. Специализированные сайты, например, административные веб-интерфейсы , нередко работают на портах, отличных от стандартных 80 и 443.
См. также
- Динамический порт
- Сетевые сервисы
- Файл /etc/services
- Проброс портов
- Сокет (программный интерфейс)
- NAT
- Трансляция порт-адрес
- Сканер портов
Примечания
- от 23 июля 2015 на Wayback Machine // uCoz Дата публикации: 6 мая 2011 года.
- 2020-04-27
- 2