Terminologie réseau (WinHTTP)
Lors du développement d’une application qui utilise les services HTTP Microsoft Windows (WinHTTP), il est important de comprendre les concepts et la terminologie suivants liés à la mise en réseau en général et au protocole HTTP en particulier.
- transactions HTTP
- serveurs proxy
- modes synchrones et asynchrones
- d’authentification
HTTP Transactions
Lorsque vous travaillez avec des transactions HTTP, vous échangez des informations avec un autre ordinateur ailleurs sur un réseau. Les informations échangées peuvent être un fichier qui contient du texte ou du multimédia, ou il peut s’agir des résultats d’une requête de base de données. Une information échangée sur un réseau est appelée 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 rassemble plusieurs ressources à partir d’autres serveurs, compile les informations dans une ressource et envoie cette ressource au client.
Le processus d’obtention d’une ressource à l’aide du protocole HTTP nécessite qu’une série de messages soit échangée 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 de l’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é une réponse HTTP. Une réponse HTTP se compose des composants suivants.
- Numéro de version du protocole, code d’état, texte d’état
- En-têtes
- Corps de l’entité
La réponse indique que la demande ne peut pas être traitée ou fournit des informations demandées. Selon le type de requête, il peut s’agir d’informations sur une ressource, telles que sa taille et son type, ou peut être une partie ou l’ensemble de la ressource elle-même. La partie d’une réponse qui inclut une partie ou la totalité de la ressource demandée est appelée « données de réponse » ou « corps d’entité », et la réponse n’est pas terminée 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 demande envoyée par un client soit finalement reçue par le serveur cible, la transaction passe d’abord par un serveur proxy. Un proxy intercepte la requête et peut même modifier la requête avant de l’envoyer sur le serveur. Lorsque le serveur répond, la réponse passe également par le proxy avant qu’elle ne soit 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.
- Agir en tant que 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 tous les serveurs proxy qui interceptent vos transactions HTTP. Pour plus d’informations sur l’utilisation de l’outil de configuration proxy, consultez ProxyCfg.exe, un outil de configuration 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 jusqu’à ce qu’une erreur se produise. Par exemple, lorsque votre application demande une ressource à l’aide de WinHTTP de façon synchrone, elle ne passe pas à l’étape suivante tant que les données demandées n’ont pas été reçues.
Un modèle asynchrone, d’autre part, permet à une application d’effectuer d’autres tâches pendant qu’elle attend 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’a pas terminé, la fonction retourne une erreur. Lorsque vous utilisez WinHTTP de façon asynchrone, les événements com (Component Object Model) et le rappel sont disponibles pour notifier une application de progression dans une opération HTTP.
Authentification
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 et, si le système détecte une correspondance, l’accès est accordé dans l’étendue spécifiée dans la liste d’autorisations de l’utilisateur.
Les fonctions WinHTTP prennent en charge à la fois l’authentification serveur et proxy pour les sessions HTTP. WinHTTP prend en charge les schémas d’authentification suivants : Basic, Digest (voir RFC 2617), Authentification NTLM, Negotiate/ Kerberoset Microsoft Passport 1.4. Pour plus d’informations 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.