¿Qué es http?
El núcleo de WWW: protocolo HTTP
Como todos sabemos, el protocolo básico de Internet es el protocolo TCP/IP, el FTP actualmente ampliamente utilizado, Archie Gopher, etc. Se basan en el protocolo TCP/IP. Los protocolos de capa de aplicación en Internet, diferentes protocolos corresponden a diferentes aplicaciones.
El protocolo principal utilizado por el servidor WWW es el protocolo HTTP, que es el Protocolo de Transferencia de Hipertexto. Dado que los servicios admitidos por el protocolo HTTP no se limitan a WWW, sino que también pueden ser otros servicios, el protocolo HTTP permite a los usuarios utilizar diferentes protocolos para acceder a diferentes servicios bajo una interfaz unificada, como FTP, Archie, SMTP, NNTP, etc. . Además, el protocolo HTTP también se puede utilizar para servidores de nombres y gestión de objetos distribuidos.
2.1 Introducción al protocolo HTTP
HTTP es un protocolo orientado a objetos perteneciente a la capa de aplicación. Debido a su método simple y rápido, es adecuado para sistemas de información hipermedia distribuidos. Fue propuesto en 1990 y se ha mejorado y ampliado continuamente después de varios años de uso y desarrollo. La sexta versión de HTTP/1.0 se utiliza actualmente en la WWW. El trabajo de estandarización de HTTP/1.1 está en progreso y se ha presentado la propuesta HTTP-NG (próxima generación de HTTP).
Las características principales del protocolo HTTP se pueden resumir en las siguientes:
1.
2. Simple y rápido: cuando un cliente solicita un servicio al servidor, solo necesita transmitir el método y la ruta de la solicitud. Los métodos de solicitud más utilizados son GET, HEAD y POST. Cada método especifica un tipo diferente de contacto entre el cliente y el servidor.
Debido a que el protocolo HTTP es simple, el tamaño del programa del servidor HTTP es pequeño, por lo que la velocidad de comunicación es muy rápida.
3. Flexible: HTTP permite la transmisión de cualquier tipo de objeto de datos. El tipo que se transfiere está marcado por Content-Type.
4. Sin conexión: El significado de sin conexión es limitar cada conexión para procesar solo una solicitud. Después de que el servidor procesa la solicitud del cliente y recibe la respuesta del cliente, se desconecta. Este método ahorra tiempo de transmisión.
5. Sin estado: El protocolo HTTP es un protocolo sin estado. Sin estado significa que el protocolo no tiene capacidad de memoria para el procesamiento de transacciones. La falta de estado significa que si el procesamiento posterior requiere la información anterior, ésta debe ser retransmitida, lo que puede resultar en un aumento en la cantidad de datos transferidos por conexión. En cambio, el servidor responde más rápido cuando no necesita información previa.
2.2 Varios conceptos importantes del protocolo HTTP
1. Conexión: una circulación real de la capa de transporte, que se establece entre dos aplicaciones que se comunican entre sí.
2. Mensaje: Unidad básica de comunicación HTTP, que incluye una secuencia estructurada de ocho tuplas y se transmite a través de la conexión.
3. Solicitud: Una solicitud de información del cliente al servidor incluye el método aplicado al recurso, el identificador del recurso y el número de versión del protocolo
4. Respuesta (Respuesta): información devuelta por el servidor, incluido el número de versión del protocolo HTTP, el estado de la solicitud (como "exitosa" o "no encontrada") y el tipo MIME del documento.
5. Recurso: Un objeto o servicio de datos de red identificado por un URI.
6. Entidad: Un método de representación especial de recursos de datos o reflexiones de recursos de servicio, que pueden estar incluidos en un mensaje de solicitud o respuesta. Una entidad incluye información del encabezado de la entidad y el contenido propio de la entidad.
7. Cliente: Aplicación que establece una conexión con el fin de enviar solicitudes.
8. Agente de usuario: Inicializa un cliente solicitante. Se trata de navegadores, editores u otras herramientas de usuario.
9. Servidor (Servidor): Aplicación que acepta conexiones y devuelve información en respuesta a solicitudes.
10. Servidor de origen (Servidor de origen): Es un servidor en el que puede residir o crearse un determinado recurso.
11. Proxy: Programa intermedio que puede actuar como servidor o cliente, estableciendo solicitudes para otros clientes. Las solicitudes se transmiten internamente o a través de otros servidores mediante posibles traducciones. Un proxy debe interpretar y, si es posible, reescribir un mensaje de solicitud antes de enviarlo.
Los proxies a menudo sirven como un portal para los clientes a través de firewalls. Los proxies también pueden servir como una aplicación auxiliar para manejar solicitudes a través de protocolos que no completa el agente de usuario.
12. Gateway: Servidor que actúa como intermediario entre otros servidores. A diferencia de un proxy, una puerta de enlace acepta solicitudes como si fuera el servidor de origen del recurso solicitado; el cliente solicitante no sabe que está tratando con la puerta de enlace.
Las puertas de enlace a menudo sirven como portales del lado del servidor a través de firewalls. Las puertas de enlace también pueden servir como traductores de protocolos para acceder a recursos almacenados en sistemas que no son HTTP.
13. Canal (Túnel): Es un programa intermediario que actúa como relevo entre dos conexiones. Una vez activado, el canal no se considera perteneciente a la comunicación HTTP, aunque el canal puede iniciarse mediante una solicitud HTTP. Cuando ambos extremos de la conexión de retransmisión se cierran, el canal desaparece. Los canales se utilizan a menudo cuando debe existir un portal o cuando un intermediario no puede interpretar el tráfico retransmitido.
14. Caché: almacenamiento local de información de respuesta.
2.3 Cómo opera el protocolo HTTP
El protocolo HTTP se basa en el paradigma de solicitud/respuesta. Después de que un cliente establece una conexión con el servidor, envía una solicitud al servidor. El formato de la solicitud es un identificador de recurso uniforme, un número de versión del protocolo, seguido de información MIME que incluye modificadores de solicitud, información del cliente y posible contenido. Después de recibir la solicitud, el servidor proporciona la información de respuesta correspondiente. Su formato es una línea de estado que incluye el número de versión del protocolo de la información, un código de éxito o error, seguido de información MIME que incluye información del servidor, información de la entidad y posible contenido.
Muchas comunicaciones HTTP son iniciadas por un agente de usuario e incluyen una solicitud de recursos en el servidor de origen. El caso más simple probablemente se realiza a través de una única conexión entre el agente de usuario (UA) y el servidor de origen (O) (consulte la Figura 2-1).
Figura 2-1
Cuando aparecen uno o más intermediarios en la cadena de solicitud/respuesta, la situación se complica. Hay tres tipos de intermediarios: Proxy, Gateway y Tunnel. Un proxy acepta solicitudes basadas en el formato absoluto del URI, reescribe todo o parte del mensaje y envía la solicitud formateada al servidor utilizando el identificador URI. Una puerta de enlace es un proxy receptor que actúa como una capa encima de algún otro servidor y, si es necesario, puede traducir solicitudes al protocolo del servidor subyacente. Un canal actúa como un punto de retransmisión entre dos conexiones que no cambian los mensajes. Los canales se utilizan a menudo cuando la comunicación necesita pasar a través de un intermediario (como un firewall, etc.) o cuando el intermediario no puede identificar el contenido del mensaje. Figura 2-2
La Figura 2-2 anterior muestra que hay tres intermediarios (A, B y C) entre el agente de usuario (UA) y el servidor de origen (O). Un mensaje de solicitud o respuesta a través de toda la cadena debe pasar por cuatro segmentos de conexión. Esta distinción es importante porque algunas opciones de comunicación HTTP pueden aplicarse a la conexión más cercana, a vecinos sin canales, al final de una cadena o a todas las conexiones a lo largo de la cadena. Aunque la Figura 2-2 es lineal, cada participante puede participar en múltiples comunicaciones simultáneas. Por ejemplo, B puede recibir solicitudes de muchos clientes sin pasar por A y/o enviar solicitudes a A sin pasar por C, mientras que también puede manejar las solicitudes de A.
Cualquier agregación dirigida a canales inactivos puede habilitar un caché interno para procesar solicitudes. El efecto del almacenamiento en caché es que la cadena de solicitud/respuesta se acorta, siempre que uno de los participantes a lo largo de la cadena tenga una respuesta almacenada en caché para esa solicitud. La siguiente figura ilustra la cadena de resultados. La condición es que para una solicitud que no ha sido almacenada en caché por UA o A, B tiene una copia almacenada en caché de una respuesta anterior de O a través de C.
Figura 2-3
En Internet, la comunicación HTTP generalmente ocurre a través de conexiones TCP/IP.
El puerto predeterminado es TCP 80, pero hay otros puertos disponibles. Pero esto no significa que el protocolo HTTP pueda completarse sobre otros protocolos en Internet u otras redes. HTTP sólo implica un transporte confiable.
Lo anterior presenta brevemente el modo de operación macro del protocolo HTTP. Lo siguiente presenta el proceso de operación interna del protocolo HTTP.
Primero, introduzcamos brevemente el proceso de intercambio de información del modelo cliente/servidor basado en el protocolo HTTP, como se muestra en la Figura 2-4. Se divide en cuatro procesos, estableciendo una conexión y enviando información de solicitud. , enviando información de respuesta y cerrando.
Figura 2-4
En WWW, "cliente" y "servidor" son conceptos relativos que solo existen durante una conexión específica, es decir, en una determinada conexión El cliente puede actuar como servidor en otra conexión. Cuando el servidor WWW se está ejecutando, siempre está escuchando en el puerto TCP80 (el puerto predeterminado de WWW), esperando que aparezca una conexión.
A continuación, analice la implementación del intercambio de información en el modo cliente/servidor bajo el protocolo HTTP. 1. Establecer una conexión La conexión se establece solicitando un enchufe. El cliente abre un socket y lo vincula a un puerto. Si tiene éxito, equivale a crear un archivo virtual. En el futuro, los datos podrán escribirse en el archivo virtual y enviarse a través de la red.
2. Enviar una solicitud
Después de abrir una conexión, el cliente envía el mensaje de solicitud al puerto de estancia del servidor para completar la acción de solicitud.
El formato del mensaje de solicitud HTTP/1.0 es:
Mensaje de solicitud = línea de solicitud (información general | encabezado de solicitud | encabezado de entidad) CRLF [contenido de entidad]
Línea de solicitud = URL de solicitud del método Número de versión HTTP CRLF
Método = GET|HEAD|POST|Método de extensión
U R L = nombre del protocolo + nombre del host + directorio y nombre del archivo p>
El método en la línea de solicitud describe la acción que se debe realizar en el recurso especificado. Los métodos más utilizados son GET, HEAD y POST. Diferentes objetos de solicitud tienen diferentes resultados GET, y las relaciones correspondientes son las siguientes:
Resultados GET del objeto
Contenido del archivo
Ejecución del programa Resultados del programa
p>Resultados de la consulta de la base de datos
HEAD: solicita al servidor que busque metainformación sobre un objeto, en lugar del objeto en sí.
POST: transfiere datos del cliente al servidor. El método POST se utiliza cuando se requiere procesamiento adicional por parte del servidor y CGI. POST se utiliza principalmente para enviar el contenido de FORM en texto HTML para ser procesado por programas CGI.
Un ejemplo de solicitud es:
GET /zju/index.htm HTTP/1.0
La información del encabezado también se denomina metainformación, que es La información de la información se puede utilizar para implementar solicitudes o respuestas condicionales.
Encabezado de solicitud: le indica al servidor cómo interpretar esta solicitud, incluidos principalmente los tipos de datos, los métodos de compresión y los idiomas aceptables para el usuario.
Encabezado de la entidad: tipo de información de la entidad, longitud, método de compresión, hora de la última modificación, período de validez de los datos, etc.
Entidad: el objeto de solicitud o respuesta en sí.
3. Enviar una respuesta
Después de procesar la solicitud del cliente, el servidor envía un mensaje de respuesta al cliente.
El formato del mensaje de respuesta de HTTP/1.0 es el siguiente:
Mensaje de respuesta = línea de estado (encabezado de información general | encabezado de respuesta | encabezado de entidad) CRLF [contenido de la entidad]
Línea de estado = número de versión HTTP código de estado descripción del motivo
El código de estado indica el tipo de respuesta
1×× reservado
2×× indica que el la solicitud se recibió correctamente
3×× El cliente necesita refinar aún más la solicitud para completarla
4×× Error del cliente
5×× Error del servidor
Respuesta La información del encabezado incluye: nombre del programa de servicio, informar al cliente que la URL solicitada requiere autenticación y cuándo se puede utilizar el recurso solicitado.
4. Cierra la conexión
Tanto el cliente como el servidor pueden finalizar la conversación TCP/IP cerrando el socket