JavaRush /Blog Java /Random-ES /Parte 3. Protocolos HTTP/HTTPS

Parte 3. Protocolos HTTP/HTTPS

Publicado en el grupo Random-ES
Este material es parte de la serie “Introducción al desarrollo empresarial”. Artículos anteriores: ¡Hola! Hoy entenderemos los protocolos HTTP y HTTPS. Pero primero, aclaremos un punto: estamos hablando de protocolos de transferencia de datos a través de la red en la capa de aplicación del modelo OSI. Como recordará, discutimos el modelo OSI en uno de los artículos anteriores. Y si no lo recuerdas, aquí lo tienes . Parte 3. Protocolos HTTP/HTTPS - 1

¿Qué es un protocolo de transferencia de datos?

Así se llama el acuerdo generalmente aceptado, gracias al cual los desarrolladores de diferentes servicios envían información en un solo formulario. Por ejemplo, al utilizar Google Chrome, puede obtener información tanto de Facebook como de Twitter, porque los desarrolladores la transmiten mediante el protocolo HTTP estándar y su navegador puede manejarlo. Las reglas uniformes también son muy convenientes para los propios desarrolladores del lado del servidor: hay muchas bibliotecas que pueden convertir información por usted y enviarla utilizando el protocolo requerido. HTTP se concibió originalmente como un protocolo para transferir páginas HTML. Este fue el caso durante mucho tiempo, pero ahora los programadores suelen transferir cadenas y archivos multimedia a través de él. En general, este protocolo es versátil y flexible, y realmente fácil de usar. Ahora descubramos cómo hacer esto.

estructura HTTP

Vale la pena señalar de inmediato que el protocolo HTTP consta únicamente de texto. Bueno, lo que más nos interesa es la estructura en la que se ubica este texto. Cada mensaje consta de tres partes:
  1. Línea de salida: define los datos del servicio.
  2. Encabezados: descripción de los parámetros del mensaje.
  3. Cuerpo del mensaje (Cuerpo): datos del mensaje. Debe estar separado de los títulos por una línea en blanco.
Usando el protocolo HTTP, puede enviar una solicitud al servidor (solicitud) y recibir una respuesta del servidor (respuesta). Las solicitudes y respuestas tienen parámetros ligeramente diferentes.

Cómo se ve una solicitud HTTP simple

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
La línea de salida contiene:
  • OBTENER - método de solicitud;
  • / — solicitar ruta (ruta);
  • HTTP/1.1 - versión del protocolo de transferencia de datos.
Luego siga los títulos:
  • Anfitrión : el anfitrión al que se dirige la solicitud;
  • User-Agent es el cliente que envía la solicitud.
No hay cuerpo del mensaje. En una solicitud HTTP, sólo se requieren la línea de inicio y el encabezado del Host. Ahora veamos todo en orden. Una solicitud HTTP debe contener algún método. Hay nueve en total: OBTENER, PUBLICAR, PONER, OPCIONES, CABEZA, PATCH, ELIMINAR, TRAZAR, CONECTAR. Los más comunes son GET y POST. Estos dos métodos serán suficientes al principio. GET : solicita contenido del servidor. Por tanto, las solicitudes con el método GET no tienen cuerpo de mensaje. Pero si es necesario, puede enviar parámetros a través de la ruta en este formato: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Aquí: javarush .com - host, /send - ruta de solicitud, ? — un separador que indica que siguen los parámetros de la solicitud. Al final, los parámetros se enumeran en el formato clave=valor, separados por un signo comercial. POST : publica información en el servidor. Una solicitud POST puede transferir diversa información: parámetros en formato clave=valor, JSON, código HTML o incluso archivos. Toda la información se transmite en el cuerpo del mensaje. Por ejemplo:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
La solicitud se envía a javarush.com/user/create/json, la versión del protocolo es HTTP/1.1. Aceptar especifica qué formato de respuesta espera recibir el cliente, Tipo de contenido especifica en qué formato se envía el cuerpo del mensaje. Longitud del contenido: la cantidad de caracteres en el cuerpo. Una solicitud HTTP puede contener muchos encabezados diferentes. Se pueden encontrar más detalles en la especificación del protocolo .

Respuestas HTTP

Después de recibir la solicitud, el servidor la procesa y envía una respuesta al cliente:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
La línea inicial de la respuesta contiene la versión del protocolo (HTTP/1.1), el código de estado (200) y la descripción del estado (OK). Los títulos indican el tipo y la extensión del contenido. El cuerpo de la respuesta contiene el código HTML que el navegador dibujará en la página HTML.

Códigos de estado de respuesta

Todo está claro con el cuerpo del mensaje y los encabezados, pero vale la pena decir algunas palabras sobre los códigos de estado. Los códigos de estado de respuesta son siempre de tres dígitos y el primer dígito del código indica la categoría de la respuesta:
  • 1xx - informativo. La solicitud ha sido recibida, el servidor está listo para continuar;
  • 2xx - exitoso. La solicitud ha sido recibida, comprendida y procesada;
  • 3xx - redirección. Se deben realizar los siguientes pasos para procesar la solicitud;
  • 4xx - error del cliente. La solicitud contiene errores o no cumple con el protocolo;
  • 5xx: error del servidor. El servidor no pudo procesar la solicitud, aunque estaba redactada correctamente;
El segundo y tercer dígito del código detallan la respuesta. Por ejemplo:
  • 200 OK: la solicitud fue recibida y procesada exitosamente;
  • 201 Creado: la solicitud se recibió y procesó exitosamente, lo que resultó en la creación de un nuevo recurso o su instancia;
  • 301 Movido permanentemente: el recurso solicitado se ha movido permanentemente y las solicitudes posteriores deben realizarse en la nueva dirección;
  • Redirección temporal 307: el recurso se ha movido temporalmente. Por ahora, puedes acceder a él mediante la redirección automática;
  • 403 Prohibido: la solicitud es clara, pero se requiere autorización;
  • 404 No encontrado: el servidor no encontró el recurso en esta dirección;
  • 501 No implementado: el servidor no admite la funcionalidad para responder a esta solicitud;
  • 505 Versión HTTP no compatible: el servidor no admite la versión especificada del protocolo HTTP.
Además del código de estado de respuesta, también se envía una descripción del estado, lo que hace que sea intuitivo comprender lo que significa un estado en particular. El protocolo HTTP es muy práctico: proporciona una gran cantidad de encabezados mediante los cuales se puede establecer una comunicación flexible entre el cliente y el servidor. Todos los encabezados de solicitud y respuesta, los métodos de solicitud y los códigos de estado de respuesta no se pueden considerar en un solo artículo. Si es necesario, puede leer la especificación oficial del protocolo , que describe todos los matices. El protocolo HTTP generalmente se usa en el puerto 80, por lo que cuando vea una dirección que termina en el puerto 80, puede estar seguro de que se debe acceder a ella a través de HTTP. Con el desarrollo de la tecnología y el movimiento activo de datos personales en Internet, tuvimos que pensar en cómo brindar protección adicional a la información que el cliente transmite al servidor. El resultado fue el protocolo HTTPS.

¿Cuál es la diferencia entre HTTPS y HTTP?

HTTPS es sintácticamente idéntico al protocolo HTTP, es decir, utiliza las mismas líneas iniciales y encabezados. Las únicas diferencias son el cifrado adicional y el puerto predeterminado (443) . HTTPS está cifrado entre HTTP y TCP, es decir, entre las capas de aplicación y transporte. Si olvidaste qué es, echa un vistazo al artículo sobre el modelo OSI . El estándar de cifrado moderno es TLS. No profundizaremos mucho en este tema, pero recordemos que el cifrado se produce antes de que la información llegue a la capa de transporte . HTTPS cifra absolutamente toda la información excepto el host y el puerto al que se envía la solicitud. Para cambiar el servidor para que utilice el protocolo HTTPS en lugar de HTTP, no necesitamos cambiar el código del servidor. Esta característica está habilitada en contenedores de servlets, de los que hablaremos en los siguientes artículos. Eso es todo por hoy. Sin embargo, espera. Para detectar solicitudes HTTP, abra Google Chrome, presione F12 y seleccione la pestaña Red. Todas las solicitudes y respuestas enviadas/recibidas por su navegador se mostrarán aquí. Parte 4. Conceptos básicos de Maven Parte 5. Servlets. Escribir una aplicación web sencilla Parte 6. Contenedores de servlets Parte 7. Introducción del patrón MVC (Modelo-Vista-Controlador) Parte 8. Escribir una pequeña aplicación Spring-boot
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION