Netzwerkterminologie (WinHTTP)
Bei der Entwicklung einer Anwendung, die Microsoft Windows HTTP Services (WinHTTP) verwendet, ist es wichtig, die folgenden Konzepte und Terminologie zu verstehen, die sich auf Netzwerke im Allgemeinen und insbesondere auf das HTTP-Protokoll beziehen.
HTTP-Transaktionen
Wenn Sie mit HTTP-Transaktionen arbeiten, tauschen Sie Informationen mit einem anderen Computer an anderer Stelle in einem Netzwerk aus. Die ausgetauschten Informationen können eine Datei sein, die Text oder Multimedia enthält, oder es kann sich um die Ergebnisse einer Datenbankabfrage handeln. Ein Informationsaustausch über ein Netzwerk wird als Ressourcebezeichnet. Normalerweise ist der Computer, der eine Ressource sendet, der Server und der Computer, der diese Ressource empfängt, ein Client. Es ist jedoch auch möglich, dass ein Client Daten auf einem Server postiert. Manchmal umfasst eine HTTP-Transaktion einen Server auf mittlerer Ebene. Ein Server auf mittlerer Ebene sammelt mehrere Ressourcen von anderen Servern, kompiliert die Informationen in einer Ressource und sendet diese Ressource an den Client.
Der Vorgang zum Abrufen einer Ressource mithilfe des HTTP-Protokolls erfordert, dass eine Reihe von Nachrichten zwischen dem Client und dem Server ausgetauscht werden. Der Client beginnt die Transaktion, indem eine Nachricht gesendet wird, die eine Ressource anfordert. Diese Nachricht wird als HTTP-Anforderung oder manchmal nur als Anforderung bezeichnet. Eine HTTP-Anforderung besteht aus den folgenden Komponenten.
- Methode, Uniform Resource Identifier (URI), Protokollversionsnummer
- Header
- Entitätstext
Wenn ein Server eine Anforderung empfängt, antwortet er, indem er eine Nachricht zurück an den Client sendet. Die vom Server gesendete Nachricht wird als HTTP-Antwort bezeichnet. Eine HTTP-Antwort besteht aus den folgenden Komponenten.
- Protokollversionsnummer, Statuscode, Statustext
- Header
- Entitätstext
Die Antwort gibt entweder an, dass die Anforderung nicht verarbeitet werden kann oder angeforderte Informationen bereitstellt. Je nach Anforderungstyp kann dies Informationen zu einer Ressource sein, z. B. dessen Größe und Typ, oder es kann sich um einige oder alle Ressourcen selbst handeln. Der Teil einer Antwort, der einige oder alle angeforderten Ressourcen enthält, wird als "Antwortdaten" oder "Entitätstext" bezeichnet, und die Antwort ist erst abgeschlossen, wenn alle Antwortdaten empfangen werden.
Ausführliche Informationen zu HTTP-Transaktionen und dem HTTP-Protokoll finden Sie unter RFC 2616, Hypertext Transfer Protocol – HTTP/1.1.
Proxyserver
Obwohl eine von einem Client gesendete Anforderung schließlich vom Zielserver empfangen wird, übergibt die Transaktion manchmal zuerst einen Proxyserver. Ein Proxy fängt die Anforderung ab und kann die Anforderung sogar ändern, bevor sie an den Server gesendet wird. Wenn der Server antwortet, durchläuft die Antwort auch den Proxy, bevor er an den Client weitergeleitet wird. Der Proxy kann die Header in dieser Antwort ändern.
Durch Abfangen und Übersetzen von Netzwerktransaktionen kann ein Proxy:
- Schützen Sie den Kunden, indem Sie potenziell gefährliche Transaktionen überwachen.
- Ermöglichen Sie dem Client die Kommunikation mithilfe von Protokollen, die möglicherweise nicht von der Clientsoftware implementiert werden.
- Dient als Gateway zwischen einem privaten Netzwerk und einem öffentlichen Netzwerk.
Die WinHTTP-API enthält ein Proxykonfigurationstool, mit dem Sie WinHTTP Informationen zu allen Proxyservern bereitstellen können, die Ihre HTTP-Transaktionen abfangen. Informationen zur Verwendung des Proxykonfigurationstools finden Sie unter ProxyCfg.exe, einem Proxykonfigurationstool.
Synchrone und asynchrone Modi
Es gibt zwei Programmiermodelle zum Abrufen von Ressourcen über ein Netzwerk mit WinHTTP – den synchronen und asynchronen Modellen. In einem synchronen Modell wird ein Aufruf einer Funktion oder Methode erst abgeschlossen, wenn der angeforderte Vorgang abgeschlossen ist oder ein Fehler auftritt. Wenn Ihre Anwendung beispielsweise eine Ressource mit WinHTTP synchron anfordert, wird der nächste Schritt erst fortgesetzt, wenn die angeforderten Daten empfangen wurden.
Ein asynchrones Modell ermöglicht andererseits, dass eine Anwendung andere Aufgaben ausführt, während sie wartet, bis die Ressource abgerufen wird. Wenn eine andere WinHTTP-Funktion oder -Methode aufgerufen wird und ein vorheriger Vorgang nicht abgeschlossen ist, gibt die Funktion einen Fehler zurück. Bei asynchroner Verwendung von WinHTTP sind COM-Ereignisse (Component Object Model) und Rückruf verfügbar, um eine Anwendung über den Fortschritt in einem HTTP-Vorgang zu benachrichtigen.
Authentifizierung
Die Authentifizierung ist der Prozess, mit dem ein HTTP-Proxy oder HTTP-Server die Anmeldeinformationen eines Benutzers überprüft, bevor er den Zugriff auf Ressourcen zulässt. Verschiedene Authentifizierungsschemas werden im Internet verwendet. In der Regel werden der Name und das Kennwort eines Benutzers mit einer autorisierten Liste verglichen, und wenn das System eine Übereinstimmung erkennt, wird der Zugriff in dem umfang gewährt, der in der Berechtigungsliste für den Benutzer angegeben ist.
WinHTTP-Funktionen unterstützen sowohl die Server- als auch die Proxyauthentifizierung für HTTP-Sitzungen. WinHTTP unterstützt die folgenden Authentifizierungsschemas: Basic, Digest (siehe RFC 2617), NTLM Authentication, Negotiate/Kerberosund Microsoft Passport 1.4. Ausführliche Informationen zur Authentifizierung sowie ein Beispiel für die Verwendung der Authentifizierung in einer Microsoft Visual C++-Anwendung finden Sie unter Authentifizierung in WinHTTP.
Informationen zu Sicherheitsaspekten in Bezug auf die Standard- und Passport-Authentifizierung finden Sie unter WinHTTP-Sicherheitsüberlegungen.