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 - unassigned
    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).