Hola,
Excelente en general todo el trabajo de Vic_Thor.
Personalmente pienso que lo mas valorable del trabajo de una persona tecnica no es su nivel tecnico. Mas alla de su valor tecnico esta la capacidad de la persona de ser flexible ajustando el registro (no hay lenguaje sin registro), pero sobre todo, grabar en unas lineas la pasion necesaria para que al final un lector en sintonia con el escritor sea capaz de apreciar varias puertas abiertas en pocas lineas, y asi avanzar por-si-mismo. Es decir, crear un picor que necesite ser rascado. Hay profesores de profesion y hay quien lleva dentro toda una enorme fuerza creativa que necesita transmitir, lo llaman vocacion. Hay tambien alumnos que si que leen el libro recomendado aunque no sirva absolutamente para nada mas que para matar niños, y otros que sin darse cuenta acaban respondiendo las preguntas de otros y otras veces nadie podra respondar las suyas.
Al grano. Tengo poco tiempo asi que te contestare a alguna de tus preguntas, aunque con respuestas a preguntas intimamente relacionadas.
Lo primero es saber a donde queremos viajar.
- Código: Seleccionar todo
curl -s "http://www.geoiptool.com/?IP=189.17.65.19" |html2text |grep -i country
| Country: Brazil [brazil] |
| Country code: BR (BRA) |
Brasil. No esta mal. Vamos a ir al Subúrbio Geral.
Lo siguiente es saber que tenemos para llegar a nuestro destino.
- Código: Seleccionar todo
netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
Se muy poco, solo que debo enviar absolutamente todo (0.0.0.0) a mi puerta de enlace por defecto que es mi router en la direccion 192.168.1.1 y el ya se encargara del trabajo sucio.
¿Pero cual es nuestro itinerario de viaje previsto?
- Código: Seleccionar todo
traceroute 189.17.65.19
O mejor aun
- Código: Seleccionar todo
mtr 189.17.65.19
Como siempre, solo hay que saber interpretar la salida.
Todos los paquetes en TCP/IP tienen un campo en sus cabeceras que indica su tiempo-de-vida (TTL). ¿Cuanto es? Haz un ping a una maquina que responda a ping, por ejemplo 8.8.8.8
Cuando un router procesa un paquete, mira en las cabeceras de ese paquete cual es su TTL.
-Si TTL=0, el router descarta el paquete.
-Si TTL>0, el router decrementa en 1 el valor del TTL de ese paquete y lo envia al salto siguiente (otro router).
Si un router no decrementara el TTL cada vez que pasa por el, quizas aun veriamos paquetes del gusano de Morris de 1988 vagando por la red, porque Morris tenia una mente bastante peculiar y seguramente habria implementado esa broma si hubiera podido.
¿Y como sabe un router cual es el mejor camino? No lo sabe, y es posible que no acierte en el mejor camino, pero para ello como bien has dicho tiene datos en una tabla de enrutamiento que puede consultar. Es una cuestion de probabilidades y el solo hace lo que tu le has dicho que haga. Las rutas pueden ser:
-Estaticas (puestas por ti a mano y con gran prioridad. En principio, pocas).
-Dinamicas (las aprende el router segun el algoritmo que le digas que tiene que usar: RIP, OSPF, (E)IGRP, AS-AS...)
¿Como funciona un traceroute? Es ingenioso, la idea tiene que ver con el TTL. Sabiendo la idea de TTL, ¿tu como lo implementarias?
Ah, ¿y que significan los * del traceroute y por que mtr no muestra asteriscos sino la informacion de esas maquinas del itinerario? Si traceroute solo muestra * * * y sin embargo mtr es capaz de determinar los nombres de esas maquinas, ¿esas maquinas estan vivas?
¿Es posible ver esas tablas como ocurre con ARP? Si.
Lamentablemente depende del modelo, los Cisco siempre tuvieron una interfaz muy maja, una bonita linea de comandos con un cursor parpadeando en espera de ordenes. A veces sencillamente no es posible jugar, la mayoria de routers que nos dan los ISP son juguetes pobremente construidos.
Y ningun recurso de una maquina puede ser ilimitado, asi que logicamente no, esas tablas no crecen siempre. ¿Y en que se basa el router para actualizar sus tablas de enrutamiento? En lo que tu quieras. Tu eres una persona que tiene que decidir que algoritmo debe usar tu router para que el luego haga el trabajo por ti. ¿Cual es el mejor algoritmo? Eso no existe, depende de la situacion y de las necesidades. Y esos son los factores que debes valorar para enseñar a una maquina a usar un metodo u otro para resolver un problema.
Y gracias a ti por el viaje a pocos metros sobre el nivel del mar XD