Cómo explicar la World Wide Web a un niño de 10 años.

La red mundial es una parte de internet. En términos generales, es la parte de Internet con la que interactúa cuando visita páginas web, aunque eso es un poco demasiado suelto.

Cuando escribe www.google.com en un navegador web, su navegador se comunicará con su sistema operativo y le pedirá que realice una búsqueda de DNS para encontrar la dirección del Protocolo de Internet de www.google.com

DNS o Sistema de nombres de dominio, es un sistema que asigna nombres a direcciones IP. Puede hacerlo de varias maneras inteligentes, pero le permite tomar el nombre www.google.com y obtener la dirección IP que realmente necesita para enrutar a través de Internet.

nslookup y dig son las dos formas principales de realizar estas búsquedas manualmente:

$ dig www.google.com

;; PREGUNTA SECCIÓN:
; www.google.com. EN UN

;; SECCION DE RESPUESTA:
Google 31 EN A 173.194.219.104
Google 31 EN UN 173.194.219.99
Google 31 EN A 173.194.219.103
Google 31 EN UN 173.194.219.147
Google 31 EN A 173.194.219.106
Google 31 EN UN 173.194.219.105

Eliminé información de encabezado y pie de página de la salida para que quede más claro.

Le pedí a DNS el registro A, que es el mapa estático principal. DNS también admite otros tipos de registros, como registros MX para correo electrónico.

Entonces, en este punto, escribió una dirección web en su navegador, su navegador a través de su sistema operativo solicitó la dirección IP de esa dirección web y en lugar de 1 dirección obtuvo 6. Esto se debe a que Google considera importante permanecer disponible si algo falla Uno de esos lugares.

Solo necesita una de esas direcciones, y cualquiera de ellas debería funcionar, por lo que su navegador debe seleccionar una. Sin embargo, siempre debe seleccionar el primero. Esto se debe a que si ejecuta su búsqueda de DNS varias veces obtendrá los mismos resultados en un orden diferente.

Esto se conoce como Round Robin DNS. Puede pensar que el servidor solo debería devolver el primer resultado para salvar el problema, pero el sistema DNS global es un poco más complicado y hay mucho almacenamiento en caché. Hay varios servidores raíz que contienen los registros maestros de toda la Internet pública. Estos no son los servidores DNS a los que apunta su navegador. Por lo general, estarías apuntando a los propios servidores DNS de tu ISP. Sus servidores hablarían con otros servidores que hablarían con otros servidores y en la cadena. Siempre que el servidor de su ISP tenga el registro que necesita, lo obtendrá de ellos y continuará sin esperar más intercambios.

Una vez que su navegador tiene la dirección IP que necesita, debe establecer una conexión con Google y solicitar la página de inicio.

Internet funciona en varios protocolos diferentes. Un protocolo es un sistema oficial de reglas que rigen la comunicación. Casi cualquier acrónimo asociado con Internet y que termina en P es un protocolo. Eso es lo que representa la P al final.
Por ejemplo:
IP, TCP, UDP, SMTP, IMAP, SNMP, FTP, SCP, ICMP, NTP, HTTP, HTTPS (ecure) y la lista sigue y sigue.

A menudo verá TCP / IP escrito de esa manera y con menos frecuencia para la mayoría de las personas UDP / IP.

IP es protocolo de Internet. El tipo de nombre indica dónde encaja.
Define las estructuras de datos en las que se transmite la información. También define el método de atravesar las distintas redes que componen Internet (protocolos de interconexión de redes que se implementan en dispositivos llamados “enrutadores”).
Los paquetes, en aras de la simplicidad, son la estructura de todo lo que transmite o recibe. Hay otros en la cadena más allá del nivel de LAN. Los paquetes tienen un cuerpo, que sería como la carta que está enviando y un encabezado que sería como el sobre con la dirección y tal.

UDP (Universal Datagram Protocol) se usa para cosas como la transmisión de audio y video. En este tipo de aplicaciones, sería bueno tener todos los paquetes. Sin embargo, si un paquete se pierde, no solo no le importa tanto, sino que le importa lo suficiente como para no perder el tiempo que tomaría volver a solicitarlo. Necesita mostrar el siguiente cuadro de video sin demora. Es por eso que a veces ves fallas en las transmisiones.

Eso no funcionará para las transferencias de archivos, que HTTP (Protocolo de transmisión de hipertexto) hace bastante. Debe asegurarse de que su documento .html esté completo cuando lo reciba para que realmente sepa qué contiene la página. Debes saber que todas las imágenes que descargas se descargan por completo, etc. Aquí es donde necesitas:

TCP (Protocolo de control de transmisión) funciona al realizar un seguimiento de qué paquetes se transmitieron y cuáles se recibieron.
Para hacer esto, abre una conexión y mantiene esa conexión abierta durante la transmisión. Si no se recibe un paquete transmitido dentro del período de tiempo de espera, se solicita una retransmisión para ese paquete.
UDP, por el contrario, es un protocolo sin conexión y no hace esto. Esto hace que UDP sea más barato de usar porque usa menos recursos reales (memoria, CPU, ancho de banda de red) en sus dispositivos y redes, todo lo demás es igual.

Estás sentado en una red de área local. Es poco probable que su computadora tenga una dirección IP de Internet real. Podría, pero la mayoría de la gente no. En cualquier caso, no es necesario que descubras el camino completo hacia Google desde tu casa debido a la forma en que está diseñado el enrutamiento IP. Su computadora tendrá una tabla de enrutamiento:

[ [correo electrónico protegido] ~] $ ruta
Tabla de enrutamiento IP del núcleo
Puerta de enlace de destino Banderas de Genmask Referencia métrica Uso Iface
predeterminado DD-WRT 0.0.0.0 UG 1024 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Esto muestra que sé acerca de 2 rutas:
1 a la red 10.0.0.0/24 en la que ya está activada, por lo tanto, no se necesita enrutamiento. Es una red privada. El nombramiento es un poco contrario a la intuición. Es privado en el sentido de que ese es el segmento de red que estoy usando. Pero no es privado en el sentido de que nadie más puede usarlo también. Muchas personas y empresas lo están utilizando, pero no están conectados a mis conmutadores y no hay una ruta entre ellos, por lo que no son realmente la misma red.

Es privado, ya que no se puede enrutar a Internet por definición. Hay varias redes privadas definidas para este propósito. Para acceder a Internet usando esa dirección, tengo que cambiar mi dirección a una que sea válida en Internet. Esto se hace usando lo que se conoce como puerta de enlace NAT.

Una puerta de enlace en general es un dispositivo de red que abarca varias redes. Probablemente tenga uno o más en su hogar. También podría ser un enrutador.

En este caso también es un enrutador
Esa es la línea que comienza “predeterminada” en la tabla de enrutamiento anterior, que es lo que se conoce como mi puerta de enlace predeterminada. Este es mi primer salto a cualquier otra red, excepto 10.0.0.0/24 desde esa máquina.

NAT es la traducción de direcciones de red, es uno de los principales tipos de firewall y lo que hace es tomar los paquetes que envía su computadora que tienen información como la dirección IP en el encabezado y encapsularlos. La encapsulación es como si recibiera una carta y luego la pusiera en un sobre diferente con una dirección diferente pero con su dirección de remitente en lugar de la dirección de la carta original.
Cuando la puerta de enlace NAT recibe los paquetes entrantes, los examina y los encapsula con la dirección privada para el destino deseado que rastrea a través de la conexión de socket.
Una pipa ‘|’ puede ser familiar para usted como algo más que una línea vertical en el teclado. En un shell (incluso el antiguo shell de DOS en un punto, pero generalmente UNIX), la tubería conecta la salida de un programa a la entrada de otro programa. Así es como se realiza la canalización en shells UNIX:
ls | grep X
enumeraría el directorio actual y, en lugar de decirle esa lista, le diría al programa grep que está buscando algo una X en él y luego grep se lo pasaría.
Además de una tubería simple, hay una tubería con nombre. Usaría esto en un programa o script para poder consultar la tubería más adelante. También puede tener una tubería bidireccional que le permite leer o escribir de un lado a otro.
Una tubería con nombre bidireccional es un zócalo. Si alguna vez te has preguntado sobre eso, en realidad es bastante simple.

Así que ahora para dar un paso atrás y ver su solicitud a google:

Su navegador tomó su solicitud de www.google.com y buscó la dirección del Protocolo de Internet para google.
Establece una conexión de socket TCP a esa dirección IP. Para llegar a esa dirección, primero salta a la puerta de enlace predeterminada que NAT los paquetes de conexión. La puerta de enlace predeterminada estará en otra red que no era visible desde el otro lado. Tendrá una ruta estática en su tabla de enrutamiento que le indicará cómo llegar a la dirección IP que necesita o, si no, pasará el paquete a su propia puerta de enlace predeterminada. Este proceso continúa tantas veces como sea necesario hasta que encuentre la dirección que está buscando o hasta que llegue al final de la línea en algún sentido o se exceda el tiempo de espera del paquete.

Los primeros paquetes que transmite son paquetes de control especiales que utiliza para establecer la conexión con el servidor remoto. El cliente y el servidor realizan un proceso de ida y vuelta denominado protocolo de enlace TCP de 3 vías:
Cliente: “SYN”
Servidor: “SYN” “ACK”
Cliente “ACK”

El cliente dice que quiero SINCRONIZAR una conexión contigo.
¿El servidor dice que quieres sincronizar? Reconocer.
El cliente responde ACKnowledge.
En este punto, hay una conexión abierta entre su computadora y algún dispositivo de Google. Supongamos que es solo uno de sus servidores web front-end, pero que tienen muchas otras capas allí … cortafuegos, equilibradores de carga, etc.

Cuando escribe en la barra de direcciones, su navegador lo ve como una solicitud HTTP que se traducirá en:
OBTENER /
o darme la página de nivel superior, sea cual sea el valor predeterminado del lado del servidor.

Luego envía su solicitud HTTP, que se coloca en paquetes TCP, dividiéndola en múltiples paquetes si es necesario, dependiendo del tamaño de los datos. Para este no será necesario. Estos paquetes se envían a lo largo de la conexión TCP donde el servidor web de Google eventualmente recibirá una solicitud HTTP que buscará y verá cuál es su página predeterminada y luego transmitirá ese documento HTML a su computadora.
Su navegador es, entre otras cosas, un motor de diseño HTML, por lo que sabe cómo tomar ese documento de texto sin formato y crear las páginas web que ve.

Para hacer esto, lo analiza y determina que hay varias cosas que tiene que salir y obtener de Internet. Esto incluirá imágenes, archivos javascript externos y muchas otras cosas.
En general, puede abrir varias conexiones TCP diferentes al servidor mientras lo hace. Eventualmente tendrá todas las piezas y en ese punto la página estará completamente cargada.

Esto es un poco largo, pero en realidad es necesario realizar algunos pasos para solicitar una página web simple. Dejé muchos detalles sobre cómo funcionan las capas reales de redes (modelo OSI), y probablemente podría ser ayudado por un poco de edición. Dejaré eso hasta mañana con quizás algunas preguntas y / o sugerencias para guiarme.