Hola, soy Carrie Anne y bienvenida a CrashCourse
Computer Science. Como hablamos en el último episodio, su computadora
está conectada a una gran red distribuida, llamada Internet. Lo sé porque estás viendo un
vídeo de YouTube, que se transmite a través de Internet. Está organizado como una red cada vez mayor de
dispositivos interconectados. Para que su computadora pueda ver este video, la primera
conexión es a su red de área local, o LAN, que puede ser cada dispositivo de su
casa que esté conectado a su enrutador wifi. Luego se conecta a una red de área amplia,
o WAN, que probablemente sea un enrutador administrado por su proveedor de servicios de Internet o ISP,
empresas como Comcast, AT&T o Verizon. Al principio, será un enrutador regional,
como uno para su vecindario, y luego ese enrutador se conectará a una WAN aún más grande, tal vez
una para toda su ciudad o pueblo.
Puede que haya un par de saltos más, pero al final
te conectarás a la columna vertebral de Internet formada por enrutadores gigantes con conexiones de ancho de banda súper alto
entre ellos. Para solicitar este archivo de video de youtube, un
paquete tenía que subir hasta la red troncal, viajar a lo largo de ella por un momento y luego
regresar a un servidor de youtube que tenía el archivo.
Podrían ser cuatro saltos hacia arriba, dos saltos a través de
la columna vertebral y cuatro saltos hacia abajo, para un total de diez saltos. Si está ejecutando Windows, MacOS o Linux,
puede ver los datos de ruta que toman a diferentes lugares de Internet utilizando el
programa traceroute en su computadora. Instrucciones en Doobly Doo. Para nosotros aquí en Chad & Stacey Emigholz
Studio en Indianápolis, la ruta hacia el servidor DFTBA en California pasa por 11 paradas. Comenzamos en 192.168.0.1: esa es la dirección IP
de mi computadora en nuestra LAN. Luego está el enrutador wifi aquí en el
estudio, luego una serie de enrutadores regionales, luego llegamos a la red troncal y luego
comenzamos a trabajar de regreso hasta la computadora que aloja "DFTBA punto com", que tiene la dirección IP
104.24.109.186.
Pero, ¿cómo llega realmente un paquete allí? ¿ Qué pasa si un paquete se pierde en el
camino? Si escribo “DFTBA punto com” en mi
navegador web, ¿cómo sabe la dirección del servidor? ¡ Esos son nuestros temas de hoy! INTRODUCCIÓN Como comentamos en el último episodio, Internet
es una enorme red distribuida que envía datos en forma de pequeños paquetes. Si sus datos son lo suficientemente grandes, como un
archivo adjunto de correo electrónico, es posible que se divida en muchos paquetes. Por ejemplo, esta transmisión de video llega
a su computadora ahora mismo como una serie de paquetes y no como un archivo gigantesco. Los paquetes de Internet deben ajustarse a un estándar
llamado Protocolo de Internet o IP. Es muy parecido a enviar correo físico a través
del sistema postal: cada carta necesita una dirección única y legible escrita en ella,
y existen límites en cuanto al tamaño y peso de los paquetes. Si viola esto, su carta no
llegará. Los paquetes IP son muy similares.
Sin embargo, IP es un protocolo de muy bajo nivel:
no hay mucho más que una dirección de destino en el encabezado de un paquete, que son los metadatos
que se almacenan delante de la carga de datos. Esto significa que un paquete puede aparecer en una
computadora, pero es posible que la computadora no sepa a qué aplicación entregar los datos; Skype o
Call of Duty. Por este motivo, se desarrollaron protocolos más avanzados
que se sitúan por encima del IP.
Uno de los más simples y comunes es el
Protocolo de datagramas de usuario o UDP. UDP tiene su propio encabezado, que se encuentra dentro de
la carga útil de datos. Dentro del encabezado UDP hay información adicional útil
. Uno de ellos es un número de puerto. Cada programa que desee acceder a Internet
solicitará al sistema operativo de su computadora host que se le asigne un puerto único. Por ejemplo, Skype podría solicitar el número de puerto 3478.
Cuando llega un paquete a la computadora, el
sistema operativo buscará dentro del encabezado UDP y leerá el número de puerto. Luego, si ve, por ejemplo, 3478,
entregará el paquete a Skype. Entonces, para revisar, IP lleva el paquete a la
computadora correcta, pero UDP lleva el paquete al programa correcto que se ejecuta en esa computadora. Los encabezados UDP también incluyen algo llamado
suma de verificación, que permite verificar la exactitud de los datos . Como sugiere el nombre, lo hace verificando
la suma de los datos. Aquí hay una versión simplificada de cómo
funciona esto. Imaginemos que los datos sin procesar en nuestro paquete UDP
son 89 111 33 32 58 y 41.
Antes de enviar el paquete, la
computadora transmisora calcula la suma de verificación sumando todos los datos: 89 más 111 más 33
y así sucesivamente. En nuestro ejemplo, esto suma una suma de verificación
de 364. En UDP, el valor de la suma de verificación se almacena en 16
bits. Si la suma excede el valor máximo posible,
los bits superiores se desbordan y solo se utilizan los bits inferiores. Ahora, cuando la computadora receptora recibe este
paquete, repite el proceso, sumando todos los datos.
89 más 111 más 33 y así sucesivamente. Si esa suma es la misma que la suma de verificación enviada
en el encabezado, todo está bien. Pero, si los números no coinciden, sabrá
que los datos se corrompieron en algún momento del tránsito, tal vez debido a una fluctuación de energía
o un cable defectuoso. Desafortunadamente, UDP no ofrece ningún mecanismo
para reparar los datos o solicitar una nueva copia: los programas receptores son alertados de la corrupción, pero
normalmente simplemente descartan el paquete. Además, UDP no proporciona ningún mecanismo para saber si los
paquetes están llegando: una computadora emisora dispara el paquete UDP, pero
no tiene confirmación de que llegue a su destino exitosamente.
Ambas propiedades suenan bastante catastróficas,
pero algunas aplicaciones están de acuerdo con esto, porque UDP también es realmente simple y rápido. Skype, por ejemplo, que utiliza UDP para video
chat, puede manejar paquetes corruptos o faltantes. Es por eso que a veces, si tienes una mala
conexión a Internet, Skype falla: solo algunos de los
paquetes UDP llegan a tu computadora. Skype hace lo mejor que puede con los datos que
recibe correctamente. Pero este enfoque no funciona para muchos
otros tipos de transmisión de datos. En realidad no funciona si envías
un correo electrónico y aparece sin el medio . ¡ Todo el mensaje realmente necesita llegar
correctamente! Cuando “es absolutamente necesario
llegar allí”, los programas utilizan el Protocolo de control de transmisión, o TCP, que, al igual que UDP,
viaja dentro de la carga útil de datos de los paquetes IP. Por esta razón, la gente se refiere a esta combinación
de protocolos como TCP/IP. Al igual que UDP, el encabezado TCP contiene un
puerto de destino y una suma de comprobación.
Pero también contiene características más sofisticadas y
nos centraremos en las clave. En primer lugar, a los paquetes TCP se les asignan
números secuenciales. Entonces, al paquete 15 le sigue el paquete 16, a éste le
sigue el 17, y así sucesivamente… potencialmente para millones de paquetes enviados durante esa sesión. Estos números de secuencia permiten que una computadora receptora
coloque los paquetes en el orden correcto, incluso si llegan en diferentes momentos a través de
la red.
Entonces, si un correo electrónico llega todo codificado, la
implementación de TCP en el sistema operativo de su computadora lo ensamblará todo correctamente. En segundo lugar, TCP requiere que una vez que una computadora
haya recibido correctamente un paquete (y los datos pasen la suma de verificación) envíe
un acuse de recibo, o "ACK", como dicen los chicos populares, a la computadora que lo envía. Sabiendo que el paquete llegó exitosamente, el
remitente ahora puede transmitir el siguiente paquete. Pero esta vez, digamos, espera y
no recibe ningún paquete de confirmación. Algo debe estar mal. Si transcurre suficiente tiempo,
el remitente seguirá adelante y simplemente retransmitirá el mismo paquete.
Vale la pena señalar que es posible que el paquete original
haya llegado allí, pero el acuse de recibo está muy [ __ ]. O tal vez fue el reconocimiento lo que
se perdió. De cualquier manera, no importa, porque el
receptor tiene esos números de secuencia y, si llega un paquete duplicado, puede descartarlo. Además, TCP no se limita a una conversación de ida y vuelta
: puede enviar muchos paquetes y tener muchos ACK pendientes, lo que aumenta
significativamente el ancho de banda, ya que no pierde tiempo esperando que regresen los paquetes de confirmación
. Curiosamente, la tasa de éxito de los ACK y
también el tiempo de ida y vuelta entre el envío y el reconocimiento se pueden utilizar para inferir la
congestión de la red.
TCP utiliza esta información para ajustar la agresividad con la que
envía paquetes, un mecanismo para el control de la congestión. Entonces, básicamente, TCP puede manejar la
entrega de paquetes desordenados, paquetes descartados (incluida la retransmisión) e incluso limitar su
velocidad de transmisión de acuerdo con el ancho de banda disponible. ¡ Bastante impresionante! Quizás se pregunte por qué alguien usaría UDP
cuando TCP tiene todas estas funciones ingeniosas.
El mayor inconveniente son todos esos
paquetes de confirmación: duplican la cantidad de mensajes en la red y, aun así,
no transmites más datos. Esa sobrecarga, incluidos los retrasos asociados,
a veces no compensa la solidez mejorada, especialmente para aplicaciones en las que el tiempo es crítico,
como los shooters multijugador en primera persona. Y si eres tú quien se está quedando atrás, ¡
definitivamente estarás de acuerdo! Cuando su computadora quiere conectarse
a un sitio web, necesita dos cosas: una dirección IP y un puerto. Como el puerto 80, en 172.217.7.238. Este ejemplo es la dirección IP y el puerto
del servidor web de Google. De hecho, puedes ingresar esto en la
barra de direcciones de tu navegador, así, y terminarás en la página de inicio de Google.
Esto lo llevará al destino correcto, pero
recordar esa larga cadena de dígitos sería realmente molesto. Es mucho más fácil de recordar: google.com. Por eso, Internet cuenta con un servicio especial que
asigna estos nombres de dominio a direcciones. Es como la guía telefónica de Internet. Y se llama Sistema de nombres de dominio,
o DNS para abreviar. Probablemente puedas adivinar cómo funciona. Cuando escribe algo como "youtube.com"
en su navegador web, le pide a un servidor DNS (generalmente uno proporcionado por su
ISP) que busque la dirección. DNS consulta su enorme registro y responde
con la dirección… si existe. De hecho, si intentas maquillar el teclado,
agregar “.com” y luego presionar Enter en tu navegador, probablemente aparecerá
un error que dice DNS fallido.
Esto se debe a que ese sitio no existe,
por lo que DNS no pudo darle una dirección a su navegador. Pero, si DNS devuelve una dirección válida, lo que
debería ser para "youtube.com", entonces su navegador envía una solicitud a través de TCP para obtener
los datos del sitio web. Hay más de 300 millones de nombres de dominio registrados
, por lo que para que la búsqueda de DNS sea un poco más manejable, no se almacena como una
lista gigantescamente larga, sino en una estructura de datos de árbol. Los llamados dominios de nivel superior, o TLD,
se encuentran en la cima. Estas son categorías enormes como .com y .gov. Luego, hay dominios de nivel inferior que se encuentran
debajo de eso, llamados dominios de segundo nivel; Los ejemplos bajo .com incluyen google.com y
dftba.com. Luego, existen incluso dominios de nivel inferior,
llamados subdominios, como imágenes.google.com, store.dftba.com.
¡ Y este árbol es absolutamente ENORME! Como dije, más de 300 millones de
nombres de dominio, y eso es solo nombres de dominio de segundo nivel , no todos los subdominios. Por este motivo, estos datos se distribuyen
entre muchos servidores DNS, que son autoridades para diferentes partes del árbol. Vale, sé que lo estabas esperando… ¡ Hemos alcanzado un nuevo nivel de abstracción! En los dos últimos episodios, hemos trabajado
a partir de señales eléctricas en cables o señales de radio transmitidas por el aire en el
caso de redes inalámbricas.
Esto se llama Capa Física. Las direcciones MAC, la detección de colisiones, el
retroceso exponencial y protocolos similares de bajo nivel que median el acceso a la capa física son parte
de la capa de enlace de datos. Por encima de esto está la capa de red, que es
donde operan todas las tecnologías de conmutación y enrutamiento que analizamos. Y hoy cubrimos principalmente la
capa de transporte, protocolos como UDP y TCP, que son responsables de la transferencia de datos punto a punto
entre computadoras, y también cosas como la detección y recuperación de errores cuando sea posible. También hemos rozado la capa de sesión, donde se
utilizan protocolos como TCP y UDP para abrir una conexión, pasar información de un lado a otro
y luego cerrar la conexión cuando finaliza : lo que se llama una sesión. Esto es exactamente lo que sucede cuando, por
ejemplo, realiza una búsqueda de DNS o solicita una página web. Estas son las cinco capas inferiores del
modelo de interconexión de sistemas abiertos (OSI), un marco conceptual para compartimentar todos estos
diferentes procesos de red.
Cada nivel tiene diferentes cosas de qué preocuparse
y resolver, y sería imposible construir una implementación de red enorme. Como hemos hablado en todas las series, la abstracción
permite a los científicos e ingenieros informáticos mejorar todos estos diferentes niveles de
la pila simultáneamente, sin verse abrumados por toda la complejidad. Y sorprendentemente, aún no hemos terminado… El modelo OSI tiene dos capas más, la
capa de presentación y la capa de aplicación, que incluyen cosas como navegadores web, Skype, decodificación HTML,
transmisión de películas y más. Del cual hablaremos la próxima semana. Hasta entonces..