16. El protocolo IPv4

Contenidos

Estructura de routes en internet

Características y Deficiencias Protocolo IPv4

Formato Datagrama IPv4

Otros protocolos

ARP

ip neigh

ICMP

ping

mtr

Otras ordenes

ip addr

ip link

ethtool

route

Material

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).

Si quieres puedes ver un mapa de cables submarinos para que te hagas una idea de como es de verdad internet. Recuerda que el mapa es solo de cables submarinos, por tierra hay muchas mas conexiones de internet.

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:

Elige la ruta con menos saltos.

Elige la ruta con mejor ancho de banda. Igual para llegar a Cataluña es mejor hacerlo a través de Aragón ya que hay mejor ancho de banda entre Valencia y Aragón y entre Aragón y Cataluña que entre Valencia y Cataluña directamente.

Ancho de banda, retraso, carga, confiabilidad: Mezcla mas características de cada opción para elegir la mejor ruta.

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:

Desde nuestro ordenador creamos dos datagramas

Nuestro ordenador envia el Datagrama A al router de Valencia

El router de Valencia ve que hay mucho tráfico por la ruta directa a Cataluña, así que lo envía al router de Zaragona.

El router de Zaragona recibe el Datagrama A, lo almacena en su RAM y cuando tenga tiempo lo reenviará

Nuestro ordenador envia el Datagrama B al router de Valencia

El router de Valencia ve que ya no hay congestión en la ruta hacia Cataluña así que envía el Datagrama B directo al router de Cataluña.

El router de Cataluña recibe el Datagrama B desde Valencia y lo envía al ordenador destino de Cataluña

El router de Aragón envia el Datagrama A al router de Cataluña

El router de Cataluña recibe el Datagrama A desde Zaragoza y lo envía al ordenador destino de Cataluña

¿Que ha pasado? Que primero llega el Datagrama B y después el Datagrama A. Resumiendo: Los datagramas pueden llegar desordenados.

Caso 2:

Desde nuestro ordenador creamos dos datagramas

Nuestro ordenador envia el Datagrama A al router de Valencia

El router de Valencia ve que hay mucho tráfico por la ruta directa a Cataluña, así que lo envía por Zaragona.

El router de Zaragona recibe el Datagrama A, lo almacena en su RAM y cuando tenga tiempo lo reenviará

Nuestro ordenador envia el Datagrama B al router de Valencia

El router de Valencia ve que ya no hay congestión en la ruta hacia Cataluña así que envía el Datagrama B directo al router de Cataluña.

El router de Cataluña recibe el Datagrama B desde Valencia y lo envía al ordenador destino de Cataluña

El router de zaragona antes de reenviar el Datagrama B a Cataluña, tiene un fallo y se reinicia.

Una vez reiniciado el router de Zaragona ya no envía el Datagrama A ya que el Datagrama A estaba almacenado en RAM y se ha perdido al reiniciarse.

¿Que ha pasado? Pues que el router de Zaragoza ha perdido el Datagrama A. Resumiendo: Los datagramas se pueden perderse

Caso 3:

Desde nuestro ordenador creamos dos datagramas

Nuestro ordenador envia el Datagrama A al router de Valencia

El router de Valencia ve que hay mucho tráfico por la ruta directa a Cataluña, así que lo envía por Zaragona.

El router de Zaragona recibe el Datagrama A, lo almacena en su Disco duro y cuando tenga tiempo lo reenviará

Nuestro ordenador envia el Datagrama B al router de Valencia

El router de Valencia ve que ya no hay congestión en la ruta hacia Cataluña así que envía el Datagrama B directo al router de Cataluña.

El router de Cataluña recibe el Datagrama B desde Valencia y lo envía al ordenador destino de Cataluña

El router de zaragona envía el Datagrama B a Cataluña, pero antes de borrarlo de su disco duro , tiene un fallo y se reinicia.

El router de Cataluña recibe el Datagrama A desde Zaragoza y lo envía al ordenador destino de Cataluña

Una vez reiniciado el router de Zaragona , vuelve a reenviar el Datagrama B ya que aun estaba almacenado en su disco duro.

El router de Cataluña recibe el Datagrama A desde Zaragoza y lo envía al ordenador destino de Cataluña

¿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:

Desde nuestro ordenador creamos dos datagramas

Nuestro ordenador envia el Datagrama A al router de Valencia

El router de Valencia ve que hay mucho tráfico por la ruta directa a Cataluña, así que lo envía por Zaragona.

El router de Zaragona recibe el Datagrama A, lo almacena en su Disco duro y cuando tenga tiempo lo reenviará

Nuestro ordenador envia el Datagrama B al router de Valencia

El router de Valencia ve que ya no hay congestión en la ruta hacia Cataluña así que envía el Datagrama B directo al router de Cataluña.

El router de Cataluña recibe el Datagrama B desde Valencia y lo envía al ordenador destino de Cataluña

El router de Zaragona piensa que la red con Cataluña está caida y envía el Datagrama B al router del Pais Pasco.

El router del Pais Pasco recibe el Datagrama A desde Zaragoza y lo envía al router de Madrid

El router del Madrid recibe el Datagrama A desde el Pais Vasco y lo envía al router de Zaragona

.... y ahí entramos en un bucle infinito....

El bucle se rompe cuando el datagrama ha dado demasiados saltos. Un router que vea un datagrama que ha dado demasiado saltos (es decir que ha pasado por muchos routers) , lo descarta y ya no lo vuelve a reenviar.

¿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.

Características y Deficiencias Protocolo IPv4

Por fin después de muchas explicaciones, vamos a resumir para que sirve el protocolo IP

Características del protocolo IP

Direccionamiento universal: Gracias a la dirección IP podemos identificar todos los ordenadores y de esa forma poder enviar de forma individualizada información.

Enrutamiento: Gracias a los router y las tablas de encaminamiento podemos llegar desde un ordenador a otro independientemente de que Internet sea muy comlejo.

Deficiencias del protocolo IP

Los datagramas pueden llegar desordenados

Los datagramas pueden perderse

Los datagramas pueden llegar duplicados

No se especifica a que programa del ordenador destino va la información. Esto lo veremos en mas detalle al ver TCP pero hay que tenerlo ahora en cuenta.

¿Como resuelve el protocolo IP sus deficiencias? Obviamente no las resuelve , el que lo hace es el protocolo TCP.

Formato Datagrama IPv4

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:

Dirección IP origen y la dirección IP destino: Son los dos datos mas interesantes. Como podemos ver ocupan 32 bits cada una , y aquí está la limitación del número de IPs de internet. Si queremos cambiar esa limitación hay que cambiar todos los router del mundo para que aceptaran un nuevo tamaño y eso es lo que están haciendo con IPv6.

Datos: Son los datos que realmente queremos enviar.

TTL. Es el número de saltos que puede hacer un datagrama. Su valor inicial está recomendado que sea de 64. Cada vez que un datagrama llega a un Host (ordenador o router),se actualiza ese valor decrementandolo en 1. Cuando llega a un Host un datagrama con valor 0, ya no se reenvía aunque si es para él si que lo acepta.

Checksum: Contienen el CRC para comprobar que no ha habido errores de transmisión.

Longitud de la cabecera: Cuanto ocupa la cabecera. Se mide en múltiplos de 32 bits. Es decir que una valor de 1 , indicaría que ocupa 32 bits, un valor de 2 que ocupa 64 bits, etc.

Logitud total: Cuando ocupa el datagrama entero, sumando la cabecera y los datos. Se mide en bytes. Es decir que una valor de 1 indicaría que ocupa 8 bits (1 byte), un valor de 2 indicaría que ocupa 16 bits (2 bytes), etc.

Protocolo: Indica si el datagrama es para el protocolo TPC o UDP.

Otros protocolos

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:

arp

ifconfig

netstat

route

traceroute

ARP

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:

Mira si la MAC del ordenador B está en la tabla ARP, si está la usa y ya está.

Si no está en la tabla, el ordenador A enviará una trama Ethernet a la dirección broadcast 1) Es una dirección especial que lo reciben todos los ordenadores de la red (MAC = FF:FF:FF:FF:FF:FF). Los datos de esa trama seguirán el formato de del protocolo ARP e incluirá la IP del ordenador B.

El ordenador B, responderá otra una trame Ethernet al ordenador A, para decirle que esa es su MAC.

El ordenador A, añadirá la MAC en su tabla ARP.

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:

¿Qué es el ARP (Address Resolution Protocol)?

OpenWebinars. ARP

ip neighbour

ip neighbour permite ver la tabla ARP de nuestro Linux.

Se ve por ejemplo que para la IP 192.168.1.103 , su MAC es ec:fa:5c:e4:ad:95

ICMP

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

ping es una orden que se usa para saber si funciona la red hasta un ordenador determinado.

ping

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.

La información que se obtiene es:

Se han enviado 4 datagramas y recibido otros 4.

Que cada uno de los datagramas tiene 54 bytes de tamaño

Que el TTL de los datagramas que han llegado es 56

Que se ha tardado sobre 7 ms en responder.

Que por todo ello podemos conectarnos hasta el ordenador 1.1.1.1

mtr

mtr es una orden que nos dice todos los routers por los que pasa un datagrama hasta un ordenador determinado.

mtr

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.

La información que se obtiene es:

Que pasamos por 8 routers

Que por ejemplo uno de ellos tiene de IP 81.46.69.201

Que el router 216.184.113.248 pierde el 60% de datagramas.

Que hay dos router de los que no tenemos información. Son los que se indican con "???"

Que el último Host es 1.1.1.1 y por lo tanto podemos conectarnos hasta el ordenador 1.1.1.1

Otras órdenes

ip addr

ip addr Obtiene información sobre las tarjetas de red que hay ademas de añadir IPs.

La información que se obtiene es:

Hay dos tarjetas de red "lo" y "enp2s0".

Que la tarjeta de "lo" es lo que llamamos de LOOPBACK por lo que no es una tarjeta real sino la forma de acceder a nuestro propio ordenador con 127.0.0.1

Que las dos están habilitadas , se ve porque pone "UP".

Sus direcciones MAC. En el caso de "enp2s0" es 38:2c:4a:e7:d7:bb

La IP de cada una de ellas.En el caso de "enp2s0" es 192.168.1.110/24

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

Si ahora ejecutamos la orden ip addr veremos que en la tarjeta enp2s0 tiene dos IP.

Borrar la IP 192.168.1.220/24 a la tarjeta de red enp2s0

ip link

ip link. Permite habilitar o deshabilitar una tarjeta de red.

El siguiente ejemplo deshabilita la tarjeta de red enp2s0

El siguiente ejemplo habilita la tarjeta de red enp2s0

ethtool

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.

La información que se obtiene es:

Que puede funcionar (es donde pone Supported link modes) a 10 Mb/s (10baseT/Full) a 100 Mb/s (100baseT/Full) y a 1000 Mb/s (1000baseT/Full )

Pero que realmente funcionará (es donde pone Link partner advertised link modes) a 10 Mb/s (10baseT/Full) a 100 Mb/s (100baseT/Full) y a 1000 Mb/s (1000baseT/Full )

¿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

route permite ver la tabla de encaminamiento. Se añade el parámetro -n para que se vean las IPs

La información que se obtiene es:

Cuando no sabemos donde enviar algo "IP:0.0.0.0" se envía al router "192.168.1.1"

Cuando algo para para la red "192.168.1.0/24" no hay que usar un router, por eso vale "0.0.0.0"

Hay una ruta extraña llamada "169.254.0.0". No vamos a hablar de ella , mas información en Zero-configuration networking

Realmente no se debería usar la orden 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.

Ejercicios

Ejercicio 1

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

Ejercicio 2

Responde a las siguientes preguntas referidas al formato de un Datagrama IP:

Según el tamaño del campo "longitud cabecera". ¿Cual sería el tamaño máximo teórico de la cabecera IP?

¿Para que crees que es útil es campo "relleno"?

¿Cual es el tamaño máximo que puede tener un datagrama?

¿Cuantos datos se pueden enviar como máximo en un datagrama IP?

¿Cual es el límite teórico de saltos que podría dar un datagrama IP?

¿Podríamos llegar a todos los destinos con un TTL de 3? En caso de que no podamos, ¿A que destino no podríamos llegar?

¿Por cuantos routers crees que es necesario que pase como máximo un Datagrama en Internet?

Viendo la Cabecera IPv6, ¿Como se llama el campo TTL en IPv6?

Ejercicio 3

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:

Comprobar que tiene acceso a internet. Usando la orden ping 8.8.8.8

En virtualBox, configurar la máquina virtual , en el apartado de red , como "Conectado a: 'Adaptador puente'"

Comprobar que tu máquina real y tu máquina virtual están en la misma red

Instalar el paquete 'inetutils-traceroute' con la orden sudo apt install inetutils-traceroute

Ejercicio 4

Averigua el nombre de las tarjetas de red junto con su IP y MAC asociadas

Averigua a que velocidad puede funcionar cada tarjeta de red y a que velocidad esta realmente funcionando cada tarjeta de red

Haz un ping desde tu ordenador real a la IP de tu Linux y comprueba que responde.

Desactiva la tarjeta de red

Haz un ping desde tu ordenador real a la IP de tu Linux y comprueba que ya no responde.

Activa la tarjeta de red

Haz un ping desde tu ordenador real a la IP de tu Linux y comprueba que ahora si que responde.

Ejercicio 5

Averigua la dirección IP de tu movil con alguna app de tu movil. Puedes buscar en tu tienda de aplicaciones la palabra "net utilities"

Muestra la tabla ARP y comprueba que no está la IP de tu móvil

Haz un ping a tu móvil

Muestra la tabla ARP y comprueba que ahora si está la IP de tu móvil

Ejercicio 6

Añade una nueva IP a tu tarjeta de red

Haz un ping desde tu ordenador real a la nueva IP de tu Linux y comprueba que responde.

Haz un ping desde tu ordenador real a la antigua IP de tu Linux y comprueba que también responde.

Borra una nueva IP a tu tarjeta de red

Haz un ping desde tu ordenador real a la nueva IP de tu Linux y comprueba que ya no responde.

Haz un ping desde tu ordenador real a la antigua IP de tu Linux y comprueba que sigue respondiendo.

Ejercicio 7

Si desde tu ordenador tienes que enviar datagramas hasta la IP 8.8.8.8,

¿Cuantos saltos (Nº de router por los que pasa) se realizan da hasta llegar a la IP 8.8.8.8?

¿Cual es la IP del primer router por el que pasan los datagramas?

¿Cual es la IP del último router por el que pasan los datagramas?

Ejercicio 8

Responde a las siguientes preguntas:

Imagina que eres el administrador de la red de nuestro instituto, por lo que gestionas los switch y routers del instituto.Si no funciona internet. ¿como podrías averiguar muy fácilmente por donde a ocurrido el fallo?

Usando únicamente la orden ping explica como podrías saber los routers por lo que ha pasado un datagrama