table of contents
SERVICES(5) | Руководство программиста Linux | SERVICES(5) |
ИМЯ¶
services - список служб сети интернет
ОПИСАНИЕ¶
services — это простой файл в кодировке ASCII, обеспечивающий распределение соответствующих текстовых имён между службами интернет, связанных с ними назначений портов и типов протоколов. Любая сетевая программа должна сначала обратиться к этому файлу для получения номера порта (и протокола) для своей службы. Функции библиотеки C getservent(3), getservbyname(3), getservbyport(3), setservent(3) и endservent(3) выполняют запросы программ к этому файлу.
Номера портов назначаются IANA (Internet Assigned Numbers Authority), и их текущей политикой является указание TCP- и UDP-протоколов при назначении номера порта. Следовательно, большинство элементов будет иметь двойные значения даже для служб, которые используют только TCP.
Номера портов меньше 1024-х (так называемые "привилегированные" порты) могут быть назначены только суперпользователем (смотрите bind(2), tcp(7) и udp(7)). Это делается для того, чтобы клиенты, подключающиеся к привилегированным портам, могли не сомневаться в том, что служба, работающая на порту, обеспечивает стандартную реализацию, и не является "подставной" службой какого-нибудь пользователя в машине. Известные номера портов, определённые IANA, обычно располагаются только в пространстве суперпользователя.
Присутствие элемента службы в файле services не обязательно означает, что эта служба сейчас запущена на машине. Смотрите inetd.conf(5) для знакомства с настройкой служб интернета. Заметим, что не все сетевые службы запускаются с помощью inetd(8), и поэтому могут отсутствовать в inetd.conf(5). В частности, серверы новостей (NNTP) и почтовые серверы (SMTP) часто запускаются с помощью системных загрузочных сценариев.
Расположение файла services определяется _PATH_SERVICES в <netdb.h>. Обычно значением является /etc/services.
Каждая строка определяет одну службу и имеет следующий формат:
- имя-службы порт/протокол [псевдонимы ...]
- где:
- имя-службы
- Известное имя службы, по которому она в дальнейшем будет определяться. Регистр символов имеет значение. Часто клиентские программы называются по имени-службы.
- порт
- Номер порта (в десятичном формате), используемый данной службой.
- протокол
- Тип протокола, который будет использоваться. Это поле должно совпадать с элементом в файле protocols(5). Обычно, значением является tcp и udp.
- псевдонимы
- Дополнительный список имён этой службы, разделённых символами табуляции или пробелами. Снова заметим, что имеет значение регистр символов.
Для разделения полей могут использоваться пробелы или символы табуляции.
Комментарии начинаются с символа решетки (#) и продолжаются до конца строки. Пустые строки пропускаются.
Имя службы должно начинаться с первого столбца файла, так как начальные пробелы не удаляются. В имени службы могут использоваться любые печатные символы (исключая пробелы и символы табуляции). Однако, лучше использовать стандартный набор символов для уменьшения проблем с совместимостью. Например, a-z, 0-9 и дефис (-) наиболее подходящий набор.
В файле не должно быть строк в другом формате. (В данный момент они просто пропускаются программами getservent(3), getservbyname(3) и getservbyport(3). Однако, на это не стоит полагаться.)
Данный файл может распространяться по сети с помощью сетевых служб имён, таких как Yellow Pages/NIS или BIND/Hesiod.
Пример файла services:
netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp # message send protocol chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp 21/tcp # 22 - служба не назначена telnet 23/tcp
ФАЙЛЫ¶
- /etc/services
- список сетевых служб интернет
- <netdb.h>
- Определение _PATH_SERVICES
СМОТРИТЕ ТАКЖЕ¶
listen(2), endservent(3), getservbyname(3), getservbyport(3), getservent(3), setservent(3), inetd.conf(5), protocols(5), inetd(8)
RFC с назначенными номерами, последний RFC 1700, (т.н. STD0002)
2010-05-22 | Linux |