FTP...choix des ports après la connexion.

Fermé
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 - 12 mai 2006 à 19:09
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 - 18 mai 2006 à 15:58
Bonjour,

Est ce que quelqu’un peut m'aider à comprendre le fonctionnement d'établissement des canaux de données et de contrôles pendant une communication entre un Client et un Server FTP.

J'ai deux petites questions!

Après qu'un Client réussi une connexion FTP. Le Server initialise la communication sur un autre port que le 21 du contrôle ou pas?

Est ce que le fait de communiquer avec un Client seulement à travers le port 21 posera des problèmes pour d'autres Clients cherchant la connexion?

Ce que je comprend moi c'est qu'une fois la connexion est établie le Server choisi un autre port pour le reste de la communication tout en restant en état d'écoute sur le premier port en attendant d'autres demandes de communication.

Mercie de rectifier mes connaissances.

9 réponses

brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623
13 mai 2006 à 09:52
Salut,
tu as bien compris:
le serveur attend les demandes sur le port 21.
mais ce port 21 est une convention, ça peut etre n'importe quoi d'autre, c'est paramétrable sur la plupart des serveurs dignent de ce nom.
il peut y avoir un grand nombre de connexions car chaque connexion tcp est identifiée par le couple adresse ip client : port , voir netstat.
pour le port data,
3 cas:
soit le client le précise (commande port) et le serveur établit la connexion vers ce port du client.
soit le client demande le mode passif (du serveur) et là le serveur répond en indiquant sur quel port il se met en écoute. le client établira alors la connexion sur ce port.
dans ces 2 cas le port choisi sera au delà des well known ports , donc au dessus de 1024.
soit le client n'indique rien de particulier, alors le port data sera le port commande -1 soit 20 si le port commande est 21.
Ce système de ports dynamiques est en entorse modèle OSI de séparation des couches car l' application gère un peu la couche réseau et pose pas mal de problèmes (cas de la NAT) , mais permet d'avoir plusieurs transferts simultanés entre un même client et un même serveur.
Voire à un seul client d'établir des transferts entre 2 serveurs (un en passif et l'autre en actif).
0
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 4
13 mai 2006 à 12:40
mais ce port 21 est une convention, ça peut etre n'importe quoi d'autre, c'est paramétrable sur la plupart des serveurs dignent de ce nom. 


Est ce que vous pouvez expliquer davantage ce que veut dire une conevntion et peut être n'importe quoi d'autre.
0
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623
13 mai 2006 à 13:02
La convention, c'est ça:
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
c'est IANA qui fixe les règles du jeu dans ce domaine , pour éviter que 2 fournisseurs d'applications se battent pour utiliser le port de l'autre.
MAIS, si tu sais que sur ton serveur un port n'est pas utilisé, rien ne t'empeche de l' utiliser pour ton serveur FTP.
il faudra bien sûr l'indiquer aux clients.
aussi,
il fallait lire :
les serveurs DIGNES de ce nom au lieu de DIGNENT.
pardon pour la grosse faute.
0
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 4
15 mai 2006 à 13:03
Oui oui ça je le comprend très bien,

Pardon, je serais un peu lourd:

J'ai fais des captures de trames et aussi j'ai utilisé netstat ce que je trouve c'est que la communication est établie entre un port source par exemple 1045 et un autre distant qui reste toujours 21(le standard de ftp) même après l'établissement de la connexion! J’ai tendance à trouver un autre que le 21 après l'acceptation de la connexion (c'est le principe des Socket si je ne trompe pas).
Et si le port distant reste toujours 21 pour le client est ce qu'il n'as pas besoin de savoir sur quel vrai port le serveur l'écoute!?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623
15 mai 2006 à 14:55
bah
si ça n'est 21, il faut le lui préciser à la connexion dans l'url:
ftp:// adresse ip ou nom fqdn : port
si on ne met rien pour port , c'est 21 qui est pris.
0
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 4
15 mai 2006 à 23:00
Merci,
Mais malheureusement tu me n'as pas bien compris.

C'est evident que le port distant et 21 mais pour quoi il reste toujours le port du canal de contôle il faut qu'il soit changé après l'acceptation de la connexion. Pour que le serveur puisse écouter d'autre demandes.
0
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623
16 mai 2006 à 09:24
mais non, la connexion commandes reste établie tout le temps de la session ftp.
L'application peut se mettre en écoute sur un autre port sans problème (dans le cas du mode passif).
ça sert à ça justement les ports: à avoir plusieurs connexions simultanées entre 2 machines, le port différentie chaque connexion de l'autre, vu que les adresses ip sont identiques dans chaque connexion.
je répète:
c'est l'ensemble adresse ip + port qui identifie une connexion.
0
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 4
16 mai 2006 à 22:50
Merci beaucoup pour l'aide

Vraiment vraiment je te demande pardon.

Peut être que j'ai un problème de communication, je te jure que je comprend parfaitement cela, je vais me reprendre autrement.

1° Un serveur ftp attend des demandes d'établissement de canaux de contrôle sur le port 21.

2° Le client envoie une demande de connexion dont le port destination sera 21.

3° Le serveur accepte la connexion et choisi un nouveau port "P" pour communiquer avec ce client (pour le canal de contrôle).

Alors le port destination du client pour envoyer des commandes sera "P", puis lorsque la commande nécessitera un envoie de données le serveur initialise un nouveau port pour le canal de données.

Pourquoi le port "P" reste toujours 21 (lorsque je vérifie les datagrammes sortant) alors qu'il est changé dés l'acceptation de la connexion (je parle du canal de contrôle et non pas celui de données qui se change à chaque envoie de données).

J'espère que tu arrives à me comprendre parfaitement.

T'as une large expérience avec le FTP pourrais tu me dire comment extraire le port data de la réponse du serveur sur la commande PASV.
0
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623
17 mai 2006 à 00:48
3° Le serveur accepte la connexion et choisi un nouveau port "P" pour communiquer avec ce client (pour le canal de contrôle).

C'est là que tu te trompes.
Le serveur ne choisit pas de nouveau port pour les commandes, il reste toujours sur le même.
c'est le port datas qui est choisi par le client (en mode normal) et par le serveur en mode passif.
le port pour les commandes est toujours le m^me , heureusement, c'est déjà assez compliqué comme ça ;-)
dans la réponse à pasv, comme dans la commande port,
on trouve 4 nombres en ascii , représentation décimale de l'adresse ip
le port data est écrit ensuite (séparateur=virgule) en ascii aussi indiquant également 2 nombres décimaux représentant le port en base 256 un premier indique le le nb de fois 256 et on ajoute le second.
dans l'exemple ci dessous:
0000   00 13 d4 cf d0 22 00 14 38 19 be d1 08 00 45 00  ....."..8.....E.
0010   00 41 86 51 40 00 80 06 f3 00 c0 a8 00 11 c0 a8  .A.Q@...........
0020   00 03 07 a0 00 15 33 17 6d f1 45 dc f4 ef 50 18  ......3.m.E...P.
0030   ff 27 81 98 00 00 50 4f 52 54 20 31 39 32 2c 31  .'....PORT 192,1
0040   36 38 2c 30 2c 31 37 2c 37 2c 31 36 34 0d 0a     68,0,17,7,164..

on a l'adresse ip : 192,168,0,17
et pour le port on a 7 et 164, donc 7 fois 256 plus 164 soit 1792+164 soit 1956 suivis d'un retour chariot et line feed (0D0A).
0
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 4
17 mai 2006 à 02:43
Merci beaucoup je comprend bien maintenant mais il reste une seule chose.

Le serveur attends les commandes des clients qui ont déjà établit un canal de contrôle avec lui sur le port 21 et au même temps il attend les demandes de connexion des futures clients sur le même port ça ne va pas créer des problèmes?
0
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623
17 mai 2006 à 18:14
non,je t'ai dit déjà 2 fois:
chaque connexion client est identifiée par le couple adress ip + port.
port (source) et adresse ip sont différents pour chaque connexion d'un client.
0
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 4
17 mai 2006 à 19:23
Effectivement c'est ça ce que je comprend moi, mais il y a une contradiction lorsque j'établie plusieurs connexions du même machine et puis je fais des captures de trames après l'établissement du canal contrôle pour toutes ces connexions je trouves que le port destination de toutes ces connexion au même serveur est le port 21.
Il faut qu'il soit différent après l'établissement du canal de contrôle c'est le principe dont tu parles toi même, puis à chaque demande nécessitant l'envoie de données un autre canal est établit.
0
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623 > mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006
17 mai 2006 à 23:32
soit c'est la même connexion tcp , soit la première est fermée et une autre est ouverte ensuite, je ne vois vraiment pas ce qui te bloque.
A mon avis, il ya juste un petit détail que tu n'as pas compris et ça bloque ta compréhension alors que tu as bien saisi la globalité.
le problème est que malgré tes explications acharnées, je n'arrive pas à imaginer ce point bloquant. c'est au niveau du port du canal de comandes ftp, mais zou ?
au passage, je vais en remettre une couche sur le fait qu'il ya un port source et un port destination dans tcp (et udp aussi d'ailleurs) et qu'ils sont rarement identiques (ils peuvent l'etre, mais c'est loin d'etre obligé).
0
mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006 4 > brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024
18 mai 2006 à 06:57
Oui je sais bien que je n'arrive pas à te transmettre le point où je me suis bloqué, vraiment dommage, mais crois moi si j'arriverai à le transmettre tu verra qu'il y a un problème.

Dis moi est ce c'est la bonne adresse e-mail qui figure sur ton profile j'ai besoin de se servir de ton expérience. C'est mieux que de gonfler le forum de la même question sans pouvoir la bien expliquée (j’ai déjà envoyé un message je ne sais pas si tu l’as reçu ou pas).
0
brupala Messages postés 109452 Date d'inscription lundi 16 juillet 2001 Statut Membre Dernière intervention 25 avril 2024 13 623 > mtech Messages postés 34 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 21 mai 2006
18 mai 2006 à 15:58
j'ai reçu,
je te remercie de ta confiance,
mais je ne répondrai pas juste pour faire causette.
et si la réponse intérèsse tout le monde, autant la faire dans le forum.
ça sert à ça.
0