Maison > Article > Opération et maintenance > Mode actif et mode passif FTP - Pourquoi ne puis-je pas me connecter au serveur FTP ?
FTP est différent des services ordinaires. Ce service nécessite que deux ports soient ouverts en même temps. Un port est le canal de commande et l'autre port est le canal de transmission de données. Selon les différents établissements de canaux de transmission de données, il est divisé en mode actif et mode passif. Ici, nous décrivons en détail le flux de travail du mode actif et comment résoudre les problèmes lorsque nous les rencontrons.
Processus en mode actif
Établissement du canal de commande. Le client sélectionnera au hasard un port supérieur à 1024 pour établir une connexion avec le port 21 du serveur. Lorsque la connexion est établie, le client peut utiliser la connexion pour exécuter des commandes sur le service FTP, telles que l'interrogation des noms de fichiers, le téléchargement de fichiers, le téléchargement de fichiers. fichiers, etc. Les commandes sont exécutées via ce canal.
Notifie le serveur d'utiliser le mode actif . Le port 21 n'est utilisé que pour l'exécution des commandes. Pour les fichiers qui doivent réellement être transférés, un autre port doit être ouvert. Le client ouvrira au hasard un autre port pour le transfert de fichiers, puis notifiera au serveur FTP deux informations via le port 21. Le client utilise le port pour le transfert de fichiers et utilise le mode actif pour le transfert de fichiers.
Le serveur FTP établit activement une connexion avec le client. Lorsque le serveur FTP connaît les deux informations, il établira activement une connexion avec le client via le port 20. Une fois la connexion établie, les fichiers peuvent être transférés via la connexion.
Problèmes que vous pouvez rencontrer en mode actif
Si vous ne parvenez pas à vous connecter au serveur FTP en mode actif, les situations suivantes peuvent survenir :
Le port du serveur n'est pas démarré
Pare-feu du serveur
Le LAN où se trouve le client situé a une conversion NAT
En mode actif, les ports généralement ouverts sont le 21 (canal de commande) et le 20 (canal de transfert de fichiers). Les deux ports sont indispensables. De plus, le pare-feu doit également autoriser ces deux ports. Pour l'hôte client, vous pouvez tester si ces deux ports sont ouverts via telnet.
Les problèmes de port et de pare-feu sont relativement faciles à résoudre, mais les problèmes de conversion NAT sont difficiles à résoudre. Voyons comment la conversion NAT provoque des problèmes. Étant donné que l'établissement du canal de commande est initié par le client, le canal peut être établi avec succès. Cependant, lorsque le serveur établit activement un canal de données vers le client, le serveur connaît l'adresse IP NAT, et non l'adresse IP du client. Par conséquent, le serveur enverra une demande de connexion active à l'un des ports NAT (par exemple, le port 1042) en utilisant le port 20. Cependant, NAT n'a pas ouvert ce port et l'établissement de la connexion active a donc échoué. Alors, comment résoudre ce problème ? Utilisez simplement le mode passif.
Processus en mode passif
Établissement du canal de commande. Cette étape est la même que le mode actif.
Le client émet une demande de lien PASV. Le client envoie une requête en mode passif PASV au serveur via le canal de commande et attend la réponse du serveur.
Le serveur démarre le port de données et informe le client . Lorsque le serveur reçoit la requête PASV du client, il démarre un port pour la transmission des données. Ce port peut être aléatoire (1024~65535) ou spécifié. Ensuite, informez-en le client via le canal de commande.
Le client démarre le port de données et établit une connexion avec le serveur. Le client reçoit les informations du serveur et connaît le port utilisé par le serveur pour la transmission des données. À ce moment, le client ouvrira aléatoirement un port supérieur à 1024, puis établira une connexion avec le serveur via ce port.
Pour plus d'articles techniques connexes, veuillez visiter la colonne Tutoriel du système Linux !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!