4D Internet Commands - Outils de réseau

| Steve Hartman | traduit de l'anglais par Stéphanie Tirtiat |

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. ♪

- Titre : 4D Internet Commands - Outils de réseau

- Auteurs : Steve Hartman, traduit de l'anglais par Stéphanie Tirtiat

- Parution : 1 décembre 2005

- Licence : Ce document est issu de https://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.

Sommaire

- 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 sous-marins. 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 toute 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'ils 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. Une 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 chariot 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.