Como todos sabemos, el protocolo básico de Internet es el protocolo TCP/IP. FTP y Archie Gopher, ampliamente utilizados actualmente, son protocolos de capa de aplicación basados en el protocolo TCP/IP. Diferentes protocolos corresponden a diferentes aplicaciones. & ltBR & gtEl protocolo principal utilizado por el servidor WWW es el protocolo HTTP, un protocolo de transferencia de hiperestilo. Debido a que los servicios admitidos por el protocolo HTTP no se limitan a WWW, sino que también incluyen otros servicios, el protocolo HTTP permite a los usuarios acceder a diferentes servicios de diferentes protocolos bajo una interfaz unificada, como FTP, Archie, SMTP, NNTP, etc. Además, el protocolo HTTP 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 y pertenece 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. Después de varios años de uso y desarrollo, se ha mejorado y ampliado continuamente. Actualmente, la WWW utiliza la sexta versión de HTTP/1.0. La estandarización de HTTP/1.1 está en progreso y se han presentado recomendaciones para HTTP-NG (HTTP de próxima generación).
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 la simplicidad del protocolo HTTP, el tamaño del programa del servidor HTTP es pequeño, por lo que la velocidad de comunicación es muy rápida.
3. Flexibilidad: HTTP permite la transmisión de cualquier tipo de objeto de datos. El tipo que se transfiere está marcado por el tipo de contenido.
4. Sin conexión: Sin conexión significa limitar cada conexión a una solicitud. Una vez que el servidor haya procesado la solicitud del cliente y haya recibido la respuesta del cliente, se desconectará. Esto ahorra tiempo de transferencia.
5. Sin estado: El protocolo HTTP no tiene estado. Sin estado significa que el protocolo no tiene memoria para el procesamiento de transacciones. La falta de estado hace que si el procesamiento posterior requiere información previa, esta deba ser retransmitida, lo que puede provocar un aumento en la cantidad de datos transferidos por conexión. En cambio, cuando el servidor no necesita la información anterior, responde más rápido.
2.2 Varios conceptos importantes del protocolo http
1. Conexión: el ciclo real de la capa de transporte, que se establece entre dos aplicaciones de comunicación.
2. Mensaje): HTTP La unidad básica de comunicación HTTP, que consiste en una secuencia estructurada de octetos transmitidos a través de una conexión.
3. Solicitud: El mensaje de solicitud 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: El mensaje devuelto por el servidor incluye 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: Objeto o servicio de datos de red identificado por URI.
6. Entidad: Una representación especial de un recurso de datos o reflejo de un recurso de servicio, que puede incluirse en un mensaje de solicitud o respuesta. Una entidad incluye información del encabezado de la entidad y su propio contenido.
7. Cliente: Aplicación que establece una conexión para enviar solicitudes.
8. Agente de usuario: inicializa la solicitud del cliente. Son navegadores, editores u otras herramientas de usuario.
9. Servidor: Aplicación que acepta conexiones y devuelve información a las solicitudes.
10. Servidor de origen: Servidor que puede alojar o crear un recurso determinado.
11. Proxy: Programa intermedio que puede actuar como servidor o cliente y establecer solicitudes para otros clientes. Las solicitudes se transmiten internamente o mediante posibles transformaciones a otros servidores. El proxy DEBE interpretar y reescribir la información de la solicitud, si es posible, antes de enviarla.
Un proxy se utiliza a menudo como puerta de enlace a través de un firewall hacia el cliente y también se puede utilizar como una aplicación auxiliar para manejar solicitudes que el agente de usuario no puede completar a través del protocolo.
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 que realiza la solicitud no sabe que está tratando con la puerta de enlace.
Una puerta de enlace se utiliza normalmente como puerta de enlace a través de un firewall para llegar a un servidor, y también se puede utilizar como un conversor de protocolos para acceder a recursos almacenados en sistemas que no son HTTP.
13. Túnel: Es un programa intermedio que actúa como relevo entre dos conexiones. Una vez activado, el canal no se considera perteneciente a la comunicación HTTP, aunque puede iniciarse mediante una solicitud HTTP. Cuando ambos extremos de la conexión troncal están cerrados, el canal desaparece. Los canales se utilizan normalmente cuando debe existir un portal o cuando el intermediario no puede interpretar el tráfico retransmitido.
14. Caché: almacenamiento local de información de respuesta.
2.3 El modo de funcionamiento del protocolo http
El protocolo HTTP se basa en el paradigma de solicitud/respuesta. Después de que el cliente establece una conexión con el servidor, envía una solicitud al servidor en forma de un identificador de recurso uniforme y un número de versión de protocolo, seguido de información MIME, incluidos 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 en forma de una línea de estado, incluido el número de versión del protocolo de la información, el código de éxito o error, seguido de información MIME, incluida la información del servidor, la información de la entidad y el posible contenido.
Muchas comunicaciones HTTP son iniciadas por agentes de usuario e incluyen solicitudes de recursos en el servidor de origen. En el caso más simple, esto se puede hacer a través de una conexión separada entre el agente de usuario (UA) y el servidor de origen (O) (consulte la Figura 2-1).
Figura 2-1
La situación se complica cuando aparecen uno o más intermediarios en la cadena de solicitud/respuesta. Hay tres tipos de intermediarios: proxy, puerta de enlace y túnel. El proxy acepta la solicitud según el formato absoluto del URI, reescribe todo o parte del mensaje y envía la solicitud formateada al servidor con la identidad del URI. Una puerta de enlace es un proxy receptor que actúa como una capa superior para otros servidores y convierte las solicitudes al protocolo de servidor inferior si es necesario. Un canal actúa como un punto de retransmisión entre dos conexiones que no cambian los mensajes. Los canales se suelen utilizar cuando la comunicación debe pasar a través de un intermediario (como un firewall, etc.). ) o cuando el intermediario no pueda 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 un vecino sin canal, al final de una cadena o a todas las conexiones de una 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 agregado en un canal inactivo puede habilitar el almacenamiento en caché interno para manejar solicitudes. La función del almacenamiento en caché es acortar la cadena de solicitud/respuesta, siempre que un participante en la cadena tenga una respuesta almacenada en caché a la solicitud. La siguiente figura ilustra la cadena de resultados, suponiendo que para una solicitud no almacenada en caché por UA o A, B tiene una copia almacenada en caché de la respuesta anterior de O a 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 se pueden utilizar otros puertos. Sin embargo, esto no significa que el protocolo HTTP sólo pueda realizarse sobre otros protocolos en Internet u otras redes. HTTP solo significa transmisión confiable.
Lo anterior presenta brevemente el modo de operación macro del protocolo HTTP. A continuación se describe el proceso de operación interna del protocolo HTTP.
En primer lugar, se presenta brevemente el proceso de intercambio de información del modo cliente/servidor basado en el protocolo HTTP. Como se muestra en la Figura 2-4, se divide en cuatro procesos: establecer una conexión, enviar información de solicitud, enviar información de respuesta y cerrar la conexión.
Figura 2-4
En WWW, "cliente" y "servidor" son conceptos relativos y solo existen durante una conexión específica, es decir, un cliente conectado puede actuar como un servidor. en otra conexión. Cuando el servidor WWW se está ejecutando, siempre escucha el puerto TCP 80 (el puerto predeterminado de WWW), esperando que aparezca una conexión.
A continuación, se analiza la implementación del intercambio de información en modo cliente/servidor bajo protocolo HTTP. 1. Establezca una conexión solicitando un enchufe.
El cliente abre un socket y lo vincula a un puerto. Si tiene éxito, equivale a crear un archivo virtual. Posteriormente, podrá escribir datos en el archivo virtual y enviarlos a través de la red.
Enviar una solicitud
Después de abrir la conexión, el cliente envía un mensaje de solicitud al puerto de parada del servidor para completar la operació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 = método URL de solicitud Número de versión HTTP CRLF
Método =GET|HEAD|POST|Método de extensión
U R L = nombre del protocolo + nombre de host + directorio y nombre de archivo.
Los métodos en la línea de solicitud describen las operaciones que deben realizarse en el recurso especificado. Los métodos más utilizados son GET, HEAD y POST. Diferentes objetos de solicitud obtienen resultados diferentes, y las relaciones correspondientes son las siguientes:
Resultados obtenidos por el objeto
Contenido del archivo
Resultados de ejecución del programa .
Resultados de la consulta de la base de datos
head: requiere que el servidor encuentre la metainformación del objeto, no el objeto en sí.
Los datos de publicación se transfieren del cliente al servidor. Cuando el servidor y CGI requieren procesamiento adicional, se utiliza el método POST. POST se utiliza principalmente para enviar contenido de formulario en forma de texto HTML a programas CGI para su procesamiento.
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 utiliza para implementar solicitudes o respuestas condicionales.
Encabezado de solicitud: le dice al servidor cómo interpretar esta solicitud, incluyendo principalmente tipos de datos, métodos de compresión e idiomas aceptables para el usuario.
Encabezado de 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í.
Enviar respuesta
El servidor envía un mensaje de respuesta al cliente después de procesar la solicitud del cliente.
El formato del mensaje de respuesta de HTTP/1.0 es el siguiente:
Mensaje de respuesta = línea de estado (título del mensaje general | título de la respuesta | título de la entidad) CRLF [contenido de la entidad]
Línea de estado=Código de estado del número de versión HTTP.
El código de estado indica el tipo de respuesta.
1×× está reservado
2××× indica que la solicitud se ha recibido correctamente.
3×××Para completar la solicitud, el cliente debe refinarla aún más.
4×××Error de cliente
5×××Error de servidor
La información en el encabezado de respuesta incluye: el nombre del programa de servicio, la notificación al cliente del recurso solicitado La URL requiere autenticación y cuándo se puede utilizar el recurso solicitado.
Cerrar la conexión
Tanto el cliente como el servidor pueden finalizar la sesión TCP/IP cerrando el socket.