[gull] Les requêtes DNS

Daniel Cordey dc at mjt.ch
Fri Sep 10 14:48:01 CEST 2004


On Friday 10 September 2004 14:00, Julien Escario wrote:

> .. si le serveur envoie des requêtes depuis le port 53, cela signifie
> qu'il tourne forcement en root non ?

Uniquement pour faire le "bind". Apres, il a le "socket" a disposition pour le 
process. Les droits d'acces ne sont verifier que pour les "system calls" qui 
y sont confrontes. Soit, en grande majorite, des commandes du style open(). 
Les fonctions read(), write(), close(), select() n'en ont pas besoin 
puisqu'elle manipulent un "file descriptor" pour lequel les droits d'acces 
ont deja ete verifies. Ce qui fait que, dans le cas de "named", le "bind" est 
fait en "root", puis le UID du process est change.

> Pomment un serveur peut-il utiliser le même port pour envoyer et recevoir
> des requêtes ?

Un socket, comme un fichier, permet d'ecrire et de lire.

> cela signifie qu'il ne peut faire une requête et en 
> recevoir une en même temps ?

Pas "vraiment" en meme temps... quoique... Par defaut, named essaie de 
determiner le nombre de CPUS (y compris les dual-core) afin de determiner le 
niveau de "threading" qu'il peut se permettre. Dans ce cas, et puisque 
select() est "tread-safe", il est parfaitement possible d'envoyer une requete 
et d'en recevoir une en meme temps. Ceci n'est donc pas valable sur un 
machine n'ayant qu'un seul CPU (quoique... mais entrer dans les details nous 
ferait trop deriver).

> Une requête DNS implique un temps de timeout, 

UDP...

> si le côté client tombe sur un temps de réponse long, le côté serveur ne
> plus répondre pendant quelqeus secondes ??? ca me parait gênant ...
         
Non, voir l'explication ci-dessus.

> Cela, je veux bien admettre qu'il puisse ouvrir un port privilégié en
> root, switcher en user et l'utiliser. Donc pourquoi pour envoyer aussi des
> requêtes ?
 e depuis un AUTRE port (non
> privilégié) ?

Oui, un seul process en mode 'root' s'occupe d'obtenir le socket, puis 
celui-ci "fork" N process (dependant de son niveau de threading) qui heritent 
du socket; mais apres avoir  change son UID.

Daniel




More information about the gull mailing list