Clase 31.07¶

Cuando un dispositivo (como una computadora) quiere comunicarse con otro dentro de la misma red, necesita saber la dirección MAC del destino. Si solo conoce la dirección IP, usa ARP para descubrir la MAC correspondiente.

  • El dispositivo envía una solicitud ARP (ARP Request) a toda la red: "¿Quién tiene la IP 192.168.1.10? Responde con tu MAC."

  • El dispositivo con esa IP responde con su dirección MAC.

  • El solicitante guarda esa asociación IP ↔ MAC en su tabla ARP, una caché temporal.

En algun momento tenemos la necesidad que direccion fisica tiene una direccion ip. Entonces lo que hace el protocolo cuando alguien tiene la necesidad de hacer eso. Lo manda al brodcast del canal.

Y quien se identifique, sabe quien tiene ese dato . La persona o la entidad responderia que tiene eso.

La respuesta es directa la pregunta en brodcast. En cache se almacena las respuestas del ARP para no andar repitiendo lo mismo.

image.png

Mira asi le respondio el router

el sudo arp -va enlistar la cache

arp -v es verbose **-a formateo address ip***

-d borrar del registro esto lo hacemos con sudo arp para eliminar la ip de la cache , el automaticamente llama coon arp

Clase 05.08¶

Capa de Red¶

Lo que tratamos de hacer es a diferencia de la capa de enlace, es no hacer cada uno de los saltos, sino que hay que hacer varios saltos para llevar paquetes

Routers¶

Forwading¶

Hacer reeenvio, accion de transferrior paquete en un enlace de netrada y un enlace de salida.

Routing¶

Proceso de rutas que los paquetes, y el se encarga de llenar las tablas que se consultan para saber en que direccion llegara el paquete

Entonces uno revisa la tabla y el otro la llena.

Sevicio Conecttion oriented y Coneection Less¶

Coneccion Less¶

Es el que gano ,estandar debido a que la filosofia de extremo a extremo, las redes en si que los datos no son confiables, entonces que sepamos que uno de cada tanto se va a perder. Si la red no es confiable, el punto A al punto B entre saltos pondre la direccion completa de destino y se recalcula la ruta, y cada host maneja errores. Esta basicamente tipo brodcast el servicio y de ahi viene ip.

Conection Oriented¶

No se recalcula la ruta, sino que se reserva la ruta entera. Y entonces se reservan variables y rutas en donde va a correr. Osea la ruta ya se reservo. Se gano una conexion, va a llegar bien los paquetes. Por eso se caia el internet al usar el telefono a la vez

image.png

Aqui puedes ver que ya se reservo esos saltos y nadie mas los puede usar, de aqui viene UDP

Algoritmos de Enrutamiento¶

-Tienen que ser simple

  • Robusto ante fallos y nuevos nodos
  • Estable o que converge osea que la tabla de enrutamiento converga a una definitiva
  • Justo que todos puedan usar la red bien

Un ejemplo es aqui image.png

El problema es que X y x' quieren comunicarse entre si. Entonces lo que podemos hacer para balancearlo es decirle a A y B que no compartan comunicacion, y entonces usar el canal, pero en esta distribucion sacrificas eficiencia.

Bellman¶

Hay maneras de optimizar los saltos entre cada enlace, lo que podemos usar son algoritmos de optimizacion como e Bellman.

Lo que queremos hacer es encontrar optimizas, lo que dice es

image-2.png

Hay ciertos nodos en un grafo , pero hay una ruta con minima distancia. Si resulta que hay otro nodo J , por consiguiente, ese nodo es parte de la ruta optima si J es optimo.

Nos dice que la subruta , tambien pertenece a la ruta optima. Esto para N nodos aplica.

Djiskstra¶

Resuelve la ruta optima, lo que hace es que vamos a ir iterativvamente resolviendo el grafo, no solo resuleto la ruta de A a B , sino todas las rutas de A hacia todos los destinos y encontrar la que tenga el menor de los pesos.

El problema es que la red no es estatica sino dinamica. Y djisktra depende de que si sea estatico.

Flooding¶

El problema de este es que por brodcast mandamos todo

image.png

Osea que hacemos propagacion a todos los vecinos y estos a sus vecinos

Algirmots Dinamicos¶

Disntacia Vector Routing¶

Cada tanto tiempo usamos la tabla, la empaquetamos, la mandamos por brodcast, porque esto se lo envio a los vecions. Entonces y usando esa info, van a actualizar su tabla sin tener que

image.png

EL enrutador va a recibir de todos la informacion de la tabla, pero cada PC pedira al router la tabla que debemos de usar.

Por ejemplo

$$JG = JA + AG = 26$$

Link state routing¶

Para llegar a la convergencia de la tabla, el problema es que cuando alguien se desconectaba en el anterior, entonces para darse cuenta que estaba muerto pasa muchisimo.

Cada router descubre su vecindario (a quién está conectado y el costo de los enlaces).

Envía esa información a todos los routers (mediante mensajes llamados Link State Advertisements, LSAs).

Todos los routers construyen un mapa completo de la red.

Cada router calcula la mejor ruta a cada destino usando Dijkstra.

Clase 0708¶

Esta fue de un repaso rapido de la anterior solo recordar que

  • Paquetes que se envian en la red

image.png

  • Paquetes que se envian en la red

Proyecto 1¶

image.png

Link de la Pagina

Vamos a hacer un MCP server , en donde pueda usar los LLMS para poder nutrirse y saber que hacer. EL objetivo es un chat donde le puedas hacer varias preguntas , esto se hace con un protocolo de RCP y json usando un server MCP.

La parte de probar remoto,no vamos a probar, es que pasaremos el .py del server, lo que hace MCP hace las llamadas y toma el control del server. Pasamos el codgo dela gente porque nos gastaremos los credtos de los demas.

Clase 1208¶

image.png

Este diagrama como ves no es tan justo. Debemos de sacrificar que no pueda existir conexion entre extremos,

image-2.png

Distance Vector Routing¶

Cada roter de la red tiene una tabla con la fila que indica la info de cada nodo de la red . Enviamos a nuestros vecinos un vector con las distancias hacia los demas nodos de la tabla

Esto se hace de que cada x segundos se envian la tabla, Lo que se gana es que si mi vencino no me envia nada por mucho tiempo entonces es que se ultramurio, y le vamos poniendo cada vezmas pesos

Pasos del algoritmo¶

  • Detectar mis vecinos
  • Armar tu tabla y se la mandas a tus vecinos, y recalculas con el algoritmo que veremos acontinuacion

image-3.png

Mucho de estos codigos corren en paralello. No podes venir y secuencialmente bloquear todo lo demas.

En la figura se ve como a travez de ping creamos tablas en donde calculamosel tiempo de tus vecinos y luego llenas la tabla.

image-4.png

Habiendo hecho eso, luego como se ven en la figura tuodos los nodos comparten tablas, y luego en nodos que no se tienen ruta directa la distancia serian la distancia de mi hacia mi vecino y la de mi vecino al nodo D, esto se hace para nodos que no sabe D que existen. Ojo siempre se instancia D como infinito

Si una de las rutas es menor, de todas las calculadas al nuevo nodo se obtiene el que tiene menor pesos

image-5.png

Si llega un nuevo nodo, se le pide la tabla y se toman varias iteraciones para propagar la info del nuevo nodo. Por ello siempre se pide cada cierto tiempo la info para poder llenar las tablas

image-6.png

SI un nodo se cae es como lo mencionamos que el peso del tiempo lo colocamos de infinito, cada iteracion le incremento el peso mas y mas

Cuando algo se cae la info se tarda mas en propagarse porque se intuye que no esta caido.

Eventualmente le pondremos un time up. Y entonces le ponemos infito el peso.

image-7.png

Pero digamos que puede pasar que se restablece la conexion con otro nodo, entonces ahi hacemos el calculo, y podemos usar esa ruta en vez de la que ya teniamos con ese nodo.

Pero el problema es que si B esta muerto , C pensara que la mejor manera es pasarla por A ,etnonces el paquete estara rebotando entre los 2 ya que los 2 piensan que la mejor info es en el otro. Es como tener un ciclo casi infinito en donde los paquetes se reenvian a si mismo.

Despues se cambio a otro algoritmo debido a este problema de redireccionamiento propio

Link State Routing¶

Son protocolos sobre el algoritmo . Armamos una representacion completa de la red, y despues una vez yo ya tengo la info completa del grafo. Literal resuelvo con algoritmos con djstra.

Armemos el grafo primero para llamar a djstra.

Ose que enviamos a toda la red el grafo completo.

  • Detectar vecinos y medir distancias
  • Construir el paquete de enlace y enviarlo al brodcast.
  • Empezamos a escuchar paquetes de la red, armamos el grafo y repetimos

El problema es que llenamos la red. D

Si lo vemos a nivel macro, eventualemnte me va a llegar un paquete de un nodo de los paquetes de red.

image-8.png

Si se cae D por ejemplo todo el mundo se dio cuenta que D se murio. Y dejan de enviar

Inicializacion¶

image-9.png

Los 4 nodos arrancan a la vez y conocen las intefaces y los vecinos, se arma el paquete y se envian a brodcast

Que es lo que debemos de optimizar si inundamos la red. Estos paqutes con el estado del enlace. Llevan tambien un numero de secuencia ,llevan un numero de edad e info.

image-10.png

EL paquetes de edad o TtL este campo de edad es envejecer el paquete , le vas restando y cuando lees 0 ya no inundas el paquete, Lo que permite que el paquete de estado, ese mismo paquete se quedaria dando vueltas, otra tecnia es que se espera un momento en enviar, y comparar con posiblemente paquetes de estados mas prontos y ver el estado del enlace. Esto es guardarlo un rato para ver que cambio..

El buffer de los router recuerda los LSPs recibidos en un tiempo.

Esa edad esta dada por la red no por el router, cuando la red se levanta.

image-11.png

Idealmente que la edad, por lo menos la edad tiene que ser el diametro de la red sino nunca lo vamos a enviar.

El wort case escenario es una red de linea recta. xd

Hay ciertos paquetes que solo lanzas, pero con confirmacion de recepcion, cada paquete que te envian debes de decirle al que te envio que lo recibiste bien y sin errores

Hay un problema, async IO el problema que tiene es que en python pasan pedos.

Muchos usan JAVA , en JAVA es mas fuerte pero ahora ya mejoraron async IO

Async IO, esta bien , podeos usar fast api para el server web, y tambien lo que vamos a hacer es utilizar solo python para cosas de backend y un poco de react para un simple app web.

Laboratorio 3¶

Redis es un servidor que levanto para el proyecto

Usa un patron de public subscribe, no se hacen querys en la data sino que le dicen los canales de informacion es un lugar donde hay flujo de mensajes

Yo me suscribo a esos canales, "Nodo 1 Grupo 1" ejemplo. Cuando el detecta que se suscribio a ese canal, y le va a responder a cada uno de los interesados los mensajes que le cayeron ahora.

image.png

Este es un ejemplo con redis async

image-2.png

Es un ejemplo

El canal se crea al subscribis , redis lo crea sino existe

Esto del proyecto 2¶

image-3.png

El proveedor usemos digital ocean

Compramos un dominio

image-4.png

y lo apuntamos a digital ocean

image-5.png

image-6.png

Lo importantes en en la parte de networking, creas tu name server y lo dirigis a tu namecheap

image-7.png

image-8.png

Luego creamos una maquina virtual

Creamos nuestros droplets image-9.png

y asi se elige nuestra VM image-10.png

Clase 25092025¶

Hizo un repaso de la capa de aplicacion, debo de verlo por el libro. Me pusieron a trabajar en plena clase.

image.png

Aqui le pedimos la ip al host , y nos marca a los records de esa persona.

image-2.png

Ahora este le pedimos todos los name servers que tiene al mismo host.

El hecho que no es autoritativo sino vino de otra persona distinta en su cache. Es que nos rediriga de otro lado

image-3.png

Y sirve para poder ver la info de forma reverse como aqui

image-4.png

Este comando , podemos ver que name servers apuntan a las direcciones que configuro para clodufrade. Pero una cosa interesante es que con nslookup no responde ya que mato el server. Pero con whois si funciona ya que si estan los nameservers.

Ahora la borraremos la cache.

image-5.png

Clase 02102025¶

image.png

La coneccion de internet funciona de la siguiente manera ,

Tenemos un proveedor de internet

Cuando tengamos un subconjunto o de redes se llama interred Siginfica que gente con equipos o provedores con internet, en su infraestructura pues estas identidades son redes.

Todas estas entidades independientes se tienen como sistemas autonomos

Intradominio es otro tipo de enrutamiento

Permite conmutar entre distitnas capas de red. image-2.png

image-3.png

image-4.png

image-5.png

Otra forma , para interconectar es llamada la tecnica de tunelizacion . Lo que hace es encapsula o tuneliza que atraviesa la red.

image-6.png

MLPS sirve para saltar de enlace fisico de wifi a ethernet es una forma de indermediario. Como nuestro provedor de red.Ya para redes normales como computadores se usa tunelizacion

La tunelizacion se usa como en las VPNS

image-7.png

https://www.cisco.com/assets/sol/sb/RV260W_Emulators/RV260W_Emulator_v1-0-00-14/index.htm#/systemSummary

Este es un link de como gestionar un router cisco

image.png

Ahora los headers. Es el encabezado del protocolo ipv4

image-2.png

Sucede algo interesante , es el termino que se llame endiannes image-3.png

nterpretación correcta de los datos: Cuando dos computadoras (o protocolos) se comunican, es importante saber si el valor multi-byte (por ejemplo, un número de 16 o 32 bits) se envía en formato Big Endian (BE) o Little Endian (LE).

Big Endian (BE): el byte más significativo va primero (como leemos los números normalmente).

Little Endian (LE): el byte menos significativo va primero.

Ejemplo con el número 0x1234:

BE en memoria: 12 34

LE en memoria: 34 12

Protocolos de red (como IPv4): En redes, casi todos los protocolos usan Big Endian (también llamado network byte order). Esto asegura que, sin importar si tu PC es Intel (Little Endian) o un servidor PowerPC (Big Endian), ambos entiendan los datos de la misma forma.

Si no hacemos eso puede haber errores de interpretacion de los bits dependiendo del orden que empezamos a guardar las cosas

Muy buena pregunta 👌

🔹 Concepto básico¶

Cuando guardamos un número en memoria (por ejemplo, un entero de 2 o 4 bytes), ese número se divide en bytes individuales. El endianness indica en qué orden se guardan esos bytes en memoria:


🔸 Big Endian (BE)¶

  • El byte más significativo (MSB) se guarda primero, en la dirección de memoria más baja.
  • Es el modo más “natural” para los humanos porque escribimos los números de izquierda a derecha.

Ejemplo con el número 0x12345678 (32 bits = 4 bytes):

Dirección Contenido
0x00 12
0x01 34
0x02 56
0x03 78

🔸 Little Endian (LE)¶

  • El byte menos significativo (LSB) se guarda primero, en la dirección más baja.
  • Es el formato usado por procesadores Intel y AMD.

Mismo número 0x12345678:

Dirección Contenido
0x00 78
0x01 56
0x02 34
0x03 12

🔹 ¿Dónde se usa cada uno?¶

  • Little Endian → la mayoría de PCs actuales (Intel, AMD).
  • Big Endian → protocolos de red (por eso se dice “network byte order”), algunos procesadores antiguos (Motorola, SPARC, PowerPC).

🔹 Ejemplo sencillo¶

Número 0x1234 (16 bits = 2 bytes):

  • Big Endian: 12 34
  • Little Endian: 34 12

✅ En resumen:

  • Big Endian = primero lo más grande (MSB primero).
  • Little Endian = primero lo más pequeño (LSB primero).

Ahora hablemos de terminologia

image-4.png

Tenemos 32 bits para tener identificadores. image-5.png

Pedazos continuos de direcciones ips para segmentar image-6.png

image-7.png

image-8.png

Hay una parte que determina la red y hay otra parte que determina el equipo

image-9.png

image-11.png image-10.png

127.0.0.1

Era localhost no genera trafico fuera del equipo.

Tenemos esta direccion

image-12.png

11.56.0.0/20

Los primeros 20 bits de esto, todos estos primeros son las red y el resto de bits de los 12 van a ser los host que tu tenes.

ahora tenemos una entrada por cada subred

image-13.png

image-14.png

Ahora regresando al ejemplo anterior

image-15.png

ves que asi tenemos la red 11.56.0.0/20

Este numero va a ser el maximo de ips a tener

image-16.png

Miara este es un ejemplo

image-17.png

180.218.66.128/26 180.218.66.191/26 (bcast)

179.23.201.11/32

es una red donde solo cabe un host posible osea ella misma

image-18.png

La IP que tenemos es 121.183.49.196/29.


1. Máscara /29¶

  • /29 significa que 29 bits fijos de red y 3 bits de host.

  • Máscara: 255.255.255.248 → en binario:

    11111111.11111111.11111111.11111000
    

2. Último octeto de la IP¶

La IP es 196, en binario:

196 = 11000100

3. Separar red y host¶

  • Como /29 → 5 bits de red + 3 bits de host (en el último octeto).

  • Tomamos los 5 primeros bits:

    11000xxxxx   → 11000 = 192
    

    Esto nos da la dirección de red = 192.

  • Los 3 bits de host se ponen en 000 para la dirección de red, y en 111 para el broadcast.


4. Rango completo¶

  • Red (host bits = 000): 192 → 121.183.49.192
  • Broadcast (host bits = 111): 199 → 121.183.49.199
  • Hosts válidos: 193 – 198

✅ Entonces, calculado manualmente:

  • Red: 121.183.49.192
  • Broadcast: 121.183.49.199

CLASE 07102025¶

image.png

Nosotros vemos que las redes son bastantes. Parece que no es factible todas esas direcciones de esa tabla. Actualmente la red publica se estructura de manera jerarquica.

image-2.png

Hay que ver que el prefijo al hacer esa asignacion o subred sea algo que no se desperdicie, sino se maneja con cuidad .

La cantidad de redes de clases A pueden ser hasta 4 porque image-3.png

podemos tener de clase A 256 o 2 ^ 8 redes. image-4.png

veamos el funcionamiento de NAT . Es traducir la red yo que doy la cara que tiene la direccion publica tengo a varias direcciones ips que tenemos a mi. Por eso traducimos los paquetes, lo recuerda a una tabla de mapeo, los routers natean . estan integradas en los routers. image-5.png

CONSIDERA LO SIGUIENTE

image-6.png

EJEMPLO image-7.png

image-8.png

Una cosa importante es que la mascara de subred y la direccion de mi computadora me daria la direccion de mi red.

EJEMPLO

image-9.png

ASI SE MIRA /26

image-11.png

LA PRIMERA DIRECCION QUE CAE EN LA RED ES LA MASCARA AND IP

image-10.png

image-12.png

ves el ejemplo podemos asignar mas ips solo cambiamos los 0s uqe ya estan

image-13.png

este ejercicio mira

image-14.png

image.png

Cuantos host le caben a la red le quitamos 2 , la primera y ultima nadie la utiliza

CLASE 09102025¶

image.png

El proceo es

RED A:

192.168.5.0/26

.5.0 - .5.63 no le puedo dar ese cuarto

Va necesitar el doble de lo que necesita

pero direccion no es lo mismo a host, vimos que nuestro equipo que nuestra red nos cabe 64 host en la misma red, por eso damos un slash mas todo el chuck /25

por eso es de .5.0 - .5.127 /25

osea

0xxxxxxx

.128 - .255 una /26 queda ya que tiene 62 hosts

image-2.png

image-3.png

y esta seria la resolucion

image-5.png

solo que en la c inicia con 209