Petite explication sur les proxys (2) – proxy réseau

proxy

Cet article fait suite à mon précédent article Petite explication sur les proxys, dans lequel j’introduisais la notion de proxy. En consultant les statistiques des gens qui tombaient dessus venant depuis Google, je me suis aperçu qu’une bonne partie de mes visiteurs ne cherchaient pas tant à savoir ce qu’était un proxy, que la manière de le configurer. Voila pourquoi j’ai décidé de fournir un complément d’informations avec aujourd’hui un article sur les proxy réseaux.

On est donc dans le cadre du réseau d’entreprise ou d’université. Dans le cadre d’une entreprise ou d’une université située à un unique endroit précis quelque part dans le monde, le schéma classique est le suivant: Il y a un serveur de DNS équipé d’un bon pare feu, d’un antivirus et d’un certain nombre de filtres qui est relié à internet, et tous les ordinateurs de l’université ou de l’entreprise sont reliés à cet ordinateur.

Précisons que ce schéma est en train de disparaitre. En effet avec la mondialisation, les entreprises sont implantées sur des sites situés à divers endroits du monde, et les universités se mettent en réseau. Ceci nécessite des schémas de réseaux plus complexes, afin de permettre à des ingénieurs travaillant aux extrémités opposées du monde d’échanger des données comme s’ils étaient dans le même immeuble et sans soucis de sécurité. J’y reviendrai peut être dans un article futur.

En attendant il y a encore de nombreux cas où le schéma dont je parle reste valide. Dans ce schéma l’ordinateur relié à Internet fait office de proxy pour tous les ordinateurs du réseau qui est derrière. Dans ce contexte, une connexion directe à internet n’est pas possible.

La première solution consiste à configurer son ordinateur pour qu’il passe par le proxy et spécifier à son navigateur d’adopter les paramètres du système. En général cette solution est à adopter pour les gens qui se connectent à partir d’un ordinateur portable. En effet les postes fixes sont administrés par le service informatique, donc soit ils ont déjà été configurés, et dans ce cas, tant mieux pour vous, soit ils ne l’ont pas été, mais en tant que simple utilisateur, vous n’avez pas les droits requis pour le faire

La deuxième solution consiste à configurer le proxy directement dans son navigateur internet, lorsque cela est possible. Nous allons examiner le cas de Firefox:

  • ouvrez le menu des préférences. Selon la version de Firefox que vous utilisez, il est accessible soit dans le menu edition, soit dans le menu outils.
  • Il vous faut maintenant trouver le bouton paramètres réseau. Dans les anciennes versions de Firefox, il était visible sur la première page du menu des préférences. Maintenant il faut naviguer un petit peu, mais ce n’est pas bien difficile. Voici pour vous aider une petite capture d’écran:

firefox_parametre_onglet_reseau1

  • Cliquez sur le bouton Paramètres. Un nouveau menu s’affiche. Voici la liste des possibilités et leur utilité:
  1. Pas de proxy. Cette option est généralement cochée par défaut pour indique une connection directe à internet.
  2. Détection automatique du proxy. Cette option peut fonctionner si l’administrateur réseau a installé le service correspondant sur le serveur.
  3. Utilisation des paramètres proxy du système. C’est le cas que nous évoquions plus haut. Nécessite que le proxy système ait été configuré.
  4. Configuration manuelle. C’est ce que nous allons détailler maintenant.
  5. Adresse de configuration automatique du proxy. Analogue du cas 2.
  • Nous allons donc configurer manuellement le proxy. Voici un exemple de configuration courante:

firefox_parametre_reseau

Comme vous le voyez, vous avez besoin de connaitre l’adresse du proxy et son numéro de port. Si votre ordinateur est sur le même sous-réseau que le serveur, mettre simplement “proxy” suffira. Quant au numéro de port, c’est très souvent le 3128 qui est utilisé, vous pouvez donc toujours essayer. Si vous n’êtes pas sur le même sous réseau que le serveur, il va falloir donner l’adresse totale du proxy. Par exemple si l’adresse internet de votre entreprise est www.entreprise.lambda.fr, l’adresse totale a de fortes chances d’être proxy.entreprise.lambda.fr. Un petit coup d’oeuil à mon article sur la structure d’internet vous permettra de comprendre pourquoi ;) . Dernière possibilité, si rien d’autre ne marche, ou si la résolution du DNS plante pour une raison ou une autre, renseigner directement l’adresse IP du serveur proxy vue depuis le réseau. (En effet le serveur a deux adresses IP, une vue d’internet, et une vue du réseau). Pour connaitre cette adresse IP, renseignez vous auprès de l’administrateur réseaux.

Voila pour les précisions, j’espère qu’elles vous seront utiles :) .

Ajouter des dictionnaires de correction orthographique dans Firefox

dictionnaire1

Certains connaissent peut être cette si pratique fonction de Firefox qui permet de corriger l’orthographe de textes que l’on rentre via Firefox dans des forums ou des boites emails par exemple. Encore faut il que le dictionnaire du langage dans lequel on tape soit installé dans Firefox, et qu’il soit bien sélectionné. En effet à l’inverse la vision de la moitié de ce qu’on a écrit souligné en rouge parce que le navigateur croit qu’on écrit en anglais est proprement horripilante.

Alors pour changer la langue dans laquelle firefox doit vérifier l’orthographe, faites un simple clic droit dans la zone de texte où vous écrivez, et choisissez la langue qui vous intéresse via le menu langues. Notez que vous pouvez aussi activer ou désactiver la correction automatique par ce biais en sélectionnant ou en déselectionnant l’option Vérifier l’orthographe. Si le langage dans lequel vous écrivez n’apparait pas dans la liste des propositions du menu langues, c’est qu’il va falloir l’installer.

Pour cela, rendez vous sur la page dédiée aux modules de langue de Firefox, et sélectionnez le dictionnaire dont vous avez besoin. Pour le reste, tout se passe comme pour installer n’importe quelle extention de Firefox. Au redémarrage de Firefox, la ou les langue(s) que vous aurez ajoutée(s) sera disponible. Bon surf :) .

Changer le thème de Firefox

themes

Un thème ou un skin(=littéralement peau), c’est la façon dont se présente votre navigateur. En fonction du thème sélectionné, la couleur des barres et des boutons, ainsi que la taille et la forme des icones peut changer. Pour avoir un aperçu de ce qu’il est possible de faire, je vous conseille de jeter un coup d’oeuil au site LearnFirefox qui recense des centaines de captures d’écran d’une bonne partie des thèmes existants.

Mais comment faire pour changer son thème, me direz vous? Eh bien c’est assez similaire à l’installation d’une extension de Firefox. Tout d’abord rendez vous sur la page d’accueil des thèmes de Firefox, sélectionnez le ou les thème(s) qui vous intéressent et installez les de même que n’importe quelle extension. Au redémarrage de Firefox, le dernier thème installé sera activé par défaut.

Voyons maintenant comment faire pour en changer: ouvez le gestionnaire de thèmes (outils -> modules complémentaires -> thèmes) et sélectionnez le thème que vous désirez utiliser. Cliquez sur “Utiliser le thème” et redémarrez Firefox. Notez que vous pouvez également désinstaller un thème de cette façon.

Petite explication sur les proxys

proxy

Bon comme d’habitude, le but n’est pas de faire un long cours sur les réseaux, mais d’expliquer en gros ce qu’il se passe. Et ce qu’il se passe peut facilement être résumé par l’illustration de ce billet (le header, comme disent certains). Un proxy, c’est avant tout un ordinateur intermédiaire par lequel vous passez pour vous connecter sur internet. On se demandera peut être à quoi ça sert de rajouter un intermédiaire, mais en fait ça peut s’avérer très utile.

Tout d’abord dans le cadre des entreprises. Le problème vient des soucis de confidentialité. Il faut permettre aux employés de se connecter sur internet pour travailler, et éviter que des programmes malveillants entre dans le réseau interne de l’entreprise pour mettre le bazard et espionner des informations. Pour remédier à cela, ce qui était beaucoup fait jusque récemment (maintenant les problèmes de décentralisation des entreprises montent le problème à un degré supérieur de difficulté), c’était d’avoir un seul ordinateur connecté à internet qui soit bardé de protections, et dont l’accès est réservé à l’administrateur réseau, et tous les ordinateurs des employés qui se connectent à travers lui. Par conséquent cet ordinateur principal faisait office de proxy.

Il y a aussi le problème de confidentialité sur internet. Lorsque vous allez sur internet, vous laissez énormément de traces, et en traçant votre adresse IP, on peut connecter énormément d’informations sur vous. Par conséquent le fait de passer par un proxy permet de brouiller les pistes, car c’est l’adresse IP du proxy qui sera vue sur le réseau.

Pour savoir comment configurer un proxy réseau, voir cet article: Petite explication sur les proxys (2) – proxy réseau :) .

Quelques explications sur la structure d’internet

illustration_domaine

Chaque ordinateur qui est connecté à internet à un instant donné possède une adresse IP qui lui est propre. Cette adresse IP permet de lui envoyer des données. C’est un peu l’analogue du numéro de téléphone pour nous: On en a chacun un, et on s’en sert pour s’appeler les uns les autres. Notons que l’adresse internet que nous utilisons n’est qu’une manière d’humaniser les appels, parce que taper des numéros dans la barre d’adresse, ce n’est pas toujours très gai :) Mais à chaque adresse internet correspond une IP (quelque chose dans le style 127.0.0.1 par exemple).

Maintenant comment fait l’ordinateur pour se connecter à un site pour la première fois? Eh bien il a besoin de connaitre l’adresse IP de l’ordinateur sur lequel est hébergé ce site. Pour cela il opère d’une manière que nous allons maintenant détailler.

Supposons que vous vouliez vous connecter à mon site internet aldiansblog.wordpress.com pour la première fois. Votre ordinateur va observer que l’adresse Internet contient aldiansblog, wordpress, et se termine par .com. Or il connait par défaut l’adresse IP de tous les ordinateurs dont l’adresse Internet est dns point quelquechose. Il va donc envoyer une requête à l’ordinateur dont l’adresse Internet est dns.com pour lui demander de lui donner l’adresse IP de l’ordinateur dns.wordpress.com. L’ordinateur dns.com va lui répondre en lui donnant cette adresse IP (notons que DNS signifie Domain Name Server, Serveur des Noms de Domaine, ce sont des ordinateurs dont le seul rôle est de stocker des adresses IP et de répondre à ce type de requête). Votre ordinateur va ensuite contacter de la même manière l’ordinateur dns.wordpress.com pour lui demander l’adresse IP de mon site. Ce n’est qu’une fois qu’il aura obtenu sa réponse qu’il pourra vous charger la page internet correspondante. Ensuite de quoi il stockera cette adresse quelque part pour le cas où vous vous en reserviriez plus tard. C’est pour cela que c’est un tout petit peu plus long de se connecter à un site sur lequel on n’est jamais allé auparavant: Il faut le temps que votre ordinateur appelle successivement tous les serveurs de DNS requis avant de pouvoir commencer à charger la page.

Je pense que l’illustration résume assez bien la structure du tout. Pour chaque intermédiaire, il y a un serveur de DNS dont l’adresse IP est stockée sur le serveur de DNS de l’échelon supérieur, et qui connait les adresses IPs de tous les ordinateurs qui lui sont directement rattachés, qu’il s’agisse d’ordinateurs faisant office de serveur DNS, ou d’hébergeur de site Web.

Pour conclure, précisions que dans l’adresse internet, si on enlève le premier mot, le reste repésente le nom de domaine. Donc dans le cas de mon blog, le nom de domaine est wordpress.com. Voila j’espère que j’ai été assez clair, c’est difficile d’expliquer tout ça de manière claire et concise sans utiliser trop de vocabulaire technique, donc posez vos questions dans les commentaires si vous avez besoin d’un éclaircissement :) .

C’est quoi le cache en informatique?

google_cache2

Le cache est une zone dans laquelle des fichiers sont stockés temporairement afin d’être plus faciles d’accès. Ainsi il y a par exemple une mémoire cache sur les disque durs pour y stocker des donnés en attente d’écriture ou de lecture. On trouve des mémoires cache dans de nombreux endroits, toujours pour la même raison: les fichiers y sont plus accessibles. Le cache existe aussi sur Internet. Il y a tout d’abord le cache de Firefox dans lequel les pages que vous avez téléchargées au moins une fois sont stockées (dans la limite de la mémoire allouée qui est de 50MO pa défaut sous Firefox). Ainsi il n’y a pas besoin de tout retélécharger lorsque vous rdemandez la page ou une page de me modèle et vous y gagnez du temps. Mais comment savoir si du coup votre page est vraiment à jour? Eh bien vous pouvez en force l’actualisation sans passer par le cache en appuyant sur F5.

Google aussi a un cache: Chaque fois que son robot passe sur une nouvelle page, il garde la page en mémoire, et ce qui est très intéressant, c’est que ce cache est accessible aux utilisateurs. Ainsi, si vous faites une recherche et que le site que vous recherchez à disparu, vous avez la possibilité de cliquer sur cache, si l’option est disponible près du résultat de la recherche, afin d’accéder à la page que Google a conservée en mémoire. Vous pouvez aussi taper dans la barre de recherche google (et pas dans la barre d’adresse, attention): cache:www.mon-site.com pour accéder à la version en cache du site que vous recherchez. Par exemple si on recherche mon blog dans le cache, on obtient un résultat similaire à celui que vous voyez sur l’image (que j’ai un peu bidouillée pour que le texte soit bien lisible).

Qu’est-ce qu’un Ping en informatique?

ping_ip

Bon ben déjà ça n’a rien à voir avec cette photo humoristique de geek :) . Basiquement lorsque vous allez sur internet, vous vous connectez depuis votre ordinateur à un autre ordinateur distant appelé serveur en passant par une ligne de téléphone (en gros). Et chaque fois que vous affichez une page internet sur votre ordinateur, ce qui se passe, c’est que votre ordinateur envoie une requête à l’ordinateur distant pour lui demander de lui envoyer la page.

La plus simple des requêtes que l’on peut envoyer à un ordinateur distant est le ping. C’est l’équivalent du “Allo?” que l’on se dit parfois au téléphone pour vérifier que son interlocuteur est toujours là. Elle est très utile lorsque l’on est en train de configurer un réseau, parce que si elle ne marche pas, on sait que ce n’est pas la peine de chercher à aller plus loin, il y a un problème. Elle peut être aussi utile à l’utilisateur lambda qui veut vérifier si un site est disponible ou pas. Pour cela, la procédure est la même sous Linux et sous Windows: ouvrez une invite de commande (c’est dans les accessoires), et tapez:

ping www.mon-site.com

En remplaçant www.mon-site.com par l’adresse internet du site dont vous voulez tester la réactivité. Si le terminal vous affiche qu’il a envoyé des paquets et reçu des réponses, c’est bon. Si par contre la réponse se fait attendre, c’est mal parti. Et au bout d’un moment il devrait vous dire que les paquets transmis ont été perdus, ce qui signifiera que le site que vous voulez pinger est hors-ligne.

Note: Certains serveurs de jeu en ligne avaient coutume d’afficher une mesure du ping pour indiquer au joueur le temps de latence du serveur. Le nombre affiché était alors directement proportionnel au temps mis par une requête ping pour voyager entre les deux ordinateurs. Lorsque la valeur atteignait des chiffres élevés, on disait alors communément que “ça lag”. Mais en pratique une telle mesure du temps de latence n’est pas pertinente, car toutes les requêtes ne sont pas traitées avec la même priorité, et une requête de type ping n’est absolument pas prioritaire.

Comment désinstaller une extension Firefox?

fasterfox

Installer des extensions pour personnaliser Firefox, c’est bien, mais parfois on n’est pas satisfait de l’effet obtenu, et on veut désinstaller l’extension pour que Firefox redevienne comme avant. Eh bien c’est tout à fait possible. Imaginons par exemple que suivant mon article d’hier, vous ayez installé Fasterfox. Et imaginons encore que vous ayez été déçu des performances de cet addon, par exemple parce que vous faites partie du faible poucentage d’internautes pour lesquels ça ne marche pas. Vous allez donc vouloir le désinstaller.Heureusement, c’est très facile:

  • Ouvrez le gestionnaire de modules complémentaires (Outils -> Modules Complémentaires)
  • Cliquez sur Extensions et parcourez la liste pour trouver celle que vous voulez désinstaller, dans notre exemple, c’est Fasterfox.
  • Vous devez avoir un écran semblable à celui de l’image.
  • Cliquez sur Désinstaller.
  • Un message s’ouvre pour vous demander si vous êtes sûrs
  • Cliquez à nouveau sur Désinstaller.
  • Votre extensions est désinstallée.
  • Redémarrez Firefox pour achever la désinstallation.

Quelques liens utiles pour programmer sereinement

www

A la demande de quelqu’un, voici quelques uns des liens que j’utilise fréquemment pour programmer.

1) Sites généraux:

  • Google code: très utile pour trouver un petit bout de code, un fichier.h mystérieux, etc..
  • Développez.com: Sur ce site vraiment très utile, vous trouverez tout un tas de tutoriels très bien fait, et le forum est actif est très utile également. Ce site m’a bien dépanné pendant mon stage de deuxième année :) .
  • Programmez.com: Site un peu similaire sur lequel on peut également trouver pas mal de tutos très intéressants.
  • Le site du zéro: On ne le présente plus, ce site est très adapté pour apprendre à partir du niveau débutant.
  • Et bien sûr, quoiqu’on n’y pense pas toujours, quelques articles de wikipédia dont celui sur la programmation ;) .
  • Enfin, wikibooks sera sans doute l’un de vos amis les plus chers, ce site est vraiment génial :) .

2) Sites spécifiques au langage C:

  • C++ Référence: très sympa pour retrouver rapidement le prototype d’une fonction et à quoi elle sert.
  • cplusplus.com: bon complément du précédent.

Notez que ce ne sont que les sites que je connais et que j’ai référencés dans les marque pages. Mais je ne prétend pas les avoir tous trouvés, ni avoir trouvé les meilleurs, donc pour des sites complémentaires sur le C, je vous laisser chercher ;) .

3) Sites spécifiques au langage java:

  • Javadoc online: Comme son nom l’indique, ce site permet d’accéder online à la javadoc commune, vraiment très très utile. Je vous conseille de le mettre en anglais, car parfois on tombe sur des pages d’explication en français, mais qui ne sont pas de la vraie javadoc.

Et une fois encore je me limiterai à ça, même si j’ai tout plein de liens divers dans mes favoris sur le sujet. De toute manière beaucoup pointent vers l’un des sites généraux du premier paragraphe. Si vous avez besoin d’un site précis et que vous ne trouvez vraiment pas, laissez toujours un com, je regarderai si j’ai ça quelque part ;) .

Autres langages:
Concernant les autres langages, je n’ai pas de site particulier les concernant, à part quelques pages spécifiques par ci par là. Pareil, jetez un coup d’oeuil au sites généraux, vous devriez pouvoir y trouver votre bonheur :o ).

Compilation séparée (3) – Fichiers objets et compilation manuelle.

compilation_separee-3
Bon apparemment c’est un thème qui intéresse pas mal de visiteurs, et c’est tant mieux. Je rappelle pour ceux qui tomberaient précisément sur cette page que cet article s’inscrit dans une suite de quatre articles traitant de la compilation séparé, entre les articles Généralités sur la compilation séparée en C et Compilation séparée (2) – Dépendances qui le précèdent, et l’article Compilation séparée (4) – Le Makefile, qui le suit. Aujourd’hui nous allons nous intéresser aux fichiers objet, et étudier la compilation manuelle du projet en ligne de commande.

6) Les fichiers objet.

Je suis loin de maîtriser parfaitement ce concept, donc j’ai effectué quelques recherches sur Google. Il s’est très vite avéré que la documentation en français disponible à ce sujet était plus que limitée, donc comme d’habitude je suis allé voir sur des sites en anglais. Je vais essayer de parler simplement.

On se souvient que le compilateur a pour rôle de traduire un fichier source .c écrit dans un langage intelligible par l’être humain en un fichier contenant du code machine compréhensible par un ordinateur. Or il se trouve que la compilation passe par plusieurs étapes intermédiaires, et que pour chacune de ces étapes, on peut demander au compilateur de générer le fichier correspondant à cette étape.

Par exemple il va y avoir une étape où les #include et les #define vont prendre effet et où les commentaires vont être supprimés. Il va aussi y avoir une étape où le code C est transformé en langage machine, et il y a aussi une dernière étape appelée “édition des liens” durant laquelle toutes les dépendances entre fichiers différents sont résolues par inclusion du code correspondant dans un seul fichier (ce n’est pas tout à fait exact, mais ça suffit pour comprendre).

Et en gros le fichier objet correspond au moment au moment situé entre la traduction du C en langage machine et l’étape d’édition des liens. C’est une étape intéressante, car c’est la dernière où les fichiers peuvent rester séparés, vu qu’après tous deviennent nécessaires pour générer l’exécutable final.

7) Compilation des fichiers objet.

Par conséquent en compilation séparée, et dans les buts d’optimisation expliqués plus haut, on va compiler tous les fichiers en fichiers objets et s’arrêter là. Ensuite, on génèrera l’exécutable final à partir d’un programme de test, par exemple test.conduite.c (non représenté sur le dessin). Occupons nous tout d’abord de humain.o:

On va générer ce fichier à l’aide de la commande suivante: gcc -c humain.c

Cette commande est destinée à être exécutée dans un terminal. Bien sûr, il faut naviguer dans celui-ci jusqu’à votre répertoire de travail. Pour ceux qui utilisent un logiciel pour développer, ils ne le voient généralement pas, mais c’est ce que fait le système lorsqu’ils cliquent sur le bouton compiler. Dans cet exemple, je me place dans le cas le plus simple et pratique, pratique, celui du développement à l’aide d’un terminal et de fichiers textes sous Linux.

Notons que la commande donnée si dessus est celle utilisée lorsque l’on est sûr de son coup. En général lorsque l’on compile la première fois, on utilisera plutôt une commande du type suivant, dont je vais détailler la signification: gcc -g -Wall -c humain.c

  • gcc est le nom du compilateur C.
  • humain.c est le nom du fichier source
  • le reste, ce sont des options du compilateur, on le redonnait au tiret par lequel elles commencent.
  • -g demande au compilateur d’ajouter dans le code des balises qui vont permettre d’utiliser un debugger pour le cas échéant pouvoir analyser ce qui ne va pas dans le programme et où ça plante. Très pratique pour détecter la source des erreurs de segmentation autrement qu’en mettant des puts(“coucou”) partout dans le code.
  • -Wall demande au compilateur de signaler tout ce qui n’empêche pas la compilation, mais qu’il trouve bizarre. Et en général on essaiera d’éliminer ces avertissements, car lorsque le programme ne fait pas ce qu’on attend de lui, les problèmes viennent souvent de là.
  • enfin l’option -c demande au compilateur d’arrêter la compilation au fichier objet.

Notons qu’il n’est pas fait mention du fichier .h. Pourtant celui-ci est utilisé lors de la compilation par le biais du #include “humain.h” que vous n’aurez pas manqué de mettre dans le fichier humain.c

8.) Fin de la compilation:

Alors pour générer un exécutable qui marche à partir du projet décrit par l’image, il faut encore

  1. obtenir le fichier voiture.o via la commande gcc -g -Wall -c voiture.c,
  2. obtenir le fichier conduire.o via la commande gcc -g -Wall -c conduire.c,
  3. générer l’exécutable final via la commande suivante:

gcc -g -Wall -o Programme test.conduite.c humain.o voiture.o conduire.o

“Programme” est le nom de l’exécutable que vous allez générer. Vous remarquerez que l’option -o est utilisée. Elle indique au compilateur qu’il y a des fichiers .o à utiliser dans la compilation de l’exécutable final à partir du fichier test.conduite.c (qui sera le seul à inclure une méthode main). Concernant les options -g et -Wall, elles sont bien évidemment optionnelles :) .

Voila pour aujourd’hui, j’espère avoir été assez clair (n’hésitez pas à poser des questions). Demain, si j’ai le temps, je concluerai sur la compilation séparée avec un article traitant de la rédaction d’un makefile.