Le protocole HTTP est décrit dans la RFC 2616. Pour plus de détails, je vous conseille de la télécharger.
Pour shématiser, c'est un protocole texte qui permet l'échange de composants (documents, images, fichiers executables).A l'heure actuelle, ce protocole est devenu incontournable et il est de plus en plus utilisé. Il sert de protocole de transport au protocole SOAP.
Le port par défaut du protocole HTTP est 80.
Pour réaliser des tests, on peut se limiter à la version 1.0. Dans ce cas, chaque échange de composants donne lieu à une nouvelle connexion TCP/IP.
La version 1.1 du protocole normalise principalement les instructions de cache, le pipeline (envoi de plusieurs requêtes l'une à la suite de l'autre sans attendre les réponses) et les connexions persistantes (possibilité d'utiliser la même connexion pour plusieurs requêtes)
Une requête HTTP a l'allure suivante :
GET /monfichier.txt HTTP/1.0 Host: www.monserver.com
Si on doit passer par un proxy :
GET http://www.monserver.com/monfichier.txt HTTP/1.0 Host: www.monserver.com
En C, cela donne :
char szRequete[] = "GET /monfichier.txt HTTP/1.0\r\n" "Host: www.monserver.com\r\n" "\r\n"
On remarque que la requête se termine par 2 "\r\n"
La réponse à la requête précédente peut être :
HTTP/1.0 200 OK Content-Type: text/plain Connexion: Close coucou
En C, cela donne :
char szReponse[] = "HTTP/1.0 200 OK\r\n" "Content-Type: text/plain\r\n" "Connexion: Close\r\n" "\r\n" "coucou"
Comme pour la requête, on remarque que la réponse se termine par 2 "\r\n"