¡Esta es una revisión vieja del documento!
Imagina una incipiente Internet en España. Cada router está en una universidad española de cada comunidad autónoma y hay una única sala con ordenadores conectada a ese router. La conexión entre los routers quedaría así.
Fíjate en que para conectarse el resto del mundo, hay una salida desde el router de Barcelona hasta Paris (pintado en azul).
Veamos unos ejemplo de por donde podría ir un datagrama
Origen | Destino | Saltos | Nº Saltos |
---|---|---|---|
Valencia | Castilla-Leon | Valencia,Madrid,Castilla-Leon | 3 |
Valencia | Castilla-Leon | Valencia,Aragón , País Vasco,Castilla-Leon | 4 |
Valencia | País Vasco | Valencia,Madrid,País Vasco | 3 |
Valencia | País Vasco | Valencia,Aragón,País Vasco | 3 |
Valencia | Aragón | Valencia,Aragón | 2 |
Valencia | Aragón | Valencia,Cataluña,Aragón | 3 |
Valencia | Cataluña | Valencia,Aragón,Cataluña | 3 |
Valencia | Cataluña | Valencia,Cataluña | 2 |
Valencia | Cataluña | Valencia,Madrid, Pais Vasco, Aragón,Cataluña | 5 |
Valencia | Murcia | Valencia,Murcia | 2 |
Valencia | Murcia | Valencia,Madrid, Sevilla,Murcia | 4 |
Valencia | Murcia | Valencia,Cataluña, Aragón, Pais Vasco, Castilla-Leon, Madrid, Sevilla,Murcia | 8 |
Los saltos se llaman a los routers por donde pasa para llegar desde el origen la destino.
Como podemos ver realmente hay muchos caminos para llegar desde el router origen hasta el router destino. ¿Cual elige el router? Hay varias estrategías:
Realmente no nos interesa saber exactamente como elige el router la mejor ruta. Lo importante es que para cada datagrama ,el router elige cual es la mejor ruta pero con el siguiente datagrama puede elegir otra ruta distinta aunque vaya al mismo destino.
Sigamos con el ejemplo de enviar un mensaje desde un ordenador de Valencia a otro de Cataluña. Ese mensaje de divide en 2 datagramas, vamos a llamarlos Datagrama A y Datagrama B. Y vamos a ver varios casos de lo que puede ocurrir.
Caso 1:
¿Que ha pasado? Que primero llega el Datagrama B y después el Datagrama A. Resumiendo: Los datagramas pueden llegar desordenados.
Caso 2:
¿Que ha pasado? Pues que el router de Zaragoza ha perdido el Datagrama A. Resumiendo: Los datagramas se pueden perderse
Caso 3:
¿Que ha pasado? Pues que el router de Zaragoza ha enviado dos veces el Datagrama A. Resumiendo: Los datagramas se pueden llegar duplicados.
Caso 4:
¿Que ha pasado? Pues que el router de Zaragoza ha encaminado mal un Datagrama. Resumiendo: Los datagramas pueden entrar en un buble , aunque en ese caso se acaban borrando.
Por fin después de muchas explicaciones, vamos a resumir para que sirve el protocolo IP
Características del protocolo IP
Deficiencias del protocolo IP
¿Como resuelve el protocolo IP sus deficiencias? Obviamente no las resuelve , el que lo hace es el protocolo TCP.
Al igual que vimos el formato de una trama Ethernet, vamos a ver ahora el formato de un datagrama IPv4.
Los campos que nos interesan son los siguientes:
Ahora vamos a ver una serie de ordenes de Linux. Si ya sabéis algo de Linux o miráis documentación en internet el fácil que os salgan otra serie de ordenes para hacer lo mismo. Realmente son las antiguas que se ha usado durante muchos años.
Algunas de las ordenes "antiguas" son las siguientes:
Hasta hora hemos visto como se envían datagramas a través de los routers, usando ethernet para la comunicación física. Es decir que realmente todo se envía a través de Ethernet entre Hosts.
NOTA1:Usamos la palabra Hosts para referirnos a Ordenadores o Routers.
NOTA2:Vamos a hablar siempre de Ethernet pero realmente es cualquier tecnología de red como Wifi, 3G, etc.
En esta comunicación el ordenador origen sabe su IP , la IP de destino y la IP de su puerta de enlace , pero ¿Como sabe la dirección MAC de la puerta de enlace? Es decir, siempre que un ordenador se comunica directamente con otro ordenador o con su gateway. ¿Como sabe cual es la dirección MAC de todos ellos? Ya que por mucho protocolo IP que haya, físicamente todo se envía por Ethernet y por lo tanto es necesario la dirección MAC.
Para averiguar la dirección MAC sabiendo únicamente la IP se usa el protocolo ARP (del inglés Address Resolution Protocol). Cada ordenador tiene una tabla con IPs y su dirección MAC. Para rellenar esa table se usa el protocolo ARP que permite averiguar la MAC en función de la IP.
Veamos un ejemplo de como funciona ARP:Cuando el ordenador A tiene que enviar un datagrama al ordenador B:
Hay que hacer notar que cada cierto tiempo se borran las MAC por si el ordenador cambiar su tarjeta de red por otra.
Mas información:
ip neighbour
permite ver la tabla ARP de nuestro Linux.
logongas@beren:~$ ip neighbour 192.168.1.103 dev enp2s0 lladdr ec:fa:5c:e4:ad:95 REACHABLE 192.168.1.1 dev enp2s0 lladdr 84:16:f9:9b:be:c0 REACHABLE
Se ve por ejemplo que para la IP 192.168.1.103 , su MAC es ec:fa:5c:e4:ad:95
ICMP es un protocolo un poco "extraño". Se usa sobre el protocolo IP pero solo es para notificar de errores e información de la propia red IP. Por ejemplo si a un router le llega un datagrama y no sabe por donde enviarlo , enviará un mensaje ICMP hasta el ordenador origen diciendo que el destino es inalcanzable. Y de esa forma los routers pueden saber que esa ruta no es válida.
Pero como usuarios, el protocolo ICMP no es útil ya que permite saber si funciona perfectamente toda la red hasta un ordenador destino. Es decir si funciona internet hasta el ordenador al que nos queremos conectar.
ping
es una orden que se usa para saber si funciona la red hasta un ordenador determinado.
ping
tiene como argumento la IP del ordenador del que queremos saber si todo funciona hasta él.
Lo que hace ping
es mandar mensajes ICMP hasta el ordenador que hemos indicado en la IP. Por lo que tiene que pasar por todos los routers. Cuando llega el mensaje ICMP al ordenador destino, éste nos responde con mensaje ICMP. Si a nuestro ordenador nos llegan los mensajes ICMP del ordenador destino es que toda la red física de ethernet y los routers con el protocolo IP funcionan perfectamente.
logongas@beren:~$ ping 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=56 time=7.88 ms 64 bytes from 1.1.1.1: icmp_seq=2 ttl=56 time=7.73 ms 64 bytes from 1.1.1.1: icmp_seq=3 ttl=56 time=7.74 ms 64 bytes from 1.1.1.1: icmp_seq=4 ttl=56 time=7.81 ms
La información que se obtiene es:
mtr
es una orden que nos dice todos los routers por los que pasa un datagrama hasta un ordenador determinado.
mtr
tiene como argumento la IP del ordenador del que queremos saber los routers por los que se pasa hasta llegar hasta él. Se puede incluir la opción "-n" para que muestre las IPs de los routers en vez de sus nombres.
logongas@beren:~$ mtr -n 1.1.1.1 My traceroute [v0.92] beren (192.168.1.110) 2020-04-22T13:04:02+0200 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 1. 192.168.1.1 0.0% 12 0.2 0.2 0.2 0.3 0.0 2. 192.168.3.1 0.0% 12 0.5 0.6 0.4 0.9 0.2 3. 81.46.38.83 0.0% 12 2.2 3.4 1.2 11.2 3.3 4. 81.46.69.201 0.0% 12 10.2 12.1 9.0 25.4 4.6 5. ??? 6. ??? 7. 216.184.113.248 60.0% 11 17.5 11.9 7.7 17.5 4.9 8. 81.173.106.39 0.0% 11 8.3 8.3 7.9 8.7 0.3 9. 1.1.1.1 0.0% 11 7.7 8.0 7.5 8.7 0.4
La información que se obtiene es:
ip addr
Obtiene información sobre las tarjetas de red que hay ademas de añadir IPs.
logongas@beren:~$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 38:2c:4a:e7:d7:bb brd ff:ff:ff:ff:ff:ff inet 192.168.1.110/24 brd 192.168.1.255 scope global dynamic noprefixroute enp2s0 valid_lft 6157sec preferred_lft 6157sec inet6 fe80::8aa3:7526:47e5:ae18/64 scope link noprefixroute valid_lft forever preferred_lft forever
La información que se obtiene es:
ip addr
también permite añadir IPs a una tarjeta de red.
Hasta ahora hemos visto que una tarjeta de red tiene una única IP pero no hay problema en que la misma tarjeta de red tuviera mas de una IP. ¿Cual es la utilidad? Pues crear redes independientes que no se vean entre ellas.
Añadir una nueva IP 192.168.1.220/24 a la tarjeta de red enp2s0
sudo ip addr add 192.168.1.220/24 dev enp2s0
Si ahora ejecutamos la orden ip addr
veremos que en la tarjeta enp2s0 tiene dos IP.
logongas@beren:~$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 38:2c:4a:e7:d7:bb brd ff:ff:ff:ff:ff:ff inet 192.168.1.110/24 brd 192.168.1.255 scope global dynamic noprefixroute enp2s0 valid_lft 5156sec preferred_lft 5156sec inet 192.168.1.220/24 scope global secondary enp2s0 valid_lft forever preferred_lft forever inet6 fe80::8aa3:7526:47e5:ae18/64 scope link noprefixroute valid_lft forever preferred_lft forever
Borrar la IP 192.168.1.220/24 a la tarjeta de red enp2s0
sudo ip addr del 192.168.1.220/24 dev enp2s0
ip link
. Permite habilitar o deshabilitar una tarjeta de red.
El siguiente ejemplo deshabilita la tarjeta de red enp2s0
logongas@beren:~$ sudo ip link set enp2s0 down
El siguiente ejemplo habilita la tarjeta de red enp2s0
logongas@beren:~$ sudo ip link set enp2s0 up
ethtool
es una orden que permite configurar las tarjetas de red pero su mayor utilidad es saber la velocidad de las tarjetas de red
ethtool
tiene como argumento el nombre de una tarjeta de red.
logongas@beren:~$ ethtool enp2s0 Settings for enp2s0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: Yes Supported FEC modes: Not reported Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Advertised FEC modes: Not reported Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: Symmetric Receive-only Link partner advertised auto-negotiation: Yes Link partner advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: on Cannot get wake-on-lan settings: Operation not permitted Current message level: 0x00000033 (51) drv probe ifdown ifup Link detected: yes
La información que se obtiene es:
¿Porque esos dos datos? Muy sencillo, tu tarjeta está fabricada para funcionar a 1000 Mb/s pero estar conectado a un switch que funcione a 100 Mb/s. Así que realmente funcionará a 100 Mb/s
route
permite ver la tabla de encaminamiento. Se añade el parámetro -n
para que se vean las IPs
logongas@beren:~$ route -n Tabla de rutas IP del núcleo Destino Pasarela Genmask Indic Métric Ref Uso Interfaz 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp2s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp2s0 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp2s0
La información que se obtiene es:
route
sino ip route show
que es la orden actual. Pero he explicado route
ya que el formato en el que se muestran los datos es mas cómodo de leer.
logongas@beren:~$ ip route show default via 192.168.1.1 dev enp2s0 proto dhcp metric 100 169.254.0.0/16 dev enp2s0 scope link metric 1000 192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.110 metric 100
Haz un mapa similar al de España con sus routers pero a nivel de Europa. Deberás poner al menos 8 routers y que en algunos haya mas de 2 conexiones a otros routers. El mapa deberás ser como un ejemplo de como llega internet a cada uno de los paises. El mapa que hagas deberá ser coherente con el que hay de España. Es decir que España se conecta a internet desde Paris.
Rellena la siguiente tabla con 2 ejemplos de llegar de un país al otro y para cada ejemplo que haya dos rutas distintas (saltos).
Router País Origen | Router de País Destino | Saltos | Nº de Saltos |
---|---|---|---|
Pais 1 | Pais 2 | ||
Pais 1 | Pais 2 | ||
Pais 3 | Pais 4 | ||
Pais 3 | Pais 4 |
Según tu mapa , inventa un caso en el que los Datagramas podrían llegar desordenados Según tu mapa , inventa un caso en el que un Datagramas podría perderse
Responde a las siguientes preguntas referidas al formato de un Datagrama IP:
NOTA: Este ejercicio no lo tienes que entregar ,ya que en la próxima semana deberás usar Ubuntu en los ejercicios que se pedirán
Usando Virtualbox, instala una maquina virtual con Ubuntu Server 18.04.4 LTS.
Realizar las siguientes tareas:
ping 8.8.8.8
sudo apt install inetutils-traceroute
Si desde tu ordenador tienes que enviar datagramas hasta la IP 8.8.8.8,
Responde a las siguientes preguntas:
ping
explica como podrías saber los routers por lo que ha pasado un datagrama