Netwerkterminologie (WinHTTP)
Bij het ontwikkelen van een toepassing die gebruikmaakt van Microsoft Windows HTTP Services (WinHTTP), is het belangrijk om de volgende concepten en terminologie te begrijpen die betrekking hebben op netwerken in het algemeen en het HTTP-protocol in het bijzonder.
- HTTP-transacties
- proxyservers
- synchrone en asynchrone modi
- verificatie
HTTP-transacties
Wanneer u met HTTP-transacties werkt, wisselt u informatie uit met een andere computer elders in een netwerk. De uitgewisselde informatie kan een bestand zijn dat tekst of multimedia bevat, of het kan de resultaten van een databasequery zijn. Een stukje informatie dat via een netwerk wordt uitgewisseld, wordt een resourcegenoemd. Normaal gesproken is de computer die een resource verzendt de server en de computer die die resource ontvangt een client. Het is echter ook mogelijk dat een client gegevens naar een server post. Soms omvat een HTTP-transactie een server in de middelste laag. Een server in de middelste laag verzamelt verschillende resources van andere servers, compileert de informatie in één resource en verzendt die resource naar de client.
Voor het verkrijgen van een resource met behulp van het HTTP-protocol moet een reeks berichten worden uitgewisseld tussen de client en de server. De client begint de transactie door een bericht te verzenden dat een resource aanvraagt. Dit bericht wordt een HTTP-aanvraag genoemd, of soms alleen een aanvraag. Een HTTP-aanvraag bestaat uit de volgende onderdelen.
- Methode, URI (Uniform Resource Identifier), protocolversienummer
- Headers
- Hoofdtekst van entiteit
Wanneer een server een aanvraag ontvangt, reageert deze door een bericht terug te sturen naar de client. Het bericht dat door de server wordt verzonden, wordt een HTTP-antwoord genoemd. Een HTTP-antwoord bestaat uit de volgende onderdelen.
- Protocolversienummer, statuscode, statustekst
- Headers
- Hoofdtekst van entiteit
Het antwoord geeft aan dat de aanvraag niet kan worden verwerkt of dat de gevraagde informatie kan worden verstrekt. Afhankelijk van het type aanvraag kan dit informatie zijn over een resource, zoals de grootte en het type, of kan dit een of meer van de resources zelf zijn. Het deel van een antwoord met een deel van de aangevraagde resource wordt de 'antwoordgegevens' of de 'hoofdtekst van de entiteit' genoemd en het antwoord is pas voltooid als alle antwoordgegevens zijn ontvangen.
Zie RFC 2616, Hypertext Transfer Protocol — HTTP/1.1 voor gedetailleerde informatie over HTTP-transacties en het HTTP-protocol.
Proxyservers
Hoewel een aanvraag die door een client wordt verzonden uiteindelijk wordt ontvangen door de doelserver, wordt de transactie soms eerst via een proxyserver doorgegeven. Een proxy onderschept de aanvraag en kan zelfs de aanvraag wijzigen voordat deze naar de server wordt verzonden. Wanneer de server reageert, wordt het antwoord ook doorgegeven via de proxy voordat deze wordt doorgestuurd naar de client. De proxy kan de headers in dit antwoord wijzigen.
Door netwerktransacties te onderscheppen en te vertalen, kan een proxy het volgende doen:
- Beveilig de client door potentieel gevaarlijke transacties te bewaken.
- Schakel de client in om te communiceren met behulp van protocollen die mogelijk niet door de clientsoftware worden geïmplementeerd.
- Fungeren als een gateway tussen een particulier netwerk en een openbaar netwerk.
De WinHTTP-API bevat een hulpprogramma voor proxyconfiguratie waarmee u WinHTTP informatie kunt verstrekken met betrekking tot proxyservers die uw HTTP-transacties onderscheppen. Zie ProxyCfg.exe, een proxyconfiguratieprogrammavoor meer informatie over het gebruik van het hulpprogramma voor proxyconfiguratie.
Synchrone en asynchrone modi
Er zijn twee programmeermodellen voor het verkrijgen van resources via een netwerk met behulp van WinHTTP: de synchrone en asynchrone modellen. In een synchroon model wordt een aanroep naar een functie of methode pas voltooid als de aangevraagde bewerking is voltooid of totdat er een fout optreedt. Wanneer uw toepassing bijvoorbeeld synchroon een resource aanvraagt met Behulp van WinHTTP, gaat deze niet verder met de volgende stap totdat de aangevraagde gegevens zijn ontvangen.
Met een asynchroon model kan een toepassing andere taken uitvoeren terwijl wordt gewacht totdat de resource is opgehaald. Als een andere WinHTTP-functie of -methode wordt aangeroepen en een eerdere bewerking niet is voltooid, retourneert de functie een fout. Wanneer u WinHTTP asynchroon gebruikt, zijn COM-gebeurtenissen (Component Object Model) en callback beschikbaar om een toepassing op de hoogte te stellen van de voortgang in een HTTP-bewerking.
Authenticatie
Verificatie is het proces waarmee een HTTP-proxy of HTTP-server de aanmeldingsgegevens van een gebruiker valideert voordat toegang tot resources wordt toegestaan. Verschillende verificatieschema's worden op internet gebruikt. Meestal worden de naam en het wachtwoord van een gebruiker vergeleken met een geautoriseerde lijst en als het systeem een overeenkomst detecteert, wordt toegang verleend tot het gebied dat is opgegeven in de machtigingenlijst voor de gebruiker.
WinHTTP-functies ondersteunen zowel server- als proxyverificatie voor HTTP-sessies. WinHTTP ondersteunt de volgende verificatieschema's: Basic, Digest (zie RFC 2617), NTLM-verificatie, Negotiate/Kerberosen Microsoft Passport 1.4. Zie Verificatie in WinHTTPvoor gedetailleerde informatie over verificatie en een voorbeeld van het gebruik van verificatie in een Microsoft Visual C++-toepassing.
Zie WinHTTP-beveiligingsoverwegingenvoor informatie over beveiligingsoverwegingen met betrekking tot Basis- en Passport-verificatie.