Netzwerkterminologie (WinHTTP)

Bei der Entwicklung einer Anwendung, die Microsoft Windows HTTP-Dienste (WinHTTP) verwendet, ist es wichtig, die folgenden Konzepte und Terminologie zu verstehen, die sich auf Netzwerke im Allgemeinen und das HTTP-Protokoll im Besonderen 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 dies kann das Ergebnis einer Datenbankabfrage sein. Eine Über ein Netzwerk ausgetauschte Information wird als Ressource bezeichnet. Normalerweise ist der Computer, der eine Ressource sendet, der Server, und der Computer, der diese Ressource empfängt, ist ein Client. Es ist jedoch auch möglich, dass ein Client Daten auf einem Server postiert. Manchmal umfasst eine HTTP-Transaktion einen Server der mittleren Ebene. Ein Server der mittleren 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 wird. Der Client beginnt die Transaktion, indem er eine Nachricht sendet, die eine Ressource anfordert. Diese Nachricht wird als HTTP-Anforderung oder manchmal auch nur als Anforderung bezeichnet. Eine HTTP-Anforderung besteht aus den folgenden Komponenten.

  • Methode, URI (Uniform Resource Identifier), Versionsnummer des Protokolls
  • 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, status Code, status Text
  • Header
  • Entitätstext

Die Antwort gibt entweder an, dass die Anforderung nicht verarbeitet werden kann, oder stellt angeforderte Informationen bereit. Je nach Anforderungstyp kann dies Informationen zu einer Ressource sein, z. B. deren Größe und Typ, oder es kann sich um einige oder alle Ressourcen selbst handeln. Der Teil einer Antwort, der einige oder alle der angeforderten Ressource enthält, wird als "Antwortdaten" oder "Entitätstext" bezeichnet, und die Antwort ist erst abgeschlossen, wenn alle Antwortdaten empfangen wurden.

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, wird die Transaktion manchmal zuerst über einen Proxyserver geleitet. Ein Proxy fängt die Anforderung ab und kann sogar die Anforderung ä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 das Abfangen und Übersetzen von Netzwerktransaktionen kann ein Proxy:

  • Schützen Sie den Client, indem Sie potenziell gefährliche Transaktionen überwachen.
  • Ermöglichen Sie dem Client die Kommunikation mit Protokollen, die möglicherweise nicht von der Clientsoftware implementiert werden.
  • Fungiert als Gateway zwischen einem privaten Netzwerk und einem öffentlichen Netzwerk.

Die WinHTTP-API enthält ein Proxykonfigurationstool, mit dem Sie WinHTTP Informationen zu proxyservern bereitstellen können, die Ihre HTTP-Transaktionen abfangen. Informationen zur Verwendung des Proxykonfigurationstools finden Sie unter ProxyCfg.exe, ein Proxykonfigurationstool.

Synchroner und asynchroner Modus

Es gibt zwei Programmiermodelle zum Abrufen von Ressourcen über ein Netzwerk mithilfe von WinHTTP– die synchronen und asynchronen Modelle. In einem synchronen Modell wird der Aufruf einer Funktion oder Methode erst abgeschlossen, wenn der angeforderte Vorgang abgeschlossen ist oder ein Fehler auftritt. Wenn Ihre Anwendung beispielsweise eine Ressource synchron mit WinHTTP anfordert, wird sie erst mit dem nächsten Schritt fortgesetzt, wenn die angeforderten Daten empfangen wurden.

Ein asynchrones Modell hingegen ermöglicht es einer Anwendung, andere Aufgaben auszuführen, während sie auf den Abruf der Ressource wartet. Wenn eine andere WinHTTP-Funktion oder -Methode aufgerufen wird und ein vorheriger Vorgang nicht abgeschlossen wurde, gibt die Funktion einen Fehler zurück. Bei asynchroner Verwendung von WinHTTP sind COM-Ereignisse (Component Object Model) und Rückrufe verfügbar, um eine Anwendung über den Fortschritt bei einem HTTP-Vorgang zu benachrichtigen.

Authentifizierung

Die Authentifizierung ist der Prozess, bei dem ein HTTP-Proxy oder HTTP-Server die Anmeldeinformationen eines Benutzers überprüft, bevor er den Zugriff auf Ressourcen zulässt. Im Internet werden verschiedene Authentifizierungsschemas verwendet. Normalerweise 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-Authentifizierung, Negotiate/ Kerberos und 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 Sicherheitsüberlegungen in Bezug auf die Standard- und Passport-Authentifizierung finden Sie unter WinHTTP-Sicherheitsüberlegungen.