"¡Hola, amigo!"

"¡Hola, Bilaabo!"

"¿Qué cosa nueva me contarás hoy?"

"Muchas cosas. Pero para empezar, creo que hablaremos sobre trabajar con una red e Internet. ¿Interesado?"

"Sí. La Internet Galáctica es genial".

"Está bien, pero comencemos con un poco de historia. A principios del siglo XXI, la situación era esta..."

"Cada computadora conectada a Internet tenía un número único. Este era un número ordinario de 4 bytes. Se llama la dirección IP".

"Pero los humanos tienen poca memoria y luchan por recordar algo como 2108458776, por lo que a menudo escriben cada byte por separado".

"Si dividimos el número de cuatro bytes 2108458776 en bytes separados, obtenemos 125.172.135.24. Como recordará, cada byte consta de 8 bits y puede contener números del 0 al 255".

"Entonces, ¿así es como estamos escribiendo el número?"

"Sí. Es más fácil (para los humanos) recordar números de cuatro bytes cuando se escriben de esta manera".

"Resultó que la elección de usar solo 4 bytes pronto les jugó una mala pasada. La cantidad de dispositivos conectados a Internet creció tan rápido que pronto se quedaron sin números".

"¿Cómo solucionaron eso?"

"Hicieron lo que los humanos suelen hacer".

"Se les ocurrió un nuevo estándar para las direcciones IP y lo llamaron orgullosamente IPv6".

"A diferencia de una dirección IP normal (llamada IPv4) que usa 4 bytes para formar un número único, el nuevo estándar usa 16".

"Solo piénsalo, los humanos no podían recordar 10 dígitos en un número ordinario (como 2108458776), por lo que tenían que dividirlos en 4 partes, pero luego pensaron en usar números que constaban de 16 bytes".

"Sí, a veces los humanos son raros".

"Sí. Los humanos son humanos".

"Dicho eso, salieron de su situación".

"Se cansaron de recordar los números y decidieron reemplazarlos con palabras".

"¿Cómo es eso? ¿Podrías darme un ejemplo?"

"Por supuesto, web.mail.com , google.com , new.books.amazon.com ,..."

"Este tipo de nombre se llama dominio".

"Para que Internet funcione correctamente, crearon una tabla especial llamada Sistema de nombres de dominio (DNS) que almacena la dirección IP de cada nombre de dominio".

"Así es como funciona."

1)  Un usuario ingresa una dirección en un navegador, por ejemplo, web.mail.com .

2)  El navegador accede al DNS y usa el nombre de dominio para obtener la dirección IP.

3)  Se envía una solicitud con la URL requerida a esta dirección IP.

"Eso no parece muy simple".

"Pero este enfoque tiene varios beneficios:"

" 1) A los humanos les resulta fácil recordar nombres que pueden verbalizarse".

" 2) Los nombres de dominio se pueden construir jerárquicamente agregando subdominios al comienzo de un nombre. Exactamente como un nombre de paquete en Java".

" 3) Si necesita cambiar la dirección IP del servidor web, solo necesita cambiar el registro DNS, y todo funcionará como antes: los usuarios no tienen que recordar una nueva dirección".

"El DNS se parece a esto:"

Nombre de dominio dirección IP
mail.com 128.35.36.189
web.mail.com 145.12.17.13
nuevo.mail.com 192.155.15.3
google.com 92.117.151.100
google.com 193.168.0.1
docs.google.com 217.12.222.1

"Tiene sentido."

"De todos modos, un dominio es el nombre de una computadora, pero no necesitamos la computadora, necesitamos lo que hay en la computadora. Para eso están las URL".

"Inicialmente, una URL era en realidad un enlace a un archivo en otra computadora. Por ejemplo:"

Ejemplo
http://info.codegym.cc/usuario/info/profile.html _ _ _ _
Descripción
http  es el protocolo para la comunicación cliente-servidor
info.codegym.cc  es el nombre de dominio de la computadora
user/info/profile.html  es la ruta al archivo en la computadora

"Al comienzo del desarrollo de la red, un servidor web solo podía usar una URL para servir archivos que estaba almacenando en algún lugar. La URL era en realidad una ruta global al archivo: nombre de la computadora + ruta".

"Más tarde, cuando los servidores web comenzaron a generar archivos por sí mismos, las URL cambiaron un poco y se convirtieron en una solicitud para el servidor web. También se agregaron parámetros de solicitud".

"Hoy es raro ver una extensión de archivo al final de una URL. "Una URL moderna es solo un enlace único con parámetros. Más como una llamada de método en lugar de una ruta de archivo global".

"Una URL moderna clásica se ve así:"

Analizando la URL
http://codegym.cc/alpha/api/contacts ? _ _ _ _ ID de usuario = 13 y filtro = ninguno y página = 3
Descripción de partes de la URL
codegym.cc  es el nombre de dominio — el nombre único (dirección) de una computadora en Internet
http  es el protocolo para la comunicación cliente-servidor
alpha/api/contacts  es la solicitud del servidor web o la solicitud de una página web en el servidor
userid=13 & filter=none & page=3  es una cadena con los parámetros de solicitud

"Sí, lo recuerdo. Me hablaste de las URL recientemente".

"Y sobre los puertos también. Usaste el ejemplo de un edificio de apartamentos".

"Sería mejor que me dijeras qué es 'http'. Veo 'protocolo' escrito en todas partes, pero no tengo claro qué es".

"Está bien. Te lo diré sin más preámbulos".

Dirección IP, dominio, URL - 1

" HTTP son las siglas de Hyper T ext T ransport P rotocol y es para transferir hipertexto" .

"¿Qué es hipertexto?"

"Es HTML".

"En términos generales, un protocolo es un conjunto de reglas para la comunicación. Describe las solicitudes que se pueden enviar a un servidor web y en qué formato, así como también cómo debe responder el servidor web".

"En resumen, la situación es la siguiente. Se envían archivos de texto ordinarios o, si lo prefiere, grandes fragmentos de texto entre el cliente y el servidor " .

"Una solicitud llega al servidor y el servidor proporciona una respuesta a cada solicitud".

"Aquí hay ejemplos de tal solicitud y respuesta:"

Pedido
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
Descripción
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5… – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.

"La primera línea es la solicitud real. Lo que sigue son parámetros de solicitud adicionales, también conocidos como 'campos de encabezado'".

"Y aquí hay un ejemplo de una respuesta:"

Respuesta
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8 – This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.

"Quiero llamar su atención sobre dos cosas:"

"Primero, no importa lo que solicite, parece una solicitud de archivo al servidor. No importa si el archivo está en el servidor o si el servidor lo genera en respuesta a la solicitud".

"En segundo lugar, el archivo en sí se envía como parte de la respuesta HTTP . En otras palabras, vemos algunos datos adicionales al comienzo de la respuesta del servidor y luego el cuerpo del archivo que se entrega " .

"¡Qué interesante! No estoy seguro de haber entendido todo. Volveré a leer esto más tarde".

"Oh, quiero hablarte de otra cosa pequeña, pero interesante: las galletas".

"¿Que son esos?"

"Según el protocolo HTTP, las cookies son pequeños fragmentos de información que el servidor envía al cliente para que los almacene en el cliente. Y se envían de vuelta al servidor como parte de solicitudes posteriores " .

"¿Y cuál es el punto de eso?"

"Supongamos que un usuario inicia sesión en la página de inicio de un sitio web. El servidor crea un objeto de sesión en el servidor para este usuario y se envía un número de sesión único al cliente como una cookie. Durante la próxima solicitud del cliente al servidor, este número de sesión, junto con otras cookies, se enviará de vuelta al servidor. Esto significa que el servidor puede reconocer al usuario que envió la nueva solicitud".

"¡Que interesante!"

"Sí. Cuando escriba sus propios servlets, analizaremos más de cerca este tema. Pero por ahora, tomemos un descanso".

"Lo que digas."