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 »
 |
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).
 |
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.
 |
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
__________________________________________________
Copyright © 1985-2008 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.
__________________________________________________


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.