Un meilleur job mieux payé ?

Deviens chef de projet, développeur, ingénieur, informaticien

Mets à jour ton profil pro

ça m'intéresse

Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


4D Internet Commands - Outils de réseau

Date de publication : Décembre 2005

Par Steve Hartman (4D Inc.)
 traduit de l'anglais par Stéphanie Tirtiat (Intl Tech Support)
 

Dans cette note technique, nous présentons deux options. La première permet d'effectuer des "DNS Lookup" et des "Reverse DNS Lookup". La seconde utilise une ancienne commande UNIX, Finger. Ces outils vous aident à isoler les problèmes relatifs au réseau qui peuvent survenir pendant le déploiement d'applications.

Introduction
Le formulaire de la base exemple
La page « Ping »
La page « Lookup »
La page « Finger »
Les méthodes de la base exemple
La méthode base Sur ouverture
La méthode Ping
La méthode Lookup
La méthode Finger
Base exemple


Introduction


Dans cette note technique, nous présentons deux options. La première permet d'effectuer des DNS Lookup et des Reverse DNS Lookup. La seconde utilise une ancienne commande UNIX, Finger. Ces outils vous aident à isoler les problèmes relatifs au réseau qui peuvent survenir pendant le déploiement d'applications.

Le code de l'application utilitaire s'appuie sur le plugin 4D Internet Commands.


Le formulaire de la base exemple


Le formulaire utilisé dans l'interface de la base est organisé en trois pages :


La page « Ping »

info Remarque : les informations relatives à la machine locale sont distribuées sur les trois pages. Cette partie indique l'adresse IP et le masque de sous-réseau qui provient de la machine émettrice.

Paramètres du Ping

Cette partie vous permet de :

   • Saisir l'adresse de la machine test (les adresses précédentes y sont aussi listées, depuis le démarrage de la base)
   • Sélectionner le nombre de paquets à envoyer
   • Sélectionner le ping continu.

Paramètres des paquets

Cette partie vous permet de :

   • Saisir le contenu du paquet (la taille est affichée)
   • Saisir l'intervalle de temps entre deux envois consécutifs de paquets.

Rapport de Ping

Cette partie affiche :

   • Le numéro de séquence pour chaque ping
   • L'adresse testée et le nom de domaine s'il est détecté
   • La durée du ping (en ticks), si le test a réussi.


La page « Lookup »

Paramètres du Lookup

Vous y entrez le nom de domaine ou l'adresse IP sur laquelle effectuer un lookup (une recherche).

Rapport de Lookup

Cette zone affiche l'adresse IP si vous avez entré un nom de domaine, et le nom de domaine si vous avez entré une adresse IP.

La commande Net_Resolve permet d'effectuer un Forward DNS Lookup ou un Reverse DNS Lookup. Prenez un nom de domaine, exemple.com, et l'adresse IP sera retournée (par exemple 192.0.34.166). Prenez une adresse IP (192.0.34.166) et le nom de domaine vous sera retourné (exemple.com).

Dans un environnement DNS (Domain Name System), il est courant de demander un Reverse Lookup en donnant une adresse IP.


La page « Finger »

Paramètres Finger

Vous saisissez le nom d'utilisateur et le domaine pour le Finger.

Analyse du Finger

Cette zone affiche les informations à propos des utilisateurs du système, y compris vous-même. Il retourne aussi un message si la connexion a été refusée.


Les méthodes de la base exemple


La méthode base Sur ouverture

Avant d'utiliser les Internet Commands, vous devez initialiser la couche TCP. La commande IT_MacTCPInit du plugin est utilisée dans cette méthode. Elle initialise la couche TCP pour l'utilisation des Internet Commandes. Cette fonction retourne une erreur (valeur numérique) si le pilote TCP n'a pu être lancé.

Il est recommandé de placer cette commande dans la Méthode base Sur ouverture dans le cas où il n'y a pas de modem téléphonique. Ainsi, elle sera exécutée une fois pour toutes.

Ceux qui ont une connexion par modem (PPP ou SLIP) préfèreront utiliser cette commande seulement au moment où une connexion TCP est nécessaire pour éviter que leur modem ne se déclenche dès l'appel de cette commande (voir la commande IT_PPPStatus).

info Remarque : Cette commande doit être exécutée avant toute autre Internet Commands.
code 4D : sur ouverture base

Si (Faux)
   ` Methode base: sur ouverture
   ` Note technique : commandes reseau IC
   ` Par: Steve Hartman
   ` Date: 21/09/2005
   ` Utilisation:
   <>f_Version2004x2:=Vrai
   <>fK_Hartman:=Vrai
Fin de si

C_ENTIER LONG($Error)
C_BOOLEEN($Continue)
CACHER FENETRE(Fenetre premier plan(*))
$Error:=IT_MacTCPInit
$Continue:=IC_Error ($ERROR;"IT_MacTCPInit")

Si ($Continue)
   $Error:=IT_SetTimeOut (15)
   $Continue:=IC_Error ($Error;"IT_SetTimeOut")
Fin de si

Si ($Continue)
   Dialog_Reseau
Fin de si

`Fin methode

La méthode Ping

Le mot Ping a été emprunté à la marine américaine pour décrire le travail de recherche d'objets des sousmarins. Les sous-marins envoient une onde au sonar et attendent l'onde de retour quand elle rebondit sur un objet (un autre sous-marin, une baleine, le fond océanique,…). Le terme est maintenant employé dans les réseaux informatiques.

On utilise le Ping pour vérifier qu'une machine fonctionne sur le réseau, si son raccordement est opérationnel. Le Ping utilise la fonction Echo (voir la norme RFC 792) du protocole ICMP (Internet Control Message Protocol). Un paquet est envoyé à travers le réseau vers une adresse IP spécifique. Ce paquet fait généralement 64 octets (56 octets de données et 8 octets d'information de lecture). La machine qui a envoyé le Ping attend l'information de retour. Si le réseau fonctionne et si la machine est raccordée, une réponse est envoyée vers la machine émettrice. Le Ping est aussi utilisé pour tester le DNS. Si on obtient une réponse quand un Ping est envoyé sur l'adresse IP mais pas sur le nom de domaine, alors il y a un problème de DNS qui n'arrive pas à lier l'IP avec le nom de domaine. Le temps que prend le paquet à être envoyé vers la machine cible puis renvoyé vers la machine émettrice s'appelle le “round trip time”. Si ce temps de réponse est trop long, il est probable qu'il y a un problème sur le réseau.

Le ping utilise la commande NET_Ping des 4D Internet Commands. Elle permet de questionner une adresse IP distante pour vérifier qu'elle est active. Si la machine cible utilise le protocole TCP/IP et que le réseau entre les deux machines fonctionne, le statut « Alive » (Actif) est renvoyé. La machine cible n'alerte pas son utilisateur de cette demande de Ping, supposant qu'elle est autorisée à répondre au protocole ICMP (Echo).

La commande NET_Ping effectuera un ping sur une machine désignée par son nom de domaine ou son adresse IP. N'importe quelle machine avec une adresse IP accessible par réseau peut être « pingée », y compris les machines d'utilisateurs finaux. Votre ping peut être gêné si les machines visées sont protégées par les systèmes de sécurité (« Firewall » ou « pare-feu »).

NET_Ping (nomServeur; texte; actif{; timeOut}) - > Entier

Paramètre Type Description
nomServeur Alpha Nom ou adresse IP du serveur
texte Texte Texte à envoyer dans le "ping"
actif Entier 1 = Actif, 0 = Timeout/Inactif
timeOut Entier Nombre de secondes d'attente,
0 = utiliser la valeur IT_SetTimeOut
Résultat Entier Code d'erreur

nomServeur : c'est le nom de domaine ou l'adresse IP de la machine cible

texte : c'est le texte envoyé par Ping. Les paramètres délimitent la taille du texte à envoyer.

actif : c'est le résultat numérique correspondant à l'état de la machine “pingée”. Si la valeur est zero, la machine n'est pas sur le réseau ou le temps imparti au ping a expiré (timeout) avant de pouvoir recevoir une réponse.

Timeout : spécifie le nombre de secondes imparties pour envoyer et recevoir le ping. Si ce paramètre optionnel n'est pas renseigné, la valeur par défaut est zéro, ce qui implique l'utilisation de la commande IT_SetTimeOut pour définir le nombre de secondes à attendre.

info Remarque : ce paramètre n'est pas pris en compte sous Windows 95/98/2000.
code 4D : méthode Ping

Si (Faux)
   ` Methode projet: Ping
   ` Note technique : commandes reseau IC
   ` Par: Steve Hartman
   ` Date: 21/09/2005
   ` Utilisation: Pinger une adresse IP
   <>f_Version2004x2:=Vrai
   <>fK_Hartman:=Vrai
Fin de si

C_TEXTE($IPorHost;$LinSep;$1;$2)
C_ENTIER LONG($I;$3;$4;$5;$Error;$TicksPing;$Status;$Nb;$TicksF;$Num;$PingNum;$Ticks)
C_BOOLEEN($Continue)

<>End:=Faux
$Nb:=Nombre de parametres

Au cas ou
   : ($Nb=0)
      <>ProcessPing:=Nouveau process("Ping";64*1024;"Ping";tIP{0};vText;bSend;vPacketNumber;vticks;*)

   : ($Nb#0)
      $LinSep:=Caractere(Code ascii("*"))*35+Caractere(13)
      <>Report:=$LinSep
      $Num:=0
      $Error:=NET_Resolve ($1;$IPorHost)
      $PingNum:=0
      $Ticks:=Nombre de ticks
      
      Repeter
         $PingNum:=$PingNum+1
         <>Report:=Caractere(13)+" Adresse IP ["+$1+"] ["+$IPorHost+"]"+Caractere(13)+<>Report
         $TicksPing:=Nombre de ticks
         $Error:=NET_Ping ($1;$2;$Status)
         $Continue:=IC_Error ($Error;"NET_Ping")
         $TicksPing:=Nombre de ticks-$TicksPing
         
         Si ($Continue)
            Si ($Status=0)
               <>Report:="La machine n'est pas connectee."+Caractere(13)+<>Report
               <>End:=Vrai
            Sinon
               <>Report:=Chaine($TicksPing)+" ticks."+<>Report
            Fin de si
            <>Report:="Ping n° "+ Chaine($PingNum)+":"+Caractere(Tabulation )+<>Report
            Au cas ou
               : ($3=1)
                  $Num:=$Num+1
                  Si ($Num=$4)
                     <>End:=Vrai
                  Fin de si
            Fin de cas
            
         Sinon
            <>Report:=Caractere(13)+" Un probleme est survenu pendant la connexion TCP/IP."
            <>End:=Vrai
            
         Fin de si
         
      <>Report:=$LinSep+<>Report
      APPELER PROCESS(-1)
      $TicksF:=Nombre de ticks-$Ticks
      Si ($TicksF<$5)
         ENDORMIR PROCESS(<>ProcessPing;($5-$TicksF))
      Fin de si
      
   Jusque (<>End)

Fin de cas

APPELER PROCESS(<>DIALOG)

   `Fin de methode

La méthode Lookup

Un DNS Lookup transforme un nom de domaine en adresse IP. Et un Reverse DNS Lookup transforme une adresse IP en nom de domaine.
Par exemple :
   Exemple.com retournerait 192.0.34.166 (Lookup)
   192.0.34.166 retournerait exemple.com (Reverse Lookup)

Pour vos noms de domaines, les DNS standards (nom de domaine vers une adresse IP) sont gérés d'abord par le "registrar", c'est-à-dire l'organisme auprès duquel vous avez enregistré votre nom de domaine. Vous leur communiquez les noms des serveurs DNS qui gèrent vos noms de domaines et le "registrar" relaie cette information aux serveurs parents (TLD). Ensuite, tout utilisateur dans le monde entier peut accéder à vos noms de domaines que vous pouvez relier aux adresses IP que vous souhaitez. Vous avez le contrôle total sur vos domaines et vous pouvez envoyer un utilisateur vers l'une ou l'autre adresse IP.

Le DNS renversé fonctionne de manière similaire.

Pour vos adresses IP, les Reverse DNS (IP vers nom de domaine) sont d'abord gérés chez votre fournisseur d'accès Internet (ou tout autre personne/organisme qui vous aura fourni ces adresses IP). Vous lui dites quels serveurs DNS gèrent les reverse DNS de vos adresses IP (sinon il peut aussi entrer les Reverse DNS sur ses propres serveurs DNS). Quand ses serveurs DNS reçoivent une requête pour un Reverse DNS, ils peuvent alors fournir le nom de domaine. N'importe quel utilisateur dans le monde peut maintenant rechercher les Reverse DNS de vos adresses IP et vous pourrez lui renvoyer les noms de domaines que vous voulez (s'il vous appartiennent, sinon vous devrez en demander l'autorisation).

Donc, il y a deux étapes pour le DNS Lookup et le Reverse DNS :
1) Vous avez besoin de serveurs de DNS
2) Vous devez communiquer à l'organisme adéquat (votre "registrar" pour les DNS lookup, ou votre FAI pour les Reverse DNS Lookup) où sont localisés vos serveurs de DNS. Sans l'étape 2, personne ne pourra atteindre vos serveurs de DNS.

La méthode Lookup utilise la commande NET_Resolve des 4D Internet Commands. En partant d'un nom de domaine dans le premier paramètre, la commande NET_Resolve retourne l'adresse IP dans le second paramètre. Si le premier paramètre est une adresse IP, le second paramètre retournera le nom de domaine de la machine.

NET_Resolve (nomServeur; ipOuServeur) Entier

Paramètre Type Description
nomServeur Alpha Nom ou adresse IP du serveur
ipOuServeur Alpha Renvoie la valeur opposée
Résultat Entier Code d'erreur

nomServeur : c'est une chaîne contenant soit l'adresse IP soit le nom de domaine.

IpOuServeur : si le premier paramètre contient un nom de domaine alors ce paramètre recevra l'adresse IP correspondante. Si le premier paramètre est une adresse IP alors cette variable recevra le nom de domaine correspondant.

code 4D : méthode Lookup

Si (Faux)
   ` Methode projet : Lookup
   ` Note technique : commandes reseau IC
   ` Par: Steve Hartman
   ` Date: 21/09/2005
   ` Utilisation: retourner l'adresse IP ou le nom de domaine
   <>f_Version2004x2:=Vrai
   <>fK_Hartman:=Vrai
Fin de si

C_TEXTE($1)
C_ENTIER LONG($Nb;$Error)
C_ALPHA(80;$IPorHost) `chaine ou texte

<>End:=Faux
$Nb:=Nombre de parametres

Au cas ou
   : ($Nb=0)
      <>ProcessLookup:=Nouveau process("Lookup";64*1024;"Lookup";$1;*)

   : ($Nb#0)
      $LinSep:=Caractere(Code ascii("*"))*35+Caractere(13)
      <>Report1:=$LinSep
      $Error:=NET_Resolve ($1;$IPorHost)
      Si ($IPorHost="")
         <>Report1:=$LinSep+"Ne peut etre resolu."
         <>End:=Vrai
      Sinon
         <>Report1:=$LinSep+$IPorHost
         <>End:=Vrai
      Fin de si

Fin de cas

APPELER PROCESS(<>DIALOG)

   `Fin de methode

La méthode Finger

Par défaut, Finger retrouve le login, le nom complet, le nom de domaine, ainsi que les permissions en écriture, le IDLE, l'heure et la localisation de connexion pour chaque utilisateur courant. Les numéros de téléphone personnel et professionnel sont facultatifs et peuvent être ajoutés à votre Finger si vous souhaitez que cette information soit publique. Que vous le sachiez ou pas, le Finger est un outil très vieux et très peu utilisé à cause de son manque de sécurité. Il y a encore quelques systèmes qui répondent à une requête Finger, habituellement sur le port 79, mais la plupart ne le font pas. Parmi ceux qui répondent, certains vous demanderont d'utiliser un serveur d'identification. Ce serveur ne fournira aucune information privée vous concernant ; uniquement les informations que vous voudrez bien communiquer. Ce n'est donc pas un véritable serveur d'identification comme sous Unix.

La méthode Lookup utilise la commande NET_Finger des Internet Commands. Si vous donnez l'adresse IP d'une machine et le nom d'un compte utilisateur sur cette machine, la commande NET_Finger retournera les informations dans le paramètre Resultats. La commande Unix Finger est conçue pour retourner des informations comme l'heure de la dernière connexion d'un utilisateur et toutes les informations additionnelles que cet utilisateur aura choisi de fournir par les fichiers .plan et .project.

Il existe deux manières de lancer une recherche Finger. Un requête peut être envoyée directement à la machine de l'utilisateur.

Par exemple, pour retourner les informations à propos de “johnt” à “exemple.com”, vous lancerez la recherche :

$error:=NET_Finger(“www.exemple.com”;”johnt”;$fingertext)
Vous pouvez effectuer la même recherche indirectement. Une recherche indirecte passerait par un serveur distant. S'il est compatible avec la commande Finger, il retournera les informations demandées.

L'exemple suivant demande à la machine identifiée comme « exemple.com » d'effectuer une requête Finger sur l'utilisateur « johnt@exemple.com ».

$error:=NET_Finger(“www.exemple.com”;”johnt@exemple.com”;$fingertext)
Tandis que l'information principale retournée dans chaque cas devrait être identique, il peut y avoir quelques petites différences dans le résultat. Les différentes machines peuvent être configurées différemment au moment où elles exécutent la commande Finger. En outre, il peut y avoir une certaine différence de formatage dans les deux résultats d'une commande Finger directe et indirecte ; les recherches indirectes contiennent souvent des retours chariots en plus.

NET_Finger (nomServeur; texteRecherche; informations) Entier

Paramètre Type Description
nomServeur Alpha Nom ou adresse IP du serveur
texteRecherche Alpha Texte de la recherche
informations Texte Résultats de la recherche
Résultat Entier Code d'erreur

nomServeur : c'est le nom de domaine ou l'adresse IP de la machine sur laquelle l'utilisateur passé dans texteRecherche a un compte

texteRecherche : c'est soit la chaîne à chercher sur le serveur, soit le nom de domaine, soit l'Ip de la machine. Si texteRecherche est un nom d'utilisateur, la commande cherchera dans le répertoire des utilisateurs sur le serveur. Si texteRecherche est un nom de machine ou une adresse IP, la commande enverra une requête Finger via le serveur Finger spécifié dans nomServeur.

informations : les informations retournées


Si (Faux)
   ` Methode projet : Finger
   ` Note technique : commandes reseau IC
   ` Par: Steve Hartman
   ` Date: 21/09/2005
   ` Utilisation: Equivilent de la commande unix 'Finger'
   <>f_Version2004x2:=Vrai
   <>fK_Hartman:=Vrai
Fin de si

C_TEXTE($LinSep;$1;$2)
C_ENTIER LONG($Nb;$Error)
C_ALPHA(80;$FingerText) `Chaine ou texte

<>End:=Faux
$Nb:=Nombre de parametres

Au cas ou
   : ($Nb=0)
      <>ProcessFinger:=Nouveau process("Finger";64*1024;"Finger";$1;$2;$FingerText;*)

   : ($Nb#0)
      $LinSep:=Caractere(Code ascii("*"))*35+Caractere(13)
      <>Report2:=$LinSep
      $Error:=NET_Finger ($1;$2;$FingerText)
      Si ($FingerText="")
         <>Report2:=$LinSep+"finger: connexion refusee."
         <>End:=Vrai
      Sinon
         <>Report2:=$LinSep+$FingerText
         <>End:=Vrai
      Fin de si

Fin de cas

APPELER PROCESS(<>DIALOG)

   `Fin de methode

Base exemple

Télécharger la base exemple.

__________________________________________________
Copyright © 1985-2009 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.
__________________________________________________
 



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Contacter le responsable de la rubrique 4D