/etc/inetd.conf перечисляются эти серверы и обычно используемые ими порты. Команда inetd слушает их все; когда она обнаруживает соединение с любым таким портом, она запускает соответствующую серверную программу.
/etc/inetd.conf описывает сервер в сми полях (разделённых пробелами):
/etc/services).
stream для TCP-соединения, dgram для UDP-датаграмм.
tcp или udp.
wait или nowait, сообщающих inetd, следует ли ждать завершения запущенного процесса прежде чем принимать новое соединение. Для TCP-соединений, которые легко мультиплексируются, обычно можно использовать nowait. Для программ, отвечающих через UDP, следует использовать nowait только если сервер способен управляться с несколькими соединениями параллельно. В конце этой опции можно добавить точку, и после неё указать максимально разрешённое число сединений в минуту (по умолчанию используется ограничение в 256 соединений).
argv[0] в Си).
Пример 9.1. Выдержка из /etc/inetd.conf
talk dgram udp wait nobody.tty /usr/sbin/in.talkd in.talkd finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd ident stream tcp nowait nobody /usr/sbin/identd identd -i
tcpd часто используется в файле /etc/inetd.conf. Она позволяет ограничить входящие сообщения, применяя правила контроля доступа, описанные на странице руководства hosts_access(5) и настраиваемые в файлах /etc/hosts.allow и /etc/hosts.deny. Когда подтверждается, что соединение разрешено, tcpd запускает настоящий сервер (in.fingerd в нашем примере). Для tcpd ничего не стоит определить, какой сервис следует запустить, по имени, под которым он был вызван (которое является первым аргументом, argv[0]). Поэтому список аргументов должен начинаться не с tcpd, а с программы, для которой он служит обёрткой.