В компьютерных сетей , порт представляет собой конечную точку связи. На программном уровне в операционной системе порт - это логическая конструкция, которая идентифицирует конкретный процесс или тип сетевой службы . Порт идентифицируется для каждого транспортного протокола и комбинации адресов 16-битным числом без знака , известным как номер порта . Наиболее распространенными транспортными протоколами, использующими номера портов, являются протокол управления передачей (TCP) и протокол дейтаграмм пользователя (UDP).
Номер порта всегда связан с IP-адресом хоста и типом транспортного протокола, используемого для связи. Он дополняет сетевой адрес получателя или отправителя сообщения. Определенные номера портов зарезервированы для идентификации определенных служб, чтобы приходящий пакет можно было легко переадресовать в работающее приложение. Для этой цели номера портов ниже 1024 определяют исторически наиболее часто используемые службы и называются хорошо известными номерами портов . Порты с более высокими номерами доступны для общего использования приложениями и известны как временные порты .
Порты предоставляют услугу мультиплексирования для нескольких услуг или нескольких сеансов связи по одному сетевому адресу. В клиент-серверной модели архитектуры приложения несколько одновременных сеансов связи могут быть инициированы для одной и той же службы.
Номер порта
Номер порта представляет собой 16-битовое целое число без знака, таким образом, в диапазоне от 0 до 65535. Для TCP номер порта 0 зарезервирован и не может использоваться, в то время как для UDP исходный порт является необязательным, а нулевое значение означает отсутствие порта. Процесс связывает его входные или выходные каналы через Интернет гнездо , который представляет собой тип файловый дескриптор , связанный с транспортным протоколом , в IP - адрес и номер порта. Это называется привязкой . Сокет используется процессом для отправки и получения данных по сети. Сетевое программное обеспечение операционной системы имеет задачу передачи исходящих данных со всех портов приложений в сеть и пересылки поступающих сетевых пакетов процессам путем сопоставления IP-адреса пакета и номера порта с сокетом. Для TCP только один процесс может связываться с определенной комбинацией IP-адреса и порта. Общие сбои приложений, иногда называемые конфликтами портов , возникают, когда несколько программ пытаются использовать один и тот же номер порта на одном IP-адресе с одним и тем же протоколом.
Приложения, реализующие общие службы, часто используют специально зарезервированные хорошо известные номера портов для приема запросов на обслуживание от клиентов. Этот процесс известен как прослушивание и включает в себя получение запроса на хорошо известном порте, потенциально устанавливающем индивидуальный диалог сервер-клиент с использованием этого прослушивающего порта. Другие клиенты могут одновременно подключаться к тому же порту прослушивания; это работает, потому что TCP-соединение идентифицируется кортежем, состоящим из локального адреса, локального порта, удаленного адреса и удаленного порта. [1] Общеизвестные порты определены соглашением, контролируемым Управлением по присвоению номеров Интернета (IANA). Во многих операционных системах для привязки приложений к этим портам требуются специальные привилегии, поскольку они часто считаются критически важными для работы IP-сетей. И наоборот, клиентский конец соединения обычно использует высокий номер порта, выделенный для краткосрочного использования, поэтому он называется временным портом .
Общие номера портов
Управление по присвоению номеров в Интернете (IANA) отвечает за глобальную координацию корня DNS, IP-адресации и других ресурсов протокола. Сюда входит регистрация часто используемых номеров портов для известных интернет-служб.
Номера портов делятся на три диапазона: известные порты , зарегистрированные порты и динамические или частные порты .
Хорошо известные порты (также известные как системные порты ) пронумерованы от 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 |
Зарегистрированы порты с 1024 по 49151. IANA ведет официальный список хорошо известных и зарегистрированных диапазонов. [3]
Динамические или частные порты - это порты с 49152 по 65535. Обычно этот диапазон используется для эфемерных портов .
Сетевое поведение
Transport-layer protocols, such as the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP), transfer data using protocol data units (PDUs). For TCP, the PDU is a segment, and for UDP it is a datagram. Both protocols use a header field for indicating the source and destination port numbers. The port numbers are encoded in the transport protocol packet header, and they can be readily interpreted not only by the sending and receiving hosts but also by other components of the networking infrastructure. In particular, firewalls are commonly configured to differentiate between packets based on their source or destination port numbers. Port forwarding is an example application of this.
Сканирование портов
The practice of attempting to connect to a range of ports in sequence on a single host is commonly known as port scanning. This is usually associated either with malicious cracking attempts or with network administrators looking for possible vulnerabilities to help prevent such attacks. Port connection attempts are frequently monitored and logged by hosts. The technique of port knocking uses a series of port connections (knocks) from a client computer to enable a server connection.
Примеры
An example for the use of ports is the Internet mail system. A server used for sending and receiving email generally needs two services. The first service is used to transport email to and from other servers. This is accomplished with the Simple Mail Transfer Protocol (SMTP). The SMTP service application usually listens on TCP port 25 for incoming requests. The second service is usually either the Post Office Protocol (POP) or the Internet Message Access Protocol (IMAP) which is used by e-mail client applications on users' personal computers to fetch email messages from the server. The POP service listens on TCP port number 110. Both services may be running on the same host computer, in which case the port number distinguishes the service that was requested by a remote computer, be it a user's computer or another mail server.
While the listening port number of a server is well defined (IANA calls these the well-known ports), the client's port number is often chosen from the dynamic port range (see below). In some applications, the clients and the server each use specific port numbers assigned by the IANA. A good example of this is DHCP in which the client always uses UDP port 68 and the server always uses UDP port 67.
Использование в URL-адресах
Port numbers are sometimes seen in web or other uniform resource locators (URLs). By default, HTTP uses port 80 and HTTPS uses port 443, but a URL like http://www.example.com:8080/path/ specifies that the web browser connects instead to port 8080 of the HTTP server.
История
The concept of port numbers was established by the early developers of the ARPANET in informal co-operation of software authors and system administrators.
The term port number was not yet used at this time. It was preceded by the use of the term socket number in the early development stages of the network. A socket number for a remote host was a 40-bit quantity.[4] The first 32 bits were similar to today's IPv4 address, but at the time the most-significant 8 bits were the host number. The least-significant portion of the socket number (bits 33 through 40) was an entity called Another Eightbit Number, abbreviated AEN.[5] Today, network socket refers to a related but distinct concept, namely the internal address of an endpoint (used within the node only).
On March 26, 1972, Vint Cerf and Jon Postel called for documenting the then-current usages and establishing a socket number catalog in RFC 322. Network administrators were asked to submit a note or place a phone call, "describing the function and socket numbers of network service programs at each HOST".[6]
This catalog was subsequently published as RFC 433 in December 1972 and included a list of hosts and their port numbers and the corresponding function used at each host in the network. This first registry function served primarily as documentation of usage and indicated that port number usage was conflicting between some hosts for "useful public services".[5]
The document promised a resolution of the conflicts based on a standard that Postel had published in May 1972 in RFC 349, in which he first proposed official assignments of port numbers to network services and suggested a dedicated administrative function, which he called a czar, to maintain a registry.[7]
The 256 values of the AEN were divided into the following ranges:
Port number range | Assignment |
---|---|
0 through 63 | network-wide standard functions |
64 through 127 | host-specific functions |
128 through 239 | reserved for future use |
240 through 255 | any experimental function |
The Telnet service received the first official assignment of the value 1. In detail, the first set of assignments was:[7]
Port number | Assignment |
---|---|
1 | Telnet |
3 | File transfer |
5 | Remote job entry |
7 | Echo |
9 | Discard |
In the early ARPANET, the AEN was also called a socket name,[8] and was used with the Initial Connection Protocol (ICP), a component of the Network Control Program (NCP).[9][10] NCP was the forerunner of the modern Internet protocols. Today the terminology service name is still closely connected with port numbers, the former being text strings used in some network functions to represent a numerical port number.
Рекомендации
- ^ Postel, John. "RFC 793". Retrieved 29 June 2012.
- ^ Michelle Cotton; Lars Eggert; et al. (August 2011). Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry. IETF. doi:10.17487/RFC6335. BCP 165. RFC 6335.
- ^ "Port Numbers". Internet Assigned Numbers Authority (IANA).
- ^ RFC 36, Protocol Notes, S. Crocker (16 March 1970)
- ^ a b RFC 433, Socket number list, J. Postel, N. Neigus (22 December 1972)
- ^ RFC 322, Well Known Socket Numbers, V. Cerf, J. Postel (26 March 1972)
- ^ a b RFC 349, Proposed Standard Socket Numbers J. Postel (30 May 1972)
- ^ RFC 197, Initial Connection Protocol--Reviewed, A. Shoshani, E. Harslem (14 July 1971)
- ^ NIC 7104, ARPANET Protocol Handbook
- ^ Postel, Jon; Feinler, E. (1978). ARPANET Protocol Handbook. Menlo Park, CA: Network Information Center.