Terminología de red (WinHTTP)

Al desarrollar una aplicación que usa servicios HTTP de Microsoft Windows (WinHTTP), es importante comprender los siguientes conceptos y terminología relacionados con las redes en general y el protocolo HTTP en particular.

Transacciones HTTP

Cuando trabaja con transacciones HTTP, intercambia información con otro equipo en otra parte de una red. La información intercambiada puede ser un archivo que contiene texto o multimedia, o bien puede ser los resultados de una consulta de base de datos. Un fragmento de información intercambiada a través de una red se denomina recurso. Normalmente, el equipo que envía un recurso es el servidor y el equipo que recibe ese recurso es un cliente. Sin embargo, también es posible que un cliente publique datos en un servidor. A veces, una transacción HTTP implica un servidor de nivel intermedio. Un servidor de nivel intermedio recopila varios recursos de otros servidores, compila la información en un recurso y envía ese recurso al cliente.

El proceso de obtención de un recurso mediante el protocolo HTTP requiere que se intercambie una serie de mensajes entre el cliente y el servidor. El cliente inicia la transacción enviando un mensaje que solicita un recurso. Este mensaje se denomina solicitud HTTP o, a veces, simplemente una solicitud. Una solicitud HTTP consta de los siguientes componentes.

  • Método, identificador uniforme de recursos (URI), número de versión del protocolo
  • Encabezados
  • Cuerpo de la entidad

Cuando un servidor recibe una solicitud, responde enviando un mensaje al cliente. El mensaje enviado por el servidor se denomina respuesta HTTP. Una respuesta HTTP consta de los siguientes componentes.

  • Número de versión del protocolo, código de estado, texto de estado
  • Encabezados
  • Cuerpo de la entidad

La respuesta indica que la solicitud no se puede procesar o proporciona información solicitada. Dependiendo del tipo de solicitud, puede ser información sobre un recurso, como su tamaño y tipo, o puede ser parte o todo el propio recurso. La parte de una respuesta que incluye algunos o todos los recursos solicitados se denomina "datos de respuesta" o "cuerpo de la entidad", y la respuesta no se completa hasta que se reciben todos los datos de respuesta.

Para obtener información detallada sobre las transacciones HTTP y el protocolo HTTP, consulte RFC 2616, Protocolo de transferencia de hipertexto : HTTP/1.1.

Servidores proxy

Aunque el servidor de destino recibe finalmente una solicitud enviada por un cliente, a veces la transacción pasa primero a través de un servidor proxy. Un proxy intercepta la solicitud e incluso puede modificar la solicitud antes de enviarlo al servidor. Cuando el servidor responde, la respuesta también pasa a través del proxy antes de que se reenvíe al cliente. El proxy puede modificar los encabezados de esta respuesta.

Al interceptar y traducir transacciones de red, un proxy puede:

  • Proteja el cliente mediante la supervisión de transacciones potencialmente peligrosas.
  • Permitir que el cliente se comunique mediante protocolos que es posible que el software cliente no implemente.
  • Actuar como puerta de enlace entre una red privada y una red pública.

La API de WinHTTP incluye una herramienta de configuración de proxy que le permite proporcionar a WinHTTP información sobre cualquier servidor proxy que intercepte las transacciones HTTP. Para obtener información sobre el uso de la herramienta de configuración de proxy, consulte ProxyCfg.exe, una herramienta de configuración de proxy.

Modos sincrónicos y asincrónicos

Hay dos modelos de programación para obtener recursos a través de una red mediante WinHTTP, los modelos sincrónicos y asincrónicos. En un modelo sincrónico, una llamada a una función o método no finaliza hasta que se completa la operación solicitada o hasta que se produce un error. Por ejemplo, cuando la aplicación solicita un recurso mediante WinHTTP de forma sincrónica, no continúa con el paso siguiente hasta que se hayan recibido los datos solicitados.

Por otro lado, un modelo asincrónico permite a una aplicación realizar otras tareas mientras espera a que se recupere el recurso. Si se llama a otra función o método WinHTTP y no ha finalizado una operación anterior, la función devuelve un error. Cuando se usa WinHTTP de forma asincrónica, los eventos del Modelo de objetos componentes (COM) y la devolución de llamada están disponibles para notificar a una aplicación de progreso en una operación HTTP.

Authentication

La autenticación es el proceso por el que un servidor PROXY HTTP o un servidor HTTP valida la información de inicio de sesión de un usuario antes de permitir el acceso a los recursos. Se usan varios esquemas de autenticación en Internet. Normalmente, el nombre y la contraseña de un usuario se comparan con una lista autorizada y, si el sistema detecta una coincidencia, se concede acceso en la medida especificada en la lista de permisos para el usuario.

Las funciones WinHTTP admiten la autenticación de servidor y proxy para sesiones HTTP. WinHTTP admite los siguientes esquemas de autenticación: Básico, Resumen (consulte RFC 2617), Autenticación NTLM, Negotiate/ Kerberos y Microsoft Passport 1.4. Para obtener información detallada sobre la autenticación, así como un ejemplo del uso de la autenticación en una aplicación de Microsoft Visual C++, consulte Autenticación en WinHTTP.

Para obtener información sobre las consideraciones de seguridad relacionadas con la autenticación Básica y Passport, consulte Consideraciones de seguridad de WinHTTP.