ОПИСАНИЕ
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