Equivalent de Telnet sous WinXP en plus agréable - Divers - Programmation
Marsh Posté le 03-08-2005 à 19:04:36
Merci.
je viens de télécharger Putty, mais je ne parviens pas à le faire marcher ou alors ne comprends pas comment ca marche.
Normalement, ce que je voudrais: je tape n'importe quelle URL plus Port = 80, et ca me retourne le résultat de la requête... Mais là, a priori, ça ne marche pas, alors qu'avec Telnet, ça marche... Ai je raté une marche?
Personnellement, c'est comme ça que j'essaie d'utiliser Putty:
Je mets mon URL dans "Host Name" et "80" dans port. Ensuite, je choisis "Telenet" comme protocole...
Marsh Posté le 04-08-2005 à 09:23:33
je ne sais pas si c'est une faute de langage, mais c'est le nom d'hôte que tu dois mettre dans host name, pas l'URL
Par ailleurs, le protocole utilisé n'est pas telnet, mais raw. Le protocole telnet, c'est pour ouvrir un shell sur un serveur telnet ...
Je te donnes un exemple :
- serveur www.google.fr
- port 80
- protocole raw
- et la tu tapes
GET / HTTP/1.1
Host: www.google.fr
Marsh Posté le 04-08-2005 à 11:32:18
Merci beaucoup, si il y avait confusion entre hostname et URL, c'est que cette confusion était aussi présente dna sma tête, vu que je n'arrivais pas à faire marcher le truc. En fait, c'était le protocole (HTTP/1.1) qu'il me manquait.
Mais j'ai toujours un problème... Explication:
Le but pour moi est de tester un serveur Apache local. Mais le problème, c'est qu'avec IE, la requête marche bien alors qu'avec Putty, le serveur me renvoie un "400".
Voici le log fourni par Apache:
Code :
|
LEs deux requêtes (IE puis Putty) sont exactement les mêmes.
Voici ce que me donne error.log concernant la requête Putty:
Code :
|
Bien entendu, la requête IE ne génère pas d'erreur...
Et ensuite, Putty me retourne un "Connection closed by remote host".
Bizarre, non?
Marsh Posté le 04-08-2005 à 11:55:27
Non,
regarde les rfc si tu veux en savoir plus
les logs d'apache ne contiennent pas toute la requete. Une ligne Host: est indispensable au protocole HTTP/1.1
Marsh Posté le 04-08-2005 à 11:56:40
Voici à quoi ressemble une requete standard
GET / HTTP/1.1
Host: localhost:1234
User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7.5) Gecko/20041109 Firefox/1.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
(ici Firefox)
Marsh Posté le 04-08-2005 à 12:17:51
mcjoedassin a écrit : Voici à quoi ressemble une requete standard |
La plupart de ces paramètres sont facultatifs, donc requête "standard", c'est vite dit. Usuelle, peut-être ... (et pour lire les réponses, c'est pas forcément conseillé de laisser le gzip,deflate )
Marsh Posté le 04-08-2005 à 12:20:29
s/standard/usuelle/
c'était pour donner un ordre d'idée
seul le Host est obligatoire a priori. Maintenant certains sites vérifient également le User-Agent par exemple ...
Marsh Posté le 04-08-2005 à 12:28:43
non, même le Host est faculatatif. Il n'est pas forcément nécessaire de rappeler à quelle machine tu es connecté, si tu es déjà dessus
Mais comme toujours, la réponse que tu vas obtenir dépendra de la configuration des serveurs et des sites
Marsh Posté le 04-08-2005 à 12:32:35
Bon, en fait, je viens un peu de consulter les RFC (quelle big doc)
Et en faisant un:
Code :
|
Ca marche...
Mais je peux également inclure un HOST vide si dans mon URI, je mets une chemin absolu.
Donc:
Code :
|
Marche également...
Mais là où je me suis fait avoir, c'est que Telnet à la base ne demande pas de mettre la requête complète, juste l'URI... Alors qu'ici, on doit ecrire la requeête avec tous les champs nécessaires.
Ce que je ne comprends pas, c'est à quoi ca sert de se connecter avec Putty grace à l'écran initial Host/Port?
Puisque finalement, tout est reprécisé dans la requête? Ne pourrrait on pas lancer une requête sans passer par cette connexion intiale?
D'autre part, Apache ne me fait pas part du fait que Putty s'est connecté...
Enfin, comment faire pour avoir le corps complet des requêtes arrivant sur Apache? N'y a til pas moyen de le faire facilement? Ou alors, il faut peut etre que je modifie mon httpd.conf?
Marsh Posté le 04-08-2005 à 12:35:28
faire :
GET /myFile.html HTTP/1.1 |
une fois que tu es connecté sur le serveur fonctionnera tout aussi bien sur la majorité des serveurs ... Je ne vérifierai pas dans les RFC si c'est juste un comportement laxiste des serveurs ou non, mais pour l'instant, je n'ai pas eu d'ennui avec ce genre de requête
Marsh Posté le 04-08-2005 à 12:39:27
theshockwave a écrit : faire :
une fois que tu es connecté sur le serveur fonctionnera tout aussi bien sur la majorité des serveurs ... Je ne vérifierai pas dans les RFC si c'est juste un comportement laxiste des serveurs ou non, mais pour l'instant, je n'ai pas eu d'ennui avec ce genre de requête |
bah nan, ca ne marche pas en faisant juste un GET de la sorte, et c'est bien le sujet de la suite de mon topic... C'est Apache même qui m'a dit "je n'accepte pas, vas voir les RFC", cf mon post plus haut avec mon error.log
Marsh Posté le 04-08-2005 à 13:36:14
theShOcKwAvE> non. Tu n'as pas du tester. un exemple : google
Yoyo@> tout dépend de la configuration d'apache (les VirtualHosts).
Si t'as un VirtualHost * tu peux te connecter en mettant n'importe quoi.
En fait le truc est que tu peux donner plusieurs noms d'hôtes à une même machine. Donc ton client se connecte à une même IP et pourtant il va sur deux sites différents. Le serveur voit un nom d'hôte, il te sert la page correspondante.
Par ailleurs, si la commande Host est obligatoire pour HTTP/1.1, elle est facultative pour HTTP/1.0. Par exemple, si tu fais
GET / HTTP/1.0
La plupart des sites de donneront la page que tu veux, mais certains sites n'accepterons qu'avec une commande Host.
Enfin, il y a une dernière syntaxe qui est le format "proxy" qui te permet d'écrire :
GET http://www.google.fr/ HTTP/1.0
voir même carrément
GET http://www.google.fr/ HTTP/1.1
C'est peut-être ça dont tu voulais parler ...
Marsh Posté le 04-08-2005 à 13:40:36
mcjoedassin a écrit : theShOcKwAvE> non. Tu n'as pas du tester. un exemple : google |
Merci pour ces renseignements.
Je suis justement en train d'étudier tout ça concernant Apache (les VirtualHost et autres). Et d'ailleurs, c'est pour ça que je voulais un client sur mon ordi (genre Telnet) qui puisse me montrer ce qu'il se passe dessous.
Pour ma part, concernant Apache et les VirtualHost (enfin, peut être que ma question ne concerne pas les VirtualHost, je n'en sais rien)
Si je tape dans mon browser: http://www.hardware.fr, qu'est ce qu'il se passe? Est ce que le serveur de hfr va voir que j'ai demandé http://www.hardware.fr, oa alors n'en saura t il rien, car finalement, le DNS aura remplacé www.hardware.fr par l'IP du serveur hfr?
Marsh Posté le 04-08-2005 à 13:48:46
le browser envoit en HTTP/1.1 avec le nom d'hôte qu'il extrait de l'URL.
Marsh Posté le 04-08-2005 à 13:52:54
Ah oui, ca veut dire que hfr va recevoir qqchose du type:
Code :
|
En fait, IE ira taper à la bonne adresse grace au DNS, mais il aura entre temps extrait de l'URI le nom d'host qu'il mettra dans HOST, c'est ca?
Marsh Posté le 04-08-2005 à 14:17:41
ouip
http://forum.hardware.fr/hardwarefr/...
sera transformé en
http => protocole http, port 80 par défaut
forum.hardware.fr => nom d'hôte
forum.hardware.fr + DNS => adresse IP
/hardwarefr/... => page à demander
quand tu passes par un proxy c'est pareil sauf que
- tu fais le GET sur l'URL complete
- tu te connectes sur l'IP: port du proxy
Marsh Posté le 04-08-2005 à 14:18:04
mcjoedassin a écrit : theShOcKwAvE> non. Tu n'as pas du tester. un exemple : google |
J'ai pris une mauvaise habitude avec mon serveur personnel, alors
Marsh Posté le 04-08-2005 à 14:22:39
mcjoedassin a écrit : ouip |
Ouh là, si on commence à rajouter des proxies...
Quand tu me parles de proxy (je n'y connais rien, je sais juste que c'est une passerelle et que le lien n'est pas direct), veux dire : au cas ou le serveur hardware.fr ne serait pas atteint directement, mais à travers un autre serveur (le proxy). En fait, ca veut dire que le DNS donnera l'IP du proxy quand mon browser lui demandera hardware.fr, c'est ca?
Marsh Posté le 04-08-2005 à 14:31:40
regarde c'est très simple - rien a voir avec le DNS :
direct ca donne :
$ telnet forum.hardware.fr 80
GET / HTTP/1.1
Host: forum.hardware.fr
HTTP/1.1 200 OK
...
et via un proxy :
$telnet proxy 8080
GET http://forum.hardware.fr/ HTTP/1.1
Host: forum.hardware.fr
HTTP/1.1 200 OK
...
Marsh Posté le 04-08-2005 à 14:53:24
Merci!
Ta façon de m'expliquer, c'est
$ telnet = la comande que je tape
GET... = ce que telnet va générer comme requête pour moi?
Si c'est le cas, alors en faisant: $telnet proxy 8080, comment mon proxy connait il l'URI ou je veux aller?
Marsh Posté le 04-08-2005 à 15:00:29
oui. Si tu étais sur une ligne de commande tu ferais
telnet hote service |
ensuite telnet ici ne génère rien. Il envoit juste les données que tu tapes et reçoit direct les données du serveur, qu'il t'affiche. En fait la commande telnet permet deux choses : de connecter à un serveur telnet en utilisant le protocole adéquat OU le fonctionnement présent à savoir des envois de messages.
Justement, pour savoir où il doit aller, le proxy regarde ton GET et il voit http://serveur/file donc il sait qu'il doit se connecter au serveur et chercher le fichier file
Marsh Posté le 04-08-2005 à 15:28:35
D'accord, en relisant ton explication plus haut, je pense que j'ai compris:
je me connecte au proxy grace à Telnet, en connaisance de cause et je demande au proxy de se connecter sur hardware.fr, c'est ca? Au final, hardware.fr ne saura pas qui est le client original, il ne verra que l'IP du proxy?
Marsh Posté le 04-08-2005 à 15:33:13
Oui, sauf que...
certains proxy rajoutent une ligne dans la requete, genre
GET machin
Host: bidule
X-Forwarded-For: 1.2.3.4 <- ton adresse IP
de plus toutes tes connexions passent par un proxy, donc finalement, pour la confidentialité, ça se discute.
Les proxy seraient plutôt utiles dans une entreprise qui a un réseau local et qui souhaite que ses employés aient accès au web. Du coup, il relient le proxy à Internet + au réseau local, et comme ça les employés peuvent voir les pages web via proxy.
Marsh Posté le 04-08-2005 à 15:49:41
D'accord!
Par contre,tu me dis que toutes mes connexions passent par proxy (ce qui me parait dans le fond évident), comment ca se fait que du coté d'Apache, quand on regarde la tête de la requête, on voit l'IP de la source et non pas celle du proxy?
Par exemple, un ami se connectait chez moi, et c'était son IP que je voyais dans les logs....
Marsh Posté le 04-08-2005 à 15:54:10
tes connexions passent par un proxy si tu as configuré ton navigateur pour qu'il en soit ainsi !
Marsh Posté le 04-08-2005 à 15:57:47
Bah non, je n'ai rien configuré de tel.
D'ailleurs, si je voulais que mes connexions passent par un proxy, il me faudrait trouver un proxy, ce qui est une démarche volontaire et payante, non?
Donc, le commun des mortels ne passe pas par proxy?
Marsh Posté le 04-08-2005 à 16:00:54
Citation : D'ailleurs, si je voulais que mes connexions passent par un proxy, il me faudrait trouver un proxy, ce qui est une démarche volontaire et payante, non? |
Tu peux trouver des listes de proxy gratuits sur Internet éventuellement, si tu veux voir comment ça marche. Ca te ralentit plus qu'autre chose...
Citation : Donc, le commun des mortels ne passe pas par proxy? |
La plupart, ceux qui se connectent de chez eux ...
Maintenant d'une entreprise, ce n'est pas pareil !
Marsh Posté le 04-08-2005 à 16:43:00
OK, parfait!
Je dois m'absenter quelques jours, mais merci pour toutes ces réponses.
J'étudierai tout ça dès mon retour,
Marsh Posté le 03-08-2005 à 10:01:42
Salut,
Je suis en train de faire des tests HTTP, et je voulais un peu voir comment ça fonctionnait.
D'où l'idée de faire un telnet.
Le problème, c'est qu'en lancant Telenet sous WinXP en ligne de commande, rien n'apparaît. Puis ensuite, le résultat est peu exploitable.
Connaissez vous il un client du même ype que Telenet, si possible avec une interface graphique et léger? Et si possible gratuit.
Merci.
Message édité par Yoyo@ le 03-08-2005 à 13:59:05