Détecter et suivre un problème TCP/IP (partie 1) Résumé 4D Notes

Transcription

Détecter et suivre un problème TCP/IP (partie 1) Résumé 4D Notes
Détecter et suivre un problème TCP/IP (partie 1)
Par
David ADAMS
Note technique 4D-200308-22-FR
Version 1
Date 1 Août 2003
Résumé
Le débogueur est un fabuleux outil pour traquer les problèmes au sein de votre code 4D. Pourtant, dès lors que
vous aurez à communiquer avec divers programmes ou autres machines à travers les couches de TCP/IP, il se
révélera insuffisant. Vous aurez besoin de nouveaux outils et de technique pour déboguer sur le réseau. Voici
quelques cas pour lesquels il vous faudra plus qu’un simple débogueur :
- Les Web Services
- Les fonctionnalités Web de 4D
- Les solutions qui intègrent 4D et d’autres serveurs Web dont IIS et WebSTAR.
- Les utilisations particulières de TCP/IP pour le courrier électronique, le FTP ou d’autres usages.
- 4D Serveur et les problèmes de connexion des clients ou des baisses de performances.
4D Notes techniques
Copyright © 1985-2004 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 d u logiciel décrit dans ce document est régie par u n octroi de licence dont les termes sont précisés par ailleurs dans la
licence électronique figurant sur le support d u Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être
utilisés, copiés o u 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 o u recopiée de quelque manière que ce soit, électronique o u mécanique, y compris par
photocopie, enregistrement, archivage o u 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 o u 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.
1 / 12
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires
respectifs.
2 / 12
Détecter et suivre un problème TCP/IP (partie 1)
Introduction
Le débogueur est un fabuleux outil pour traquer les problèmes au sein de votre code 4D. Pourtant, dès lors que
vous aurez à communiquer avec divers programmes ou autres machines à travers les couches de TCP/IP, il se
révélera insuffisant. Vous aurez besoin de nouveaux outils et de technique pour déboguer sur le réseau. Voici
quelques cas pour lesquels il vous faudra plus qu’un simple débogueur :
• Les Web Services
• Les fonctionnalités Web de 4D
• Les solutions qui intègrent 4D et d’autres serveurs Web dont IIS et WebSTAR.
• Les utilisations particulières de TCP/IP pour le courrier électronique, le FTP ou d’autres usages.
• 4D Serveur et les problèmes de connexion des clients ou des baisses de performances.
Mac OS X
Le protocole TCP/IP est issu du monde Unix, aussi les outils les plus courants et puissants sont écrits pour
Unix. Mac OSX étant basé sur BSD Unix, les utilisateurs de Mac OS X ont accès à un grand nombre de logiciels
de haute qualité, gratuits, ceux-là mêmes utilisés par les personnes qui ont construit TCP/IP. Plusieurs de ces
utilitaires ont été adaptés à l’interface graphique Aqua de Mac OS X.
Dans cette Note Technique nous passerons en revue :
• Les outils réseaux les plus usités
• Les outils « graphiques » livrés avec OS X ou par des éditeurs tiers
• Les différentes manières de dépanner et tracer les connexions TCP/IP.
Le terminal OS X
Un vision différente de l’ordinateur
Le Finder Aqua et le Terminal d'OS X nous montrent OS X et ses fichiers sous-jacents de façon bien différente.
Le Finder Aqua est certes alléchant et très simple d'emploi mais trouve rapidement ses limites dès lors qu’il
s’agit de régler des problèmes de réseau ou de configurer des programmes Unix comme Apache.
Comme le montrent les illustrations suivantes, le Finder et le Terminal montrent des fichiers très différents à la
racine d’un système Mac OS X standard.
3 / 12
Utilisation du Terminal à des fins de débogage réseau
Il y a quasiment toujours une alternative GUI (Graphical User Interface, interface graphique pour l’utilisateur)
aux principales commandes du Terminal. Pourtant, avec un peu d’habitude, l’usage du Terminal sera plus utile
lors du déboguage du système et du réseau. Il deviendra alors plus rapide de taper quelques lignes de
commandes que de lancer un utilitaire doté d'une riche interface graphique. Nous passerons sous silence les
commandes Unix de base, mais sachez qu’il existe pléthore de ressources sur le Web ou sous forme d'ouvrages
récents vous permettant de vous familiariser avec les commandes Unix.
Éditer un fichier texte dans le Terminal
Configurer Unix revient à éditer des fichiers texte. OS X est livré avec plusieurs éditeurs dont vi et emacs. Et si
éditer un texte en ligne de commande vous déplaît, Bare Bones Software fournit une excellente alternative avec
BBedit. À compter de la version 6, BBedit offre un outil de ligne de commande pour ouvrir et créer des fichiers
texte Unix depuis le Terminal. Par exemple, voici la ligne de commande à taper dans le Terminal pour ouvrir
dans BBedit le fichier de configuration principale d’Apache :
4 / 12
bbedit/etc/httpd/httpd.conf
Cette simple ligne ouvre le fichier de configuration dans BBEdit prêt à y être édité.
Installer des applications Terminal
Présentation
Mac OS X est livré avec plusieurs commandes réseau prêtes à l’emploi :
Ping
Traceroute
Whois
NSLookup
Note du Traducteur :
Ces commandes sont accessibles via le Terminal ou au travers d'une interface graphique dans l'Utilitaire réseau
(/Applications/Utilitaires/Utilitaires de réseau).
5 / 12
tiff2/UtilitaireReseau.tiff
Exemple d'informations affichées par netstat
6 / 12
Note du Traducteur :
Il y a plusieurs façons d’installer des commandes Terminal supplémentaires :
• Utiliser un installeur de paquet (package);
• Installer Fink et l’utiliser pour l’installation des commandes;
• Compiler des binaires.
Nous allons rapidement examiner ces différentes approches.
Installations de paquets (packages)
Certains programmes comme tcpflow ont été configurés comme des installeurs de paquets au standard Apple.
Les installeurs de paquets sont idéaux, sous réserve d’être disponibles, car ils ne requièrent aucune compilation
ou configuration locale. Il n’y a aucune différence entre utiliser un installeur de paquet pour une commande Unix
ou une application GUI.
Un installeur de paquet standard
7 / 12
Utilisation de l’installeur.
Le projet OSXGNU a pour objectif de porter les utilitaires Unix vers Mac OSX en utilisant des installeurs de
paquets classiques. Pour plus d’information rendez-vous sur http://www.osxgnu.org/
Une bonne nouvelle et une mauvaise. La mauvaise : beaucoup de commandes Unix ne sont pas encore sous
forme de paquet. La bonne : beaucoup d’entre elles sont disponibles au travers de Fink.
Fink
Fink fournit un programme en ligne de commande pour gérer, installer et mettre à jour les programmes open
source d’Unix. Plus compliqué d'utilisation que les paquets, Fink est parfois l’unique solution. L’analyseur de
protocoles réseau Ethereal est, par exemple, indisponible en tant que paquet.
Pour travailler avec Fink :
- Réservez-vous du temps
- Sauvegardez votre système
- Installez le CD Apple Developer et toutes ses mises à jour
- Installez Fink
- Installez une implémentation X11
- Restaurez les autorisations sur votre système
Pour plus d’info sur Fink et X11 reportez-vous à la page d’accueil :
http://fink.sourceforge.net/
Compiler des binaires
Certains paquets demandent à être directement compilés sur votre machine. Quelques tâches courantes qui
requièrent une compilation avec Fink :
- Compiler Apache
- Recompiler des modules d'Apache comme mod_fastcgi.
Le CD Apple Developer est livré avec Mac OS X 10.2. Sur le site Apple Developer Connection, Apple fournit
8 / 12
des disques images de l’intégralité du CD Developer, ainsi que des versions précédentes et des mises à jour. Un
enregistrement gratuit est demandé pour le téléchargement.
http://www.apple.com/developer/
Après enregistrement les programmes sont librement téléchargeables :
http://developer.apple.com/tools/
Des exemples
Le tableau ci-dessous répertorie les applications réseaux les plus courantes et la manière de les installer. Comme
il est indiqué, plusieurs outils Aqua sont disponibles en standard ou via des tierces parties.
Les fondamentaux du réseau et de TCP/IP
Introduction
Ci-dessous vous trouverez des définitions sommaires voire même parfois simplifiées des mots-clés et concepts
évoqués dans cette Note Technique.
Adresses
Chaque machine au sein d’un réseau TCP/IP doit avoir une adresse unique du style 209.238.180.64. Une
adresse peut être associée à un nom plus compréhensible pour un être humain comme www.4dcompanion.com.
Une machine peut être configurée avec de multiples adresses.
Port
Les applications qui ont recours à TCP/IP pour communiquer incluent un numéro de port dans l’adresse. Pour
faire une analogie avec le téléphone, une adresse serait le numéro du standard d’une compagnie et le port serait
un numéro de poste dans un bureau. Les applications serveurs ont habituellement un port par défaut ou connu
pour cette utilisation :
Port
description
23
telnet
25
SMTP
9 / 12
80
443
19813
HTTP
HTTPS
4D Serveur
Il est possible de changer le numéro de port d'un service mais alors le logiciel client doit également être configuré
pour arriver à bon port !
Note :
Dans une connexion TCP/IP, le client et le serveur utilisent chacun un numéro de port. Côté client, le numéro de
port est local à la machine du client et il n’a aucun rapport avec le numéro de port du logiciel serveur. Prenez
par exemple un navigateur Web qui se connecte à trois serveurs Web différents. Dans chaque cas, le port du
serveur est 80 tandis que le port du client est unique et, en général, avec un numéro plutôt élevé. A moins que
vous ne développiez vos propres services, les ports côté client ne sont ni visibles ni importants.
Pour obtenir une liste exhaustive de ports standards, reportez-vous au site :
http://www.iana.org/assignments/port-numbers
Les ports et Mac OSX
Pour des raisons de sécurité, Mac OS X restreint à l‘utilisateur root l’accès aux ports en dessous de 1024. Les
développeurs 4D qui migrent vers OSX rencontrent souvent cette erreur dans les bases de données qui utilisent
le serveur Web alors que tout fonctionnait sous MacOS 9 :
Plusieurs solutions permettent de remédier à ce problème, dont celle qui consiste à faire tourner le serveur Web
sur un numéro de port plus élevé ou bien d’activer l'utilisateur root.
Cependant la plus sûre et surtout la plus simple consiste à recourir au firewall (ipfw) intégré à OS X pour
rediriger les requêtes sur le port 80 vers un autre port, le 8080 par exemple. Cette redirection permet à la fois
aux navigateurs d’envoyer des requêtes au port Web standard et de faire tourner 4D sans avoir besoin de se
loguer en root. Voici un exemple d’une règle ipfw qui redirige les requêtes du port 80 vers le port 8080 :
sudo ipfw add 101 fwd 127.0.0.1,8080 tcp from any to any 80 in
Malheureusement, les règles ipfw ne sont pas conservées lors du redémarrage de la machine. Il est possible de
télécharger un petit programme appelé Simple Port, écrit par Jeremy Sullivan, qui se chargera de la
reconstruction de vos règles :
http://www.hdind.com/4dresources/
Interfaces
La connexion entre un ordinateur et le réseau est appelée une interface ou interface réseau. Un ordinateur peut
avoir de multiples interfaces réseau : deux cartes Ethernet, une carte Wifi/airport ou un modem. De plus, chaque
ordinateur a une interface de boucle locale définie dans TCP/IP à l’adresse 127.0.0.1. Bien identifier et
sélectionner les interfaces est essentiel pour tracer et déboguer un problème réseau. Par exemple, surveiller
10 / 12
l'interface de boucle locale permet de tracer sur une même machine les paquets échangés entre deux programmes
qui n’utilisent pas l'interface Ethernet.
DNS
Les serveurs de nom de domaine (DNS) se chargent de la mise en correspondance entre les noms de machine et
les adresses. Un programme qui requiert l’usage du DNS peut devenir inopérant si le serveur de DNS vient à
tomber. Lors du dépannage d’incident réseau, le DNS devrait constituer votre premier test.
DHCP
Une adresse IP peut être attribuée de manière manuelle ou dynamiquement grâce à un serveur DHCP (Dynamic
Host Configuration Protocol). Les serveurs DHCP permettent de réutiliser des plages d’adresses IP parmi les
machines actives. L'obtention d'une adresse IP depuis un serveur DHCP s'appelle obtenir un bail.
Lors d’un déboguage réseau, il est important de vérifier comment une machine client obtient son adresse IP, de
pouvoir inspecter les détails de son bail DHCP et de pouvoir rafraîchir les adresses sur demande.
Vue conceptuelle de haut-niveau des types de connexion
Les protocoles et services de haut niveau comme HTTP, SMTP, POP3, IMAP et Telnet s'exécutent au niveau
le plus élevé de TCP/IP. Ces protocoles abordent la communication client/hôte de différentes manières.
Un protocole comme HTTP traite chaque requête de page comme un événement unique sans rapport avec tout
autre événement. Une application comme Telnet garde quant à elle un canal de communication ouvert avec le
client et ceci jusqu’à la fin de la session. Pour déboguer un problème de réseau ou d’application réseau, il est
nécessaire de comprendre si le protocole est orienté « session » ou « requête/réponse ».
Hubs et switches
Les hubs (concentrateurs) et les switches (commutateurs) permettent de connecter plusieurs machines à un
réseau. Les hubs ne sont pas très intelligents et renvoient chaque trame reçue à toutes les machines connectées.
Un matériel bien conçu doit inspecter chaque trame entrante et écarter les messages adressés à d’autres
matériels. Les switches gèrent ces deux questions en lisant l’information et en ne l’adressant qu’aux intéressés.
Cependant lors du déboguage d’un réseau, il est parfois plus pratique de pouvoir capturer les paquets passant
entre deux ou plusieurs machines. Dans ce cas, la manière la plus économique de procéder est de récupérer un de
ces hubs démodés et d’utiliser un programme de capture de paquets pour suivre les conversations. Ces hubs
passifs sont de plus en plus rares aussi si vous en avez un, ne le lâchez pas ! Une alternative est d’acheter un
switch administrable et d’utiliser ses fonctionnalités de surveillance de port. Cette fonctionnalité vous permet
de travailler comme avec un vieux hub passif, mais les switches administrables sont en général coûteux voire très
coûteux !
Trame (frame)
Les données envoyées sur un réseau Ethernet sont organisées en trames. Pour des raisons liées à la fois à
l'évolution d'Ethernet et aux autres standards réseaux, différents formats de trame peuvent se rencontrer sur un
même réseau. A moins de devoir effectuer une analyse extrêmement bas niveau du trafic, il n'est pas nécessaire
de comprendre les formats de trame. Les bons utilitaires de capture de trame et d'analyse de protocoles, comme
Etherpeek et Ethereal, reconnaissent et décodent pour vous les différents formats afin de simplifier la lecture
des données traversant le réseau.
Flux (Stream)
Les échanges TCP/IP entre programmes sont décomposés en paquets dont la réception s'effectue rarement dans
l'ordre d'émission. La capture de trame ou de paquet quoique nécessaire au déboguage de certains problèmes
réseau se révèle inappropriée lorsqu'il s'agit de suivre et comprendre la communication entre deux programmes
du réseau. Le rassemblement des paquets échangés dans leur ordre d'émission s'appelle un flux (stream). Lors de
11 / 12
la mise au point de programmes - comme les connexions Web ou les messages SOAP -ce dont vous avez besoin
principalement c'est de consulter les flux. L'outil de ligne de commande tcpflow est l'un des meilleurs utilitaires
de capture de flux disponible et il est entièrement gratuit.
Note du Traducteur :
Bibliographie
Un ouvrage en français très fréquentable : "MacOS X 10.2" aux éditions CampusPress, ISBN 2-7440-1550-4 :
900 pages qui ne traitent pas de l'interface graphique !
Disposer d'utilitaires efficaces c'est bien, mais il est également indispensable de recourir à de la documentation
sur certains aspects des réseaux. Parmi la multitude d'ouvrages sur la question, nous pouvons recommander
"TCP/IP 2è édition" chez Campus Press, dans la collection Le Tout en Poche". Pour moins de 10 euros et en
moins de 500 pages, vous disposerez d'un ouvrage clair, concis et qui vous sera d'un précieux renfort dans les
moments difficiles : ISBN 2-7440-1169-X.
12 / 12

Documents pareils