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.
Mira asi le respondio el router
el sudo arp -va enlistar la cache
arp -v es verbose **-a formateo address ip***
-d
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
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
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
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
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
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
- Paquetes que se envian en la red
Proyecto 1¶
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¶
Este diagrama como ves no es tan justo. Debemos de sacrificar que no pueda existir conexion entre extremos,
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
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.
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
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
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.
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.
Si se cae D por ejemplo todo el mundo se dio cuenta que D se murio. Y dejan de enviar
Inicializacion¶
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.
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.
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.
Este es un ejemplo con redis async
Es un ejemplo
El canal se crea al subscribis , redis lo crea sino existe
Esto del proyecto 2¶
El proveedor usemos digital ocean
Compramos un dominio
y lo apuntamos a digital ocean
Lo importantes en en la parte de networking, creas tu name server y lo dirigis a tu namecheap
Luego creamos una maquina virtual
Creamos nuestros droplets
y asi se elige nuestra VM
Clase 25092025¶
Hizo un repaso de la capa de aplicacion, debo de verlo por el libro. Me pusieron a trabajar en plena clase.
Aqui le pedimos la ip al host , y nos marca a los records de esa persona.
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
Y sirve para poder ver la info de forma reverse como aqui
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.
Clase 02102025¶
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.
Otra forma , para interconectar es llamada la tecnica de tunelizacion . Lo que hace es encapsula o tuneliza que atraviesa la red.
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
Este es un link de como gestionar un router cisco
Ahora los headers. Es el encabezado del protocolo ipv4
Sucede algo interesante , es el termino que se llame endiannes
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
Tenemos 32 bits para tener identificadores.
Pedazos continuos de direcciones ips para segmentar
Hay una parte que determina la red y hay otra parte que determina el equipo
127.0.0.1
Era localhost no genera trafico fuera del equipo.
Tenemos esta direccion
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
Ahora regresando al ejemplo anterior
ves que asi tenemos la red 11.56.0.0/20
Este numero va a ser el maximo de ips a tener
Miara este es un ejemplo
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
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 en111
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¶
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.
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
podemos tener de clase A 256 o 2 ^ 8 redes.
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.
CONSIDERA LO SIGUIENTE
EJEMPLO
Una cosa importante es que la mascara de subred y la direccion de mi computadora me daria la direccion de mi red.
EJEMPLO
ASI SE MIRA /26
LA PRIMERA DIRECCION QUE CAE EN LA RED ES LA MASCARA AND IP
ves el ejemplo podemos asignar mas ips solo cambiamos los 0s uqe ya estan
este ejercicio mira
Cuantos host le caben a la red le quitamos 2 , la primera y ultima nadie la utiliza
CLASE 09102025¶
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
y esta seria la resolucion
solo que en la c inicia con 209