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)