$ cat redes.md
Redes
Introducción
Las redes son simplemente cosas conectadas. Por ejemplo tu círculo de amigos: están conectados por intereses similares, hobbies, habilidades, etc.
Podemos verlas desde el sistema de transporte público, infraestructuras como la red de electricidad en una ciudad, un sistema postal, o simplemente saludar y platicar con tus vecinos.
En computación obtiene un contexto similar; toma tu celular por un momento y obsérvalo un segundo, la razón por la que lo tienes, es para acceder a cosas. Más adelante cubriremos cómo estos dispositivos se comunican y las reglas que siguen.
En computación, una red puede formarse desde con 2 dispositivos hasta con billones de ellos. Estos dispositivos incluyen todo, desde tu laptop y tu celular, hasta cámaras de seguridad, semáforos e incluso las granjas.
Las redes están integradas en nuestro día a día, recolectando datos del clima y entregando electricidad a las casas, incluso determinando qué semáforo será el próximo que estará en verde. Ya que las redes están tan entrelazadas con nosotros y en la vida moderna, el networking se ha convertido en un concepto esencial en los ámbitos de ciberseguridad.
Internet
El internet no es más que otra red, una más grande que consiste de muchas redes dentro ella que la componen. Utilizando un ejemplo análogo, imagina que hablas dos idiomas, y conoces a dos nuevos amigos que se llaman Julián y Emilio, se los quieres presentar a tus amigos Bob y Jim. El problema es que tú eres la única persona que habla el mismo idioma que Julián y Emilio, por lo que tendrías que ser el intermediario entre los mensajes de tus nuevos amigos y tus amigos Bob y Jim.
La primera iteración del internet fue durante el proyecto ARPANET en los años 60’s. Este proyecto fue financiado por el departamento de defensa de los Estados Unidos y fue documentado como la primera red en acción. Sin embargo, no fue hasta 1989 cuando el internet que conocemos se volvió accesible al público gracias a Tim Berners-Lee mediante la creación del World Wide Web (WWW). Fue en este punto cuando el Internet empezó a utilizarse como un repositorio para almacenar y publicar información.
Como mencionamos hace un momento, el internet se compone de muchas redes pequeñas todas interconectadas. Estas redes pequeñas son llamadas “redes privadas”, y las redes que conectan todas estas pequeñas redes son llamadas redes públicas, o simplemente Internet.
Identificando dispositivos en una Red
Para que haya comunicación y orden en la comunicación, los dispositivos tienen que poder identificar y ser identificables en la red. Al igual que los humanos los dispositivos en una red se pueden identificar por 2 cosas:
- Nombre
- Huella Digital Podríamos cambiar nuestro nombre si vamos al Registro Civil, pero, no vamos a ser capaces de cambiar nuestras huellas digitales. Todos tenemos un conjunto individual de huellas que significa que, aunque, queramos cambiar nuestro nombre, vamos a seguir siendo identificables mediante ellas. Los dispositivos tienen algo similar: dos medios por los que se pueden identificar, uno es mutable:
- Una dirección IP.
- Un Media Access Control (MAC) Address, imagina un número de serie.
Dirección IP
En pocas palabras, la dirección IP (Internet Protocol) puede ser utilizada como una forma de identificar a un host en una red por un periodo de tiempo, donde la dirección IP puede ser asociada a otro dispositivo sin que la dirección IP cambie. Primero veamos como se ve una dirección IP fragmentada:
Una dirección IP es un conjunto de números divididos en cuatro octetos. El valor de cada octeto se resume a ser la dirección IP del dispositivo en la red, el número se calcula con una técnica que se conoce como direccionamiento y subredes. Lo importante es entender que la IP puede cambiar de dispositivo a dispositivo pero no puede estar activa de manera simultánea en la misma red.
Las direcciones IP siguen una serie de protocolos, los cuales son estándares. Los protocolos son la columna vertebral del networking y fuerzan a muchos dispositivos a comunicarse en el mismo idioma, de lo que hablaremos más adelante. Como sea, es importante recalcar que estos dispositivos pueden estar tanto en una red pública o una red privada, y dependiendo el caso se les asignará una dirección IP pública o privada.
Como ya habrás intuido, las direcciones públicas sirven para identificar a un dispositivo en el Internet, mientras que una IP privada sirve para identificar un dispositivo entre otros dispositivos. Toma la siguiente tabla de ejemplo, existen dos dispositivos en una red privada.
| Dispositivo | Dirección IP | Tipo de dirección IP |
| :------------------- | :----------- | :------------------- |
| Router Principal | 192.168.1.1 | Privada |
| Servidor Web Público | 203.0.113.45 | Pública |
| Laptop Personal | 10.0.0.15 | Privada |
Si tomamos como ejemplo los siguientes 2 dispositivos:
Estos dos dispositivos van a ser capaces de utilizar su dirección IP privada para comunicarse entre ellos. Sin embargo, cualquier conjunto de datos que se envíe por medio de Internet de alguno de estos dispositivos va a ser identificado con la misma dirección IP pública Las direcciones IP públicas son otorgadas por un ISP por sus siglas en inglés Internet Service Provider, tu compañía de internet.
El problema con las direcciones IPv4 es que, al ser un esquema de direcciones IP (4.29 mil millones), se ha convertido en un reto conseguir una dirección pública que aún no haya sido tomada. A medida que se conectan más y más dispositivos, la tarea de asignar un identificador único se complica, considerando que la mayoría de los usuarios de Internet tienen más de dos dispositivos en promedio, lo que hace que el número se quede corto.
Para ello se inventó IPv6, el cual es un nuevo esquema de protocolo de internet de direccionamiento que ayuda a resolver este inconveniente. El uso de este nuevo protocolo viene con un par de beneficios:
-
Soporta hasta direcciones IP, resolviendo el problema que enfrentamos con IPv4.
-
Es más eficiente gracias a metodologías más modernas.
Comparación de IPv4 e IPv6: ipv4 192.168.1.XX ipv6 2806:107e:c:8e53:XXXX:70e0:f717:XXXX
Dirección MAC
Los dispositivos en las redes tienen una interfaz de red física, la cual es un microchip en la tarjeta madre de tu dispositivo, ésta interfaz de red tiene asignada una única dirección de fábrica, llamada dirección MAC (Media Access Control). La MAC es un número hexadecimal de doce caracteres dividido en pares y separado por dos puntos. Estos dos puntos son considerados separadores, por ejemplo, a4:c3:f0:85:ac:2d. Los primeros 6 caracteres representan la compañía que hizo la interfaz de red, los últimos 6 es un número único.
Algo interesante de las direcciones MAC es que pueden ser falsificadas o “spoofed” en un proceso llamado spoofing. Ocurre cuando un dispositivo en la red pretende ser identificado como otro utilizando otra dirección MAC. Cuando esto ocurre, puede romper una seguridad que esté diseñada, pobremente, para creer que todos los dispositivos de la red son confiables. Imagina lo siguiente: Se configura un firewall que permite cualquier comunicación entrante y saliente de la dirección MAC del administrador, si algún dispositivo pretende ser esta dirección MAC, el firewall ahora va a pensar que está recibiendo información del administrador cuando realmente no es así.
Ping (ICMP)
Ping es una de las herramientas mas fundamentales disponibles. Ping usa paquetes ICMP (Internet Control Message Protocol) para determinar el rendimiento de una conexión entre dispositivos, por ejemplo, si la conexión existe o si es confiable.
El tiempo que toman los paquetes ICMP para viajar entre dispositivos se mide por ping, como en el ejemplo de Cheat Sheet Redes. Estas medidas son tomadas mediante paquetes ICMP echo y después ICMP’s echo reply del dispositivo objetivo.
Los pings pueden ser ejecutados contra dispositivos en una red, tales como redes de casa o recursos como páginas web. Esta herramienta puede ser usada muy fácilmente ya que, normalmente, viene instalada de forma predeterminada en algunos sistemas operativos, tales como Linux OS y Windows. La sintaxis es muy sencilla.
ping <dirección IP> o <sitio web>
Introducción A LAN
Topología LAN
A lo largo de los años se ha experimentado con distintas arquitecturas y diseños de red. En redes cuando nos referimos al término “topología” nos referimos al diseño o al como se ve la red que tenemos a la mano.
Topología de estrella
En la topología de estrella, todos los dispositivos se conectan a un nodo central (generalmente un switch o hub). Toda la comunicación entre dispositivos debe pasar por ese nodo central.
%%{
init: {
"theme": "base",
"themeVariables": {
"background": "#0f172a",
"primaryColor": "#1f2937",
"primaryBorderColor": "#3b82f6",
"primaryTextColor": "#f8fafc",
"secondaryColor": "#111827",
"secondaryBorderColor": "#22c55e",
"lineColor": "#94a3b8",
"fontFamily": "JetBrains Mono",
"fontSize": "22px"
}
}
}%%
graph TD
S(["Switch"])
A[("PC 1")]
B[("PC 2")]
C[("PC 3")]
D[("Servidor")]
E[("Impresora")]
S --- A
S --- B
S --- C
S --- D
S --- E
classDef switch fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
classDef host fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
class S switch;
class A,B,C,D,E host;
Estas redes se encuentran hoy en día vigentes por su escalabilidad y por lo confiables que son.
Vamos a ver un poco de las ventajas y desventajas que tiene que todo se conecte a una red central: Ya que el cableado y la compra de equipo dedicado de redes es necesario para esta topología, es un poco más caro que cualquier otra topología. Además del costo agregado, esta topología viene con unas cuantas ventajas, por ejemplo si se quiere agregar un nuevo dispositivo a la red, es muy fácil añadir nuevos dispositivos mientras la demanda en la red comienza a aumentar. Desafortunadamente mientras mas crezca la red, mayor mantenimiento requiere para seguir funcionando. Esta demanda de mantenimiento también puede derivar a fallas en el sistema difíciles de corregir. Además, la topología de estrella sigue siendo propensa al fracaso, aunque reducida. Por ejemplo, si el switch o el dispositivo central falla, entonces ningún dispositivo va a poder comunicarse entre sí, aunque normalmente los hardware central suele ser robusto.
Topología de bus
Éste tipo de conexiones se basan en una sola conexión que se conoce como cable troncal. Este tipo de topología es similar a la de una hoja en la rama de un árbol donde las ramas están en este cable. Se vuelve evidente el problema de una saturación de datos provocados por un cuello de botella en el cable cuando uno piensa en todos los dispositivos tratando de enviar datos simultáneamente. También se vuelve difícil hacer un debug de las fallas en la red, ya que al viajar la información sobre la misma ruta, identificar el dispositivo que está fallando se vuelve una tarea muy tediosa. Dicho esto, la topología de bus es significativamente la mas amigable con la cartera por los costos de cableado o equipo dedicado.
Otra desventaja está relacionada a tener únicamente un cable central, si este falla en algún punto o se rompe, ningun dispositivo va a ser capaz de comunicarse.
%%{
init: {
"theme": "base",
"themeVariables": {
"background": "#0f172a",
"primaryColor": "#1f2937",
"primaryBorderColor": "GREY",
"primaryTextColor": "#f8fafc",
"secondaryColor": "#111827",
"secondaryBorderColor": "#22c55e",
"lineColor": "#94a3b8",
"fontFamily": "JetBrains Mono",
"fontSize": "22px"
}
}
}%%
flowchart LR
T1(("i"))
T2(("t"))
T1 --- B1
B1 --- B2
B2 --- B3
B3 --- B4
B4 --- B5
B5 --- T2
PC1[PC 1] --- B1
PC2[PC 2] --- B2
PC3[PC 3] --- B3
PC4[PC 4] --- B4
Printer[Impresora] --- B5
classDef switch fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
classDef host fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
class S switch;
class A,B,C,D,E host;
Topología de Anillo
La Topología de Anillo los dispositivos se interconectan en un bucle o loop, esto implica menor cantidad de cableado y menor dependencia en hardware dedicado como en la topología de estrella. Esta topología funciona mandando la información de dispositivo en dispositivo en el cable hasta que llegue a su destinatario. Algo interesante de la topología, es que un dispositivo transmite o deja pasar los datos que recibe cuando este dispositivo no tiene nada que enviar por el mismo. Si el dispositivo resulta tener datos para enviar por el mismo, entonces debe enviarlo primero antes de enviar datos de otro dispositivo.
Ya que solo existe una dirección en la que se puede mover la información es fácil que se lleguen a presenten problemas de conexión a través de la red, además de que no es tan seguro ni eficiente que la información pase por tantas computadoras hasta llegar a su destino.
Una ventaja es que no tiene un cuello de botella como la red de bus, ya que la información viaja un paquete a la vez, pero, si el cable se rompe o un dispositivo falla, la red entera se cae.
%%{
init: {
"theme": "base",
"themeVariables": {
"background": "#0f172a",
"primaryColor": "#1f2937",
"primaryBorderColor": "GREY",
"primaryTextColor": "#f8fafc",
"secondaryColor": "#111827",
"secondaryBorderColor": "#22c55e",
"lineColor": "#94a3b8",
"fontFamily": "JetBrains Mono",
"fontSize": "22px"
}
}
}%%
flowchart TB
A[PC 1] --> B[PC 2]
B --> C[PC 3]
C --> D[PC 4]
D --> E[PC 5]
E --> A
classDef switch fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
classDef host fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
class S switch;
class A,B,C,D,E host;
Qué es un Switch?
Los switches son dispositivos dedicados a agregar otros multiples dispositivos como computadoras, impresoras y cualquier otro dispositivo capaz de usar ethernet. Los switches se ven mas comúnmente en lugares grandes como corporativos, escuelas o redes de tamaños similares en donde se necesitan conectar muchos dispositivos a la red. Los switches pueden conectar muchos dispositivos por puertos de 4, 8, 16, 24, 32 y 64 dispositivos.
Los switches son mas eficientes que los repetidores, ya que llevan registro de que dispositivo se ha conectado a que puerto. De esta forma, cuando reciben un paquete, en lugar de repetirlo a todos los puertos, como lo haría un hub, solo lo manda al objetivo deseado, reduciendo el tráfico de red.
%%{
init: {
"theme": "base",
"themeVariables": {
"background": "#0f172a",
"primaryColor": "#1f2937",
"primaryBorderColor": "GREY",
"primaryTextColor": "#f8fafc",
"secondaryColor": "#111827",
"secondaryBorderColor": "#22c55e",
"lineColor": "#94a3b8",
"fontFamily": "JetBrains Mono",
"fontSize": "24px"
}
}
}%%
flowchart TB
INTERNET((Internet))
ROUTER[Router]
SWITCH1[Switch 1]
SWITCH2[Switch 2]
PC1[Dispositivo 1]
PC2[Dispositivo 2]
PC3[Dispositivo 3]
PC4[Dispositivo 4]
%% Conexión principal
INTERNET --> ROUTER
%% Router a switches
ROUTER --> SWITCH1
ROUTER --> SWITCH2
%% Switch 1 dispositivos
SWITCH1 --> PC1
SWITCH1 --> PC2
%% Switch 2 dispositivos
SWITCH2 --> PC3
SWITCH2 --> PC4
classDef switch fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
classDef host fill:#1f2937,stroke:GREY,stroke-width:4px,color:#ffffff;
class S switch;
class A,B,C,D,E host;
Los switches y los routers se pueden interconectar fomentando un environment mas estable y confiable para las conexiones, ya que si un camino falla, hay mas caminos por los que la información puede viajar. A pesar de que sea un poco más lento, ya que los paquetes tienen que viajar por un camino mas largo, non hay fallas en el tiempo, entonces son unas cosas que se compensan con otras.
Qué es un Router?
Es un dispositivo que se encarga de crear las rutas para que la información viaje entre dispositivos a través de la red de forma eficiente, el router utiliza el routing (de ahí el nombre) para crear estas rutas a través de las redes.
%%{
init: {
"theme": "base",
"themeVariables": {
"background": "#0f172a",
"primaryColor": "#1f2937",
"primaryBorderColor": "GREY",
"primaryTextColor": "#f8fafc",
"secondaryColor": "#111827",
"secondaryBorderColor": "#22c55e",
"lineColor": "#94a3b8",
"fontFamily": "JetBrains Mono",
"fontSize": "24px"
}
}
}%%
flowchart TB
n1(["Computer 1"]) --> n3["Router"]
n3 --> n4["Router"]
n4 --> n5["Router"]
n5 --> n3 & n2(["Computer 1"])
n3@{ shape: db}
n4@{ shape: db}
n5@{ shape: db}
n1:::Class_01
n3:::Class_01
n4:::Class_01
n5:::Class_01
n2:::Class_01
classDef Class_01 fill:#1f2937, color:#FFFFFF, stroke:GREY, stroke-width:1px, stroke-dasharray:0
Una vista a subredes
Las redes se encuentran en muchas formas, una subred es una red que se subdivide en otras más pequeñas, lo que se puede imaginar como un pastel, todos quieren una parte del pastel, así que vas a tener que cortar pedazos y decidir quien tiene que porción. Así como en la vida real tu sabes a donde mandar información a su lugar de destino, las redes también tienen que saber a donde mandar la información. Los administradores de red se encargan de hacer subredes para categorizar y asignar diferentes partes de la red para reflejar esto. Hace subnetting se consigue cuando partimos el numero de hosts que pueden entrar en la red, representado por un numero llamado la mascara de subred, la cual se representa como un número de cuatro bytes (32 bits), que va variando entre el 0 y el 255, las subredes usan direcciones IP de 3 formas:
- Identificar direcciones de red.
- Identificar las direcciones de los hosts.
- Identificar el gateway predeterminado.
Desglosando un poco estos términos
| Tipo | Propósito | Explicación | Ejemplo |
|---|---|---|---|
| Dirección de red | Identifica el inicio de la red. | Esta dirección identifica el comienzo de la red y se utiliza para reconocer la existencia de una red. | 192.168.1.0 |
| Dirección de host | Identifica un dispositivo dentro de la subred. | Se asigna a cada dispositivo de la red para diferenciarlo de los demás hosts. | 192.168.1.100 |
| Puerta de enlace predeterminada | Permite la comunicación con otras redes. | Es una dirección especial asignada a un dispositivo (normalmente un router) que reenvía el tráfico destinado a redes diferentes. Generalmente utiliza la primera o la última dirección disponible de la red (.1 o .254). | 192.168.1.254 |
En tu casa probablemente solo estés en una subred ya que es poco probable que necesites otros 254 dispositivos conectados, pero en lugares como oficinas y comercios esto trae beneficios relacionados con la eficiencia y control de estas, pero lo veremos mas delante.
ARP
El protocolo de resolución de dirección o ARP por sus siglas en inglés (Address Resolution Protocol) es el protocolo por el cual las direcciones MAC e IP se identifican en una red, esta tecnología permite que los dispositivos puedan iniciar comunicación en la red.
ARP permite que los dispositivos asocien su dirección MAC con una IP en la red, cada dispositivo en la red lleva un registro de la dirección MAC asociada con otros dispositivos.
Cuando los dispositivos quieren comunicarse entre ellos, mandan una señal a toda la red buscando por un dispositivo en especifico. Los dispositivos pueden usar ARP para encontrar una dirección MAC de un dispositivo para comunicarse con el.
Cómo funciona?
Cada dispositivo en una red lleva un registro de información, el cual se llama caché. En el contexto de ARP, este caché guarda los identificadores de los dispositivos en la red, para poder mapear los identificadores MAC con los IP, el protocolo ARP manda 2 mensajes:
- ARP request. Una petición
- ARP reply. Una respuesta
Cuando un ARP request se manda, un mensaje es enviado a otros dispositivos preguntando “Cuál es la MAC que tiene esta dirección IP?” Los dispositivos que reciban los mensajes van a poder solo responder con su dirección MAC y si es que son ellos los que tienen asociado ese IP.