Terminologie réseau (WinHTTP)
Lors du développement d’une application qui utilise Microsoft Windows HTTP Services (WinHTTP), il est important de comprendre les concepts et la terminologie suivants qui concernent la mise en réseau en général et le protocole HTTP en particulier.
HTTP Transactions
Lorsque vous utilisez des transactions HTTP, vous échangez des informations avec un autre ordinateur sur un réseau. Les informations échangées peuvent être un fichier qui contient du texte ou du contenu multimédia, ou des résultats d’une requête de base de données. Une information échangée sur un réseau s’appelle une ressource. Normalement, l’ordinateur qui envoie une ressource est le serveur et l’ordinateur qui reçoit cette ressource est un client. Toutefois, il est également possible pour un client de publier des données sur un serveur. Parfois, une transaction HTTP implique un serveur de niveau intermédiaire. Un serveur de niveau intermédiaire collecte plusieurs ressources à partir d’autres serveurs, compile les informations en une seule ressource et envoie cette ressource au client.
Le processus d’obtention d’une ressource à l’aide du protocole HTTP nécessite l’échange d’une série de messages entre le client et le serveur. Le client commence la transaction en envoyant un message qui demande une ressource. Ce message est appelé une requête HTTP, ou parfois simplement une requête. Une requête HTTP se compose des composants suivants.
- Méthode, URI (Uniform Resource Identifier), numéro de version du protocole
- En-têtes
- Corps d’entité
Lorsqu’un serveur reçoit une demande, il répond en envoyant un message au client. Le message envoyé par le serveur est appelé réponse HTTP. Une réponse HTTP se compose des composants suivants.
- Numéro de version du protocole, code status, texte status
- En-têtes
- Corps d’entité
La réponse indique que la demande ne peut pas être traitée ou fournit les informations demandées. Selon le type de demande, il peut s’agir d’informations sur une ressource, telles que sa taille et son type, ou peut être tout ou partie de la ressource elle-même. La partie d’une réponse qui inclut tout ou partie de la ressource demandée est appelée « données de réponse » ou « corps d’entité », et la réponse n’est pas complète tant que toutes les données de réponse ne sont pas reçues.
Pour plus d’informations sur les transactions HTTP et le protocole HTTP, consultez RFC 2616, Hypertext Transfer Protocol — HTTP/1.1.
Serveurs proxy
Bien qu’une requête envoyée par un client soit finalement reçue par le serveur cible, il arrive que la transaction passe d’abord par un serveur proxy. Un proxy intercepte la demande et peut même la modifier avant de l’envoyer au serveur. Lorsque le serveur répond, la réponse passe également par le proxy avant d’être transférée au client. Le proxy peut modifier les en-têtes de cette réponse.
En interceptant et en traduisant des transactions réseau, un proxy peut :
- Protégez le client en surveillant les transactions potentiellement dangereuses.
- Permettre au client de communiquer à l’aide de protocoles qui peuvent ne pas être implémentés par le logiciel client.
- Faire office de passerelle entre un réseau privé et un réseau public.
L’API WinHTTP inclut un outil de configuration de proxy qui vous permet de fournir à WinHTTP des informations sur les serveurs proxy qui interceptent vos transactions HTTP. Pour plus d’informations sur l’utilisation de l’outil de configuration de proxy, consultez ProxyCfg.exe, un outil de configuration de proxy.
Modes synchrones et asynchrones
Il existe deux modèles de programmation pour obtenir des ressources sur un réseau à l’aide de WinHTTP : les modèles synchrones et asynchrones. Dans un modèle synchrone, un appel à une fonction ou à une méthode ne se termine pas tant que l’opération demandée n’est pas terminée ou qu’une erreur ne se produit pas. Par exemple, lorsque votre application demande une ressource à l’aide de WinHTTP de manière synchrone, elle ne passe pas à l’étape suivante tant que les données demandées n’ont pas été reçues.
En revanche, un modèle asynchrone permet à une application d’effectuer d’autres tâches en attendant que la ressource soit récupérée. Si une autre fonction ou méthode WinHTTP est appelée et qu’une opération précédente n’est pas terminée, la fonction retourne une erreur. Lors de l’utilisation asynchrone de WinHTTP, les événements et le rappel com (Component Object Model) sont disponibles pour notifier une application de la progression d’une opération HTTP.
Authentication
L’authentification est le processus par lequel un proxy HTTP ou un serveur HTTP valide les informations de connexion d’un utilisateur avant d’autoriser l’accès aux ressources. Différents schémas d’authentification sont utilisés sur Internet. En règle générale, le nom et le mot de passe d’un utilisateur sont comparés à une liste autorisée. Si le système détecte une correspondance, l’accès est accordé dans la mesure spécifiée dans la liste d’autorisations pour l’utilisateur.
Les fonctions WinHTTP prennent en charge l’authentification du serveur et du proxy pour les sessions HTTP. WinHTTP prend en charge les schémas d’authentification suivants : De base, Digest (voir RFC 2617), Authentification NTLM, Negotiate/ Kerberos et Microsoft Passport 1.4. Pour obtenir des informations détaillées sur l’authentification, ainsi qu’un exemple d’utilisation de l’authentification dans une application Microsoft Visual C++, consultez Authentification dans WinHTTP.
Pour plus d’informations sur les considérations de sécurité relatives à l’authentification de base et Passport, consultez Considérations relatives à la sécurité WinHTTP.