Philou38 a écrit :
T'as vu Ced ? Il a édité pour rajouter des insultes. Tu l'as piqué au vif
Alors gwen, on a besoin d'un remontant (le message de Ced) pour tricker un peu plus longtemps :mdr:
Qu'est-ce qu'un proxy HTTP. Bien souvent lorsque l'on surfe sur Internet, le navigateur Web ne va pas directement demander les pages/images que l'on regarde au serveur Web du site que l'on regarde. Le navigateur va demander les fichiers à une autre machine (toujours la même). C'est cette machine qui va chercher les pages sur le serveur Web que l'on veut consulter. Une fois que cette machine intermédiaire à récupéré la pages/images elle fait suivre au navigateur Web. Pour que cela fonctionne, la machine intermédiaire fait tourner un programme que l'on appèle un proxy web ou proxy http.
Vous savez maintenant ce qu'est un proxy http mais à quoi cela peut-il servir ? En réalité, cela peut avoir de nombreuses utilitées. En voici quelques unes :
Généralement le proxy sert de cache web. Ce qui veut dire qu'il va demander les fichiers que l'on souhaite et il les places sur un des ces disques. Si une autre personne fait la demande de la même page au proxy, il se contentera d'interroger le serveur web pour savoir si la page à été mise à jour. Si ce n'est pas le cas, il retournera le fichier qu'il a en local et évitera un transfert sur le réseau.
Une autre utilité qui vas souvent de paire avec la précédente c'est le filtrage. En effet, comme vous demandé vous pages à ce serveur proxy, il suffit de lui dire ce que l'on n'a pas le droit de voir ou ce que l'on a le droit de voir et il ne retournera que les pages qui sont autorisées a être vues.
Une autre application bien utile c'est la possibilité de permettre à des machines qui ne sont pas sur Internet à consulter des sites Web. En effet, Internet est basé sur le protocole IP. Chaque machine a une adresse IP. Grâce à cette adresse, les machines sont capables d'échanger avec d'autres machines grâce à des routeurs qui en fonction de l'adresse trouve le bon chemin à prendre. Seulement, il existe des plages d'adresses réservées pour les réseaux privés. Dans ce cas, ces adresses ne sont pas routés sur Internet car il peut y avoir de nombreux réseaux privés qui utilisent ces plages d'adresses. Il n'y a donc pas de problèmes à utiliser ces adresses car elles ne sont à personnes (ou plutôt à tous le monde). Maintenant, si on place une machine qui est reliée à notre réseau privé est aussi à Internet, cette machine peut dialoguer à la fois avec toutes les machines sur Internet grâce à sa carte, son modem... relié à Internet et aussi avec toutes les machines qui sont sur notre réseau privé. Mais les machines du réseau privé ne peuvent pas dialoguer avec une machine sur Internet car leur adresse réseau n'est pas connue sur Internet, la machine avec laquelle on veut dialoguer ne sera donc pas où renvoyer le résultat. Il suffit pour résoudre ce problème de placer un proxy http sur la machine qui est reliée à Internet et de l'utiliser pour toutes les autres machines du réseau privé. Du coup, la machine qui fait les demandes au serveur web et la machine qui à une adresse Internet valide et qui peut donc dialoguer avec le serveur Web.
Une dernière application c'est la possibilité de passer à travers un système de filtrage réseau. C'est rarement une utilisation que l'on met en avant mais elle existe bien. Par exemple, si je suis sur une machine avec une adresse Internet valide mais qu'entre ma machine est la machine destination il y a une autre machine qui fait suivre mes paquets réseaux mais qui avant de les faire suivrent vérifie certaines régles et ne laisse passer qu'une partie de mes paquets qui sont autoriser. Pas les autres. Ce type de machine s'appèle un firewall. Dans le cas du web, le protocole utilisé pour échanger les fichiers (les pages web sont composées de plusieurs fichiers) et le protocole HTTP. Ce protocole est généralement utilisé au dessus du protocole TCP lui même basé sur le protocole IP. Un protocole est une convention à respecter pour que les machines se comprennent. Notre firewall comprend généralement le protocole TCP mais pas HTTP. Dans le protocole TCP, un numéro appelé numéro de port permet au protocole TCP de savoir à quelle application qui tourne sur un ordinateur il faut donner le paquet. La plupart des serveurs web (programmes qui comprennent le protocole HTTP et renvoient les fichiers demandés) se trouve derrière le port 80. Maintenant, il suffit d'interdire dans le firewall les paquets TCP avec le port 80 comme destination pour interdire aux gens de surfer sur le web. Si on veut seulement controller ce qu'il font sur le web, on place un proxy http, on configure leurs navigateurs pour qu'ils l'utilisent et on interdit l'accès directe (sans passer par le proxy) pour aller sur le web. Seul le proxy est alors autorisé à aller sur le web. Seulement, il est très fréquent que le firewall autorise des paquets TCP avec d'autres ports que le port 80 à passer sur Internet. En effet, il existe des applicatifs qui ont besoin d'un accès direct ou qui n'ont pas de proxy. Ces paquets peuvent donc passer à travers le firewall. Maintenant, si l'on dispose d'une machine sur Internet sans firewall. Il suffit de placer sur cette machine un proxy web et configurer notre machine local (celle qui est limité par le firewall) pour utiliser ce proxy web. Seulement, si on veut que cela fonctionne (le firewall laisse passer), il suffit de faire démarrer le proxy http sur un port TCP qui est autorisé par le firewall. Bref de faire croire au firewall qu'il s'agit d'un serveur pour un autre type d'applications qui est autorisé. Comme applications autorisées on trouve souvent :
POP3, qui sert à consulter ces emails. POP3 est sur le port TCP 110 ou UDP (un autre protocole) 110.
FTP, qui sert aux échanges de fichiers (un peu comme HTTP). On le trouve sur le port TCP 21 (et aussi 20 dans l'autre sens).
SMTP, qui permet le transfert de mail entre serveur de mail. On le trouve sur le port TCP 25.
et bien d'autres protocoles...
Maintenant que vous savez ce qu'est un proxy http et à quoi cela sert, je vous présente le code perl d'un petit proxy http qui ne fait pas de cache, ni de filtrage, qui ne supporte que la command GET du protocole HTTP et qui peut démarrer sur n'importe quel port TCP. Voici le code :