Hola, soy Carrie Anne y ¡bienvenida a CrashCourse
Computer Science! Como hablamos sobre el último episodio, su computadora
está conectada a una gran red distribuida, llamada Internet. Lo sé porque estás viendo un
video 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 obtenga este video, la primera
conexión es a su red de área local, o LAN, que podría ser cada dispositivo en 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
, compañías como Comcast, AT&T o Verizon. Al principio, este será un enrutador regional,
como uno para su vecindario, y luego ese enrutador se conecta a una WAN aún más grande, tal vez
una para toda su ciudad o pueblo. Puede haber un par de saltos más, pero finalmente
se conectará a la red troncal de Internet compuesta por enrutadores gigantes con conexiones de ancho de banda súper alto
que se ejecutan entre ellos.
Para solicitar este archivo de video de youtube, un
paquete tuvo que abrirse camino hasta la red troncal, viajar a lo largo de eso por un rato y
luego regresar a un servidor de youtube que tenía el archivo. Eso podría 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 la ruta que toman los datos a diferentes lugares en Internet utilizando el
programa traceroute en su computadora. Instrucciones en el Doobly Doo. Para nosotros aquí en Chad & Stacey Emigholz
Studio en Indianápolis, la ruta al servidor DFTBA en California pasa por 11 paradas. Empezamos 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 a 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é sucede 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! INTRO Como discutimos 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 dividan en muchos paquetes. Por ejemplo, esta transmisión de video está llegando
a su computadora en este momento como una serie de paquetes, y no como un archivo gigantesco. Los paquetes de Internet deben cumplir con 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 para el tamaño y el 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 frente a 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 darle los datos; Skype o
Call of Duty. Por esta razón, se desarrollaron protocolos más avanzados
que se asientan sobre 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 de datos. Dentro del encabezado UDP hay información extra útil
. Uno de ellos es un número de puerto. Cada programa que desee acceder a Internet
le pedirá al sistema operativo de su computadora host que se le otorgue un puerto único. Al igual que 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, le
dará el paquete a Skype. Entonces, para repasar, 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 comprobando
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 se suma a 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, sabe
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 corregir los datos o solicitar una nueva copia: los programas receptores reciben alertas sobre la corrupción, pero
generalmente simplemente descartan el paquete. Además, UDP no proporciona ningún mecanismo para saber si los
paquetes están pasando: una computadora emisora dispara el paquete UDP, pero
no tiene confirmación de que haya llegado a su destino con éxito. 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 usa UDP para
chat de video, puede manejar paquetes dañados o faltantes. Es por eso que a veces, si tiene una mala
conexión a Internet, Skype se vuelve defectuoso: solo algunos de los
paquetes UDP llegan a su 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. Por ejemplo, realmente no funciona si envía
un correo electrónico y aparece sin el medio. ¡Todo el mensaje realmente necesita llegar allí
correctamente! Cuando "absoluta y positivamente necesita
llegar allí", los programas utilizan el Protocolo de control de transmisión, o TCP, que al igual que UDP, se encuentra
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 verificación. Pero también contiene funciones más sofisticadas y
nos centraremos en las más importantes. En primer lugar, los paquetes TCP reciben
números secuenciales. Así que el paquete 15 es seguido por el paquete 16, el cual
es seguido por el 17, y así sucesivamente… potencialmente 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 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 geniales, a la computadora emisora. Sabiendo que el paquete lo hizo con éxito, el
remitente ahora puede transmitir el siguiente paquete. Pero esta vez, digamos, espera y
no recibe un paquete de confirmación. Algo debe estar mal. Si transcurre el tiempo suficiente,
el remitente seguirá adelante y retransmitirá el mismo paquete. Vale la pena señalar que el paquete original
podría haber llegado allí, pero el reconocimiento está realmente [ __ ]. 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 descartarse. 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 el tiempo esperando
que regresen los paquetes de reconocimiento.
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, los paquetes perdidos, incluida la retransmisión, e incluso acelerar 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 características ingeniosas. La desventaja más grande son todos esos
paquetes de reconocimiento: duplica la cantidad de mensajes en la red y, sin embargo,
no está transmitiendo más datos. Esa sobrecarga, incluidos los retrasos asociados, a
veces no vale la pena por la robustez mejorada, especialmente para aplicaciones en las que el tiempo es crítico,
como los juegos de disparos en primera persona multijugador. Y si eres tú el que se está quedando sin aliento, ¡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 puerto 80, en 172.217.7.238. Este ejemplo es la dirección IP y el puerto
del servidor web de Google. De hecho, puede ingresar esto en la
barra de direcciones de su navegador, así, y terminará en la página de inicio de Google. Esto lo lleva 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.
Internet tiene 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 escribes algo como "youtube.com"
en tu navegador web, este va y le pide a un servidor DNS, generalmente uno proporcionado por tu
ISP, que busque la dirección. DNS consulta su enorme registro y responde
con la dirección… si existe. De hecho, si intenta combinar su teclado,
agregar ".com" y luego presionar Intro en su navegador, es probable que se le presente
un error que dice que el DNS falló. Eso es porque ese sitio no existe,
por lo que el DNS no pudo darle una dirección a su navegador. Pero, si el DNS devuelve una dirección válida,
que debería ser para "youtube.com", entonces su navegador envía una solicitud a través de TCP para
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 parte superior. 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, hay incluso dominios de nivel inferior,
llamados subdominios, como images.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 esta razón, estos datos se distribuyen
entre muchos servidores DNS, que son autoridades para diferentes partes del árbol. Está bien, sé que lo estabas esperando… ¡Hemos alcanzado un nuevo nivel de abstracción! En los últimos dos 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 la 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 discutimos.
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 de errores y la recuperación cuando sea posible. También hemos rozado la capa de sesión, donde
se usan 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 termina , 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 cosas diferentes de las que preocuparse
y resolver, y sería imposible construir una gran implementación de red.
Como hemos hablado de 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 la complejidad total. Y, sorprendentemente, todavía 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 de HTML,
transmisión de películas y más. De lo que hablaremos la próxima semana. Hasta entonces..