Scroll to navigation

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