Terminologia di rete (WinHTTP)

Quando si sviluppa un'applicazione che usa Microsoft Windows HTTP Services (WinHTTP), è importante comprendere i concetti e la terminologia seguenti correlati alla rete in generale e al protocollo HTTP in particolare.

Transazioni HTTP

Quando si lavora con le transazioni HTTP, si scambiano informazioni con un altro computer altrove in una rete. Le informazioni scambiate possono essere un file che contiene testo o multimediale oppure può essere i risultati di una query di database. Una parte delle informazioni scambiate su una rete viene chiamata risorsa. Normalmente il computer che invia una risorsa è il server e il computer che riceve tale risorsa è un client. Tuttavia, è anche possibile che un client possa pubblicare dati in un server. A volte una transazione HTTP comporta un server di livello intermedio. Un server di livello intermedio raccoglie diverse risorse da altri server, compila le informazioni in una risorsa e invia tale risorsa al client.

Il processo di recupero di una risorsa usando il protocollo HTTP richiede che una serie di messaggi venga scambiata tra il client e il server. Il client inizia la transazione inviando un messaggio che richiede una risorsa. Questo messaggio viene chiamato una richiesta HTTP o a volte solo una richiesta. Una richiesta HTTP è costituita dai componenti seguenti.

  • Metodo, Uniform Resource Identifier (URI), numero di versione del protocollo
  • Intestazioni
  • Corpo dell'entità

Quando un server riceve una richiesta, risponde inviando un messaggio di nuovo al client. Il messaggio inviato dal server viene chiamato risposta HTTP. Una risposta HTTP è costituita dai componenti seguenti.

  • Numero di versione del protocollo, codice di stato, testo di stato
  • Intestazioni
  • Corpo dell'entità

La risposta indica che la richiesta non può essere elaborata o fornisce informazioni richieste. A seconda del tipo di richiesta, è possibile che le informazioni su una risorsa, ad esempio le dimensioni e il tipo, siano alcune o tutte le risorse stesse. La parte di una risposta che include alcune o tutte le risorse richieste è denominata "dati di risposta" o "corpo dell'entità" e la risposta non viene completata finché non vengono ricevuti tutti i dati di risposta.

Per informazioni dettagliate sulle transazioni HTTP e sul protocollo HTTP, vedere RFC 2616, Hypertext Transfer Protocol — HTTP/1.1.

Server proxy

Anche se una richiesta inviata da un client viene ricevuta dal server di destinazione, a volte la transazione passa prima attraverso un server proxy. Un proxy intercetta la richiesta e può anche modificare la richiesta prima di inviarla al server. Quando il server risponde, la risposta passa anche attraverso il proxy prima che venga inoltrata al client. Il proxy può modificare le intestazioni in questa risposta.

Intercettando e traducendo le transazioni di rete, un proxy può:

  • Proteggere il client monitorando transazioni potenzialmente pericolose.
  • Abilitare il client per comunicare usando protocolli che potrebbero non essere implementati dal software client.
  • Fungere da gateway tra una rete privata e una rete pubblica.

L'API WinHTTP include uno strumento di configurazione proxy che consente di fornire a WinHTTP informazioni su qualsiasi server proxy che intercetta le transazioni HTTP. Per informazioni sull'uso dello strumento di configurazione proxy, vedere ProxyCfg.exe, uno strumento di configurazione proxy.

Modalità sincrone e asincrone

Esistono due modelli di programmazione per ottenere risorse su una rete usando WinHTTP, ovvero i modelli sincroni e asincroni. In un modello sincrono, una chiamata a una funzione o a un metodo non viene completata fino al completamento dell'operazione richiesta o fino a quando non si verifica un errore. Ad esempio, quando l'applicazione richiede una risorsa usando WinHTTP in modo sincrono, non continua con il passaggio successivo finché non vengono ricevuti i dati richiesti.

Un modello asincrono, invece, consente a un'applicazione di eseguire altre attività mentre attende il recupero della risorsa. Se viene chiamata un'altra funzione o un metodo WinHTTP e non è stata completata un'operazione precedente, la funzione restituisce un errore. Quando si usa WinHTTP in modo asincrono, gli eventi Com (Component Object Model) e il callback sono disponibili per notificare un'applicazione di stato in un'operazione HTTP.

Authentication

L'autenticazione è il processo in base al quale un proxy HTTP o un server HTTP convalida le informazioni di accesso di un utente prima di consentire l'accesso alle risorse. In Internet vengono usati vari schemi di autenticazione. In genere il nome e la password di un utente vengono confrontati con un elenco autorizzato e, se il sistema rileva una corrispondenza, l'accesso viene concesso all'estensione specificata nell'elenco di autorizzazioni per l'utente.

Le funzioni WinHTTP supportano sia l'autenticazione server che l'autenticazione proxy per le sessioni HTTP. WinHTTP supporta gli schemi di autenticazione seguenti: Basic, Digest (vedere RFC 2617), autenticazione NTLM, Negotiate/ Kerberos e Microsoft Passport 1.4. Per informazioni dettagliate sull'autenticazione, nonché un esempio di uso dell'autenticazione in un'applicazione Microsoft Visual C++, vedere Autenticazione in WinHTTP.

Per informazioni sulle considerazioni sulla sicurezza relative all'autenticazione Basic e Passport, vedere Considerazioni sulla sicurezza WinHTTP.