[gull] Les requêtes DNS

Marc SCHAEFER schaefer at alphanet.ch
Sun Sep 12 02:11:02 CEST 2004


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

Voir la sortie de netstat.

En pratique, lorsqu'une connexion est accept(2)ée, UNIX crée un nouveau
socket décrivant la connexion (le socket de base, celui utilisé pour
bind(2), listen(2) et accept(2) n'est pas utilisé directement).

A part qu'UDP n'est pas `connecté', il est toujours possible
d'identifier un datagramme avec les 4 valeurs mentionnées (techniquement
deux sont dans l'entête IP, 2 dans l'entête UDP respectivement TCP).

> Mais la réponse se situe certainement autour des numéros de séquence TCP...

Les numéros de séquence n'entrent en vigueur que pour ce qui est de
déterminer où l'on se trouve dans un flot de données TCP.

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.




More information about the gull mailing list