Порт (компьютерная сеть)
В компьютерных сетях порт . или номер порта — это номер, назначенный для уникальной идентификации конечной точки соединения и для направления данных в конкретную службу На уровне программного обеспечения в операционной системе порт представляет собой логическую конструкцию, которая идентифицирует конкретный процесс или тип сетевой службы . Порт на программном уровне идентифицируется для каждого транспортного протокола и комбинации адресов по присвоенному ему номеру порта. Наиболее распространенными транспортными протоколами, использующими номера портов, являются протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP); эти номера портов представляют собой 16-битные числа без знака .
Номер порта всегда связан с сетевым адресом хоста , , например IP-адресом и типом транспортного протокола, используемого для связи. Он завершает адрес назначения или происхождения сообщения. Определенные номера портов зарезервированы для идентификации конкретных служб, чтобы приходящий пакет можно было легко перенаправить работающему приложению. Для этой цели номера портов ниже 1024 идентифицируют исторически наиболее часто используемые службы и называются общеизвестными номерами портов . Порты с более высокими номерами доступны для общего использования приложениями и известны как эфемерные порты .
Порты предоставляют услугу мультиплексирования для нескольких служб или нескольких сеансов связи по одному сетевому адресу. В модели клиент-серверной архитектуры приложения для одной и той же услуги может быть инициировано несколько одновременных сеансов связи.
Номер порта
[ редактировать ]Для TCP и UDP номер порта представляет собой 16-битное целое число без знака и находится в диапазоне от 0 до 65535. Для TCP номер порта 0 зарезервирован и не может использоваться, а для UDP исходный порт является необязательным и имеет нулевое значение. значит нет порта . Процесс , связывает свои входные или выходные каналы через интернет-сокет , который является типом файлового дескриптора , связанного с транспортным протоколом , сетевым адресом например IP-адресом , и номером порта. Это известно как привязка . Сокет используется процессом для отправки и получения данных через сеть. Сетевое программное обеспечение операционной системы имеет задачу передавать исходящие данные со всех портов приложений в сеть и пересылать поступающие сетевые пакеты процессам, сопоставляя IP-адрес пакета и номер порта с сокетом. Для TCP только один процесс может быть привязан к определенному IP-адресу и комбинации портов. Распространенные сбои приложений, иногда называемые конфликтами портов , возникают, когда несколько программ пытаются использовать один и тот же номер порта на одном IP-адресе с одним и тем же протоколом.
Приложения, реализующие общие службы, часто используют специально зарезервированные общеизвестные номера портов для приема запросов на обслуживание от клиентов. Этот процесс известен как прослушивание и включает в себя получение запроса на известный порт, потенциально устанавливающее индивидуальный диалог сервер-клиент с использованием этого порта прослушивания. Другие клиенты могут одновременно подключаться к тому же порту прослушивания; это работает, поскольку TCP-соединение идентифицируется кортежем, состоящим из локального адреса, локального порта, удаленного адреса и удаленного порта. [1] Общеизвестные порты определяются соглашением, контролируемым Управлением по присвоению номеров в Интернете (IANA). Во многих операционных системах для привязки приложений к этим портам требуются специальные привилегии, поскольку они часто считаются критически важными для работы IP-сетей. И наоборот, клиентская часть соединения обычно использует порт с большим номером, выделенный для краткосрочного использования, поэтому он называется эфемерным портом .
Общие номера портов
[ редактировать ]IANA отвечает за глобальную координацию корня DNS, IP-адресации и других ресурсов протокола. Сюда входит регистрация часто используемых номеров портов TCP и UDP для известных интернет-сервисов.
Номера портов разделены на три диапазона: общеизвестные порты , зарегистрированные порты и динамические или частные порты .
Хорошо известные порты (также известные как системные порты ) имеют номера от 0 до 1023. Требования к новым назначениям в этом диапазоне более строгие, чем к другим регистрациям. [2]
Число | Назначение |
---|---|
20 | Протокол передачи файлов (FTP) Передача данных |
21 | протоколом передачи файлов Командное управление (FTP) |
22 | Secure Shell (SSH) Безопасный вход |
23 | систему Telnet Служба удаленного входа в , незашифрованные текстовые сообщения |
25 | Доставка электронной почты по простому протоколу передачи почты (SMTP) |
53 | Служба системы доменных имен (DNS) |
67, 68 | Протокол динамической конфигурации хоста (DHCP) |
80 | Протокол передачи гипертекста (HTTP), используемый во Всемирной паутине. |
110 | Протокол почтового отделения (POP3) |
119 | Протокол передачи сетевых новостей (NNTP) |
123 | Протокол сетевого времени (NTP) |
143 | Протокол доступа к сообщениям Интернета (IMAP) Управление цифровой почтой |
161 | Простой протокол управления сетью (SNMP) |
194 | Интернет-релейный чат (IRC) |
443 | HTTP Secure (HTTPS) HTTP через TLS/SSL |
546, 547 | DHCPv6 IPv6-версия DHCP |
Зарегистрированы порты с 1024 по 49151. IANA ведет официальный список известных и зарегистрированных диапазонов. [3]
Динамические или частные порты — это номера от 49152 до 65535. Этот диапазон обычно используется для временных портов .
Поведение сети
[ редактировать ]Протоколы транспортного уровня , такие как протокол управления передачей (TCP) и протокол пользовательских дейтаграмм (UDP), передают данные с использованием блоков данных протокола (PDU). Для TCP PDU — это сегмент , а для UDP — дейтаграмма . Оба протокола используют поле заголовка для указания номеров портов источника и назначения. Номера портов закодированы в заголовке пакета транспортного протокола и могут быть легко интерпретированы не только отправляющими и принимающими узлами, но и другими компонентами сетевой инфраструктуры. В частности, брандмауэры обычно настраиваются так, чтобы различать пакеты на основе номеров их портов источника и назначения. Переадресация портов является примером применения этого.
Сканирование портов
[ редактировать ]Практика попыток последовательного подключения к ряду портов на одном хосте широко известна как сканирование портов . Обычно это связано либо со злонамеренными попытками взлома , либо с поиском сетевыми администраторами возможных уязвимостей, которые помогут предотвратить такие атаки. Попытки подключения к порту часто отслеживаются и протоколируются хостами. Метод сбивания портов использует серию подключений к порту (сбивок) с клиентского компьютера для включения соединения с сервером.
Примеры
[ редактировать ]Примером использования портов является доставка электронной почты . Серверу, используемому для отправки и получения электронной почты, обычно требуются две службы. Первая служба используется для транспортировки электронной почты на другие серверы и обратно. Это достигается с помощью простого протокола передачи почты (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) представляла собой объект под названием «Другое восьмибитное число» , сокращенно AEN. [5] Сегодня сетевой сокет относится к родственному, но отдельному понятию, а именно к внутреннему адресу конечной точки, используемому только внутри узла.
26 марта 1972 года Винт Серф и Джон Постел призвали задокументировать текущие варианты использования и создать каталог номеров сокетов в RFC 322. Сетевых администраторов попросили отправить записку или позвонить по телефону, «описывая функции и номера сокетов». программ сетевых служб на каждом ХОСТЕ». [6] Этот каталог был впоследствии опубликован как RFC 433 в декабре 1972 года и включал список хостов, номера их портов и соответствующие функции, используемые на каждом хосте в сети. Эта первая функция реестра служила в первую очередь документацией использования и указывала на то, что использование номера порта конфликтовало между некоторыми хостами для «полезных общедоступных служб». [5] Документ обещал разрешение конфликтов на основе стандарта, который Постел опубликовал в мае 1972 года в RFC 349, в котором он впервые предложил официальное присвоение номеров портов сетевым службам и предложил специальную административную функцию, которую он назвал царем , для вести реестр. [7] 256 значений AEN были разделены на следующие диапазоны:
Диапазон номеров портов | Назначение |
---|---|
от 0 до 63 | Стандартные функции для всей сети |
с 64 по 127 | Функции, специфичные для хоста |
со 128 по 239 | Зарезервировано для будущего использования |
с 240 по 255 | Любая экспериментальная функция |
Служба Telnet получила первое официальное присвоение значения 1.Подробно, первый набор заданий был следующим: [7]
Номер порта | Назначение |
---|---|
1 | Телнет |
3 | Передача файлов |
5 | Удаленный ввод вакансии |
7 | Эхо |
9 | Отказаться |
В ранней версии ARPANET AEN также назывался именем сокета . [8] и использовался с протоколом начального подключения (ICP), компонентом протокола управления сетью (NCP). [9] [10] NCP был предшественником современных интернет-протоколов. Сегодня имя терминологической службы по-прежнему тесно связано с номерами портов, причем первые представляют собой текстовые строки, используемые в некоторых сетевых функциях для представления числового номера порта.
Ссылки
[ редактировать ]- ^ Постел, Джон. Протокол управления транспортировкой . дои : 10.17487/RFC0793 . РФК 793 . Проверено 1 января 2023 г.
- ^ Мишель Коттон; Ларс Эггерт; и др. (август 2011 г.). Процедуры Управления по присвоению номеров Интернета (IANA) для управления реестром названий служб и номеров портов транспортных протоколов . IETF . дои : 10.17487/RFC6335 . BCP 165. RFC 6335 .
- ^ «Номера портов» . Управление по присвоению номеров в Интернете (IANA).
- ^ Крокер, С. (16 марта 1970 г.). Протокольные примечания . дои : 10.17487/RFC0036 . РФК 36 .
- ^ Jump up to: а б Постел, Дж.; Нейгус, Н. (22 декабря 1972 г.). Список номеров разъемов . дои : 10.17487/RFC0433 . RFC 433 .
- ^ Серф, В.; Постель, Дж. (26 марта 1972 г.). Известные номера разъемов . дои : 10.17487/RFC0322 . РФК 322 .
- ^ Jump up to: а б Постель, Дж. (30 мая 1972 г.). Предлагаемые стандартные номера разъемов . дои : 10.17487/RFC0349 . РФК 349 .
- ^ Шошани, А.; Харслем, Э. (14 июля 1971 г.). Протокол первоначального соединения — обзор . дои : 10.17487/RFC0197 . РФК 197 .
- ^ NIC 7104, Справочник по протоколу ARPANET
- ^ Постел, Джон; Фейнлер, Э. (1978). Справочник по протоколам ARPANET . Менло-Парк, Калифорния: Сетевой информационный центр.