inetd (souvent appelé « super-serveur Internet ») est en réalité un serveur de serveurs, employé pour invoquer à la demande les serveurs rarement employés qui ne fonctionnent donc pas en permanence.
/etc/inetd.conf donne la liste de ces serveurs et de leurs ports habituels, qu'inetd écoute tous ; dès qu'il détecte une connexion sur l'un d'entre eux, il exécute le programme du serveur correspondant.
/etc/inetd.conf décrit un service par sept champs (séparés par des blancs):
/etc/services).
stream pour une connexion TCP, dgram pour des datagrammes UDP .
tcp ou udp.
wait ou nowait, pour signifier à inetd qu'il doit, ou non, attendre la fin du processus lancé avant d'accepter une autre connexion. Pour les connexions TCP, facilement multiplexables, on pourra généralement utiliser nowait. Pour les programmes répondant sur UDP, il ne faut retenir nowait que si le serveur est capable de gérer plusieurs connexions en parallèle. On pourra suffixer ce champ d'un point suivi du nombre maximum de connexions autorisées par minute (la limite par défaut étant de 256).
argv[0] en C).
Exemple 9.1. Extrait de /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 est souvent employé dans le fichier /etc/inetd.conf. Il permet de restreindre les connexions entrantes en appliquant des règles de contrôle, documentées dans la page de manuel hosts_access(5) et qui se configurent dans les fichiers /etc/hosts.allow et /etc/hosts.deny. Une fois qu'il a été déterminé que la connexion est autorisée, tcpd exécute à son tour le serveur réellement demandé (comme in.fingerd dans notre exemple).