stringtranslate.com

Порт (компьютерная сеть)

В компьютерных сетях порт или номер порта — это номер, назначенный для уникальной идентификации конечной точки соединения и направления данных в определенную службу. На программном уровне, в операционной системе , порт — это логическая конструкция, которая идентифицирует определенный процесс или тип сетевой службы . Порт на программном уровне идентифицируется для каждой комбинации транспортного протокола и адреса назначенным ему номером порта. Наиболее распространенными транспортными протоколами, использующими номера портов, являются протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP); эти номера портов представляют собой 16-битные беззнаковые числа .

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

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

Номер порта

Для TCP и UDP номер порта — это 16-битное целое число без знака, таким образом, в диапазоне от 0 до 65535. Для TCP номер порта 0 зарезервирован и не может быть использован, в то время как для UDP исходный порт является необязательным, а значение ноль означает отсутствие порта . Процесс связывает свои входные или выходные каналы через интернет-сокет , который является типом файлового дескриптора , связанного с транспортным протоколом , сетевым адресом, таким как IP-адрес , и номером порта. Это известно как привязка . Сокет используется процессом для отправки и получения данных по сети. Сетевое программное обеспечение операционной системы имеет задачу передачи исходящих данных со всех портов приложений в сеть и пересылки поступающих сетевых пакетов процессам путем сопоставления IP-адреса пакета и номера порта с сокетом. Для TCP только один процесс может привязываться к определенной комбинации IP-адреса и порта. Обычные сбои приложений, иногда называемые конфликтами портов , происходят, когда несколько программ пытаются использовать один и тот же номер порта на одном и том же IP-адресе с одним и тем же протоколом.

Приложения, реализующие общие службы, часто используют специально зарезервированные известные номера портов для получения запросов на обслуживание от клиентов. Этот процесс известен как прослушивание и включает получение запроса на известный порт, потенциально устанавливая диалог «сервер-клиент» один к одному, используя этот прослушивающий порт. Другие клиенты могут одновременно подключаться к тому же прослушивающему порту; это работает, поскольку TCP-соединение идентифицируется кортежем, состоящим из локального адреса, локального порта, удаленного адреса и удаленного порта. [1] Известные порты определяются соглашением, контролируемым IANA ( Internet Assigned Numbers Authority ). Во многих операционных системах приложениям требуются особые привилегии для привязки к этим портам, поскольку они часто считаются критически важными для работы IP-сетей. И наоборот, клиентская часть соединения обычно использует высокий номер порта, выделенный для краткосрочного использования, поэтому называется эфемерным портом .

Общие номера портов

IANA отвечает за глобальную координацию корневого DNS-сервера, IP-адресации и других ресурсов протокола. Это включает в себя регистрацию часто используемых номеров портов TCP и UDP для известных интернет-сервисов.

Номера портов делятся на три диапазона: известные порты , зарегистрированные порты и динамические или частные порты .

Известные порты (также известные как системные порты ) — это те, которые пронумерованы от 0 до 1023. Требования к новым назначениям в этом диапазоне более строгие, чем для других регистраций. [2]

Зарегистрированы порты с 1024 по 49151. IANA ведет официальный список известных и зарегистрированных диапазонов. [3]

Динамическими или частными портами являются порты от 49152 до 65535. Одним из распространенных вариантов использования этого диапазона являются эфемерные порты .

Поведение сети

Протоколы транспортного уровня , такие как протокол управления передачей (TCP) и протокол пользовательских датаграмм (UDP), передают данные с помощью протокольных единиц данных (PDU). Для TCP PDU является сегментом , а для UDP — датаграммой . Оба протокола используют поле заголовка для указания номеров портов источника и назначения. Номера портов кодируются в заголовке пакета транспортного протокола , и их можно легко интерпретировать не только отправляющим и принимающим хостами, но и другими компонентами сетевой инфраструктуры. В частности, межсетевые экраны обычно настраиваются на различение пакетов на основе номеров портов источника или назначения. Переадресация портов является примером этого применения.

Сканирование портов

Практика попыток последовательного подключения к диапазону портов на одном хосте обычно известна как сканирование портов . Обычно это связано либо с попытками взлома со злым умыслом , либо с поиском администраторами сети возможных уязвимостей для предотвращения таких атак. Попытки подключения к порту часто отслеживаются и регистрируются хостами. Методика port knocking использует серию подключений к порту (knocks) с клиентского компьютера для включения подключения к серверу.

Примеры

Примером использования портов является доставка электронной почты . Серверу, используемому для отправки и получения электронной почты, обычно требуются две службы. Первая служба используется для передачи электронной почты на другие серверы и с них. Это достигается с помощью простого протокола передачи электронной почты (SMTP). Стандартное приложение службы SMTP прослушивает порт TCP 25 на предмет входящих запросов. Вторая служба обычно представляет собой либо почтовый протокол (POP), либо протокол доступа к сообщениям в Интернете (IMAP), который используется клиентскими приложениями электронной почты на персональных компьютерах пользователей для получения сообщений электронной почты с сервера. Служба POP прослушивает порт TCP с номером 110. Обе службы могут работать на одном и том же хост-компьютере, и в этом случае номер порта различает службу, запрошенную удаленным компьютером, будь то компьютер пользователя или другой почтовый сервер.

В то время как номер порта прослушивания сервера четко определен (IANA называет их известными портами), номер порта клиента часто выбирается из динамического диапазона портов (см. ниже). В некоторых приложениях клиенты и сервер используют определенные номера портов, назначенные IANA. Хорошим примером этого является DHCP , в котором клиент всегда использует UDP-порт 68, а сервер всегда использует UDP-порт 67.

Использовать в URL-адресах

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

История

Концепция номеров портов была создана ранними разработчиками ARPANET в неформальном сотрудничестве авторов программного обеспечения и системных администраторов. Термин номер порта еще не использовался. Ему предшествовало использование термина номер сокета на ранних этапах разработки сети. Номер сокета для удаленного хоста представлял собой 40-битное число. [4] Первые 32 бита были похожи на сегодняшний адрес IPv4, но в то время наиболее значимые 8 бит были номером хоста. Наименее значимая часть номера сокета (биты с 33 по 40) представляла собой сущность, называемую Another Eightbit Number , сокращенно AEN. [5] Сегодня сетевой сокет относится к связанной, но отличной концепции, а именно к внутреннему адресу конечной точки, используемому только внутри узла.

26 марта 1972 года Винт Серф и Джон Постел призвали к документированию текущих на тот момент случаев использования и созданию каталога номеров сокетов в RFC 322. Администраторов сетей попросили представить записку или сделать телефонный звонок, «описывающий функцию и номера сокетов программ сетевых служб на каждом ХОСТЕ». [6] Этот каталог был впоследствии опубликован как RFC 433 в декабре 1972 года и включал список хостов и их номеров портов, а также соответствующую функцию, используемую на каждом хосте в сети. Эта первая функция реестра служила в первую очередь для документирования использования и указывала на то, что использование номеров портов конфликтует между некоторыми хостами для «полезных общественных услуг». [5] Документ обещал разрешение конфликтов на основе стандарта, который Постел опубликовал в мае 1972 года в RFC 349, в котором он впервые предложил официальное назначение номеров портов сетевым службам и предложил специальную административную функцию, которую он назвал царем , для ведения реестра. [7] 256 значений AEN были разделены на следующие диапазоны:

Служба Telnet получила первое официальное назначение значения 1. В деталях первый набор назначений был следующим: [7]

В ранней ARPANET AEN также назывался именем сокета [8] и использовался с протоколом Initial Connection Protocol (ICP), компонентом протокола Network Control Protocol (NCP). [9] [10] NCP был предшественником современных интернет-протоколов. Сегодня терминологическое имя службы все еще тесно связано с номерами портов, причем первые представляют собой текстовые строки, используемые в некоторых сетевых функциях для представления числового номера порта.

Ссылки

  1. ^ Постел, Джон. Протокол управления транспортом. doi : 10.17487/RFC0793 . RFC 793. Получено 1 января 2023 г.
  2. ^ Мишель Коттон; Ларс Эггерт; и др. (август 2011 г.). Процедуры Управления по распределению адресов в Интернете (IANA) по управлению реестром имен служб и номеров портов транспортных протоколов. IETF . doi : 10.17487/RFC6335 . BCP 165. RFC 6335.
  3. ^ "Номера портов". Администрация адресного пространства Интернет (IANA).
  4. ^ Крокер, С. (16 марта 1970 г.). Протокольные заметки. doi : 10.17487/RFC0036 . RFC 36.
  5. ^ ab Postel, J.; Neigus, N. (22 декабря 1972 г.). Список номеров сокетов. doi : 10.17487/RFC0433 . RFC 433.
  6. Серф, В.; Постел, Дж. (26 марта 1972 г.). Хорошо известные номера сокетов. doi : 10.17487/RFC0322 . RFC 322.
  7. ^ ab Postel, J. (30 мая 1972 г.). Предлагаемые стандартные номера сокетов. doi : 10.17487/RFC0349 . RFC 349.
  8. ^ Шошани, А.; Харслем, Э. (14 июля 1971 г.). Протокол начального соединения — пересмотр. doi : 10.17487/RFC0197 . RFC 197.
  9. ^ NIC 7104, Справочник по протоколу ARPANET
  10. ^ Постел, Джон; Фейнлер, Э. (1978). Справочник по протоколу ARPANET . Менло-Парк, Калифорния: Сетевой информационный центр.