[gull] Les requêtes DNS

Arnaud Burlet arnaud_oss at bluewin.ch
Sun Sep 12 11:19:02 CEST 2004


On Sunday 12 September 2004 01.32, Marc SCHAEFER wrote:
> On Sat, Sep 11, 2004 at 06:22:30PM +0200, Arnaud Burlet wrote:
> > Est-ce possible d'avoir plusieurs connections TCP sur le même port
> > simultanément ? Et donc, comment les paquets d'une connexion sont
> > distingués des paquets d'autres connections arrivant (ou partant) sur le
> > même port TCP ?
>
> Une connexion TCP est identifiée par:
>
>    (addresse source, adresse destination; port source, port destination)
>
> Dès qu'une valeur diffère, il s'agit d'une autre connexion.
>
> Donc, si on a deux clients A et B et un serveur S on peut avoir:
>
>    1.2.3.4:1024 <----->> 4.3.2.1:53
>    1.2.3.5:1024 <----->> 4.3.2.1:53
>
> les deux connexions seront parfaitement identifiées sur S vu que les
> adresses IP (et les numéros de ports) sont différents.
>
> Ou encore (client BIND9 forcé sur le port 53)
>    1.2.3.4:53 <----->> 4.3.2.1:53
>    1.2.3.5:53 <----->> 4.3.2.1:53
>
>
> On peut même avoir:
>
>    1.2.3.4:1024 <----->> 4.3.2.1:53
>    1.2.3.4:1025 <----->> 4.3.2.1:53

et dans le cas d'un serveur dns qui fait (admettons) deux requêtes simultanées 
(depuis 2 threads ou process différents) vers le même serveur dns, on a le 
cas :
    1.2.3.4:53 <----->> 4.3.2.1:53 (pour une premiere requête)
    1.2.3.4:53 <----->> 4.3.2.1:53 (pour une seconde requête)
est-ce possible ?

Je me suis dit que j'allais essayer d'y répondre, et j'ai fait un programme en 
C, qui créé :
- un serveur sur un port TCP.
- deux clients qui se connectent à ce serveur avec chacun le même port TCP 
comme source.

Tout fonctionne jusqu'à l'appel connect() du deuxième client qui échoue, errno 
indiquant : "Cannot assign requested address".

Ce n'est pas clair dans ce message d'erreur, mais on peut en déduire qu'une 
connection est bien identifiée par 
    (addresse source, adresse destination; port source, port destination)

Si je reviens à mon exemple en-dessus, un serveur dns a donc un mécanisme qui 
empèche ce type de situation, ou qui les détecte ?

(... programme disponible pour curieux ...)

> Question générale:
>    Est-ce qu'un cours d'introduction à TCP/IP (base, analyse de trames,
>    création de logiciels clients et serveurs en C et Perl) pourrait
>    intéresser ?  Le cours UNIX II (réseau) ne fait que survoler ces
>    thèmes.

Bon, j'aurais du aller revoir mes "papiers" plus tôt, ce sont toute des choses 
que je connais (mais dont les détails ont de temps à autres des problèmes à 
refaire surface). Cependant c'est toujours bon à prendre si c'est online, car 
mes supports sont sur papiers et sans index !


Arnaud



More information about the gull mailing list