> ## Documentation Index
> Fetch the complete documentation index at: https://apuntes.simulab.es/llms.txt
> Use this file to discover all available pages before exploring further.

# Redes de computadores: modelo OSI, TCP/IP, direcciones IP y subredes

> Fundamentos de redes: modelos OSI y TCP/IP, encapsulación, Ethernet y direcciones MAC, direcciones IPv4 y máscaras, cálculo de subredes y notación CIDR, enrutamiento, TCP frente a UDP, puertos, DNS, HTTP, NAT e IPv6, con ejemplos resueltos de subnetting.

Cuando abres una web, tu ordenador habla con un servidor que puede estar en otro continente, a través de decenas de routers, cables de fibra y antenas, y la página llega en milisegundos. Funciona porque toda esa comunicación se organiza en **capas**, cada una con su protocolo y su responsabilidad. Entender las capas, las direcciones IP y las subredes es la base para programar aplicaciones en red, administrar sistemas o trabajar en ciberseguridad.

## Lo que vas a aprender

* Los modelos OSI y TCP/IP, y la encapsulación.
* Qué hacen Ethernet, IP, TCP y UDP.
* Las direcciones IPv4, las máscaras y la notación CIDR.
* Cómo calcular subredes.
* Puertos, DNS, HTTP y NAT.
* Por qué existe IPv6.

## Fundamentos teóricos

### Los modelos por capas

| OSI | TCP/IP | Función | Protocolos | Unidad |
| - | - | - | - | - |
| 7 Aplicación | Aplicación | Servicios para el usuario | HTTP, DNS, SMTP, SSH | Mensaje |
| 6 Presentación | | Formato, cifrado | TLS | |
| 5 Sesión | | Diálogo | | |
| 4 Transporte | Transporte | Comunicación entre procesos | TCP, UDP | Segmento |
| 3 Red | Internet | Llevar paquetes entre redes | IP, ICMP | Paquete |
| 2 Enlace | Acceso a la red | Entre equipos de la misma red | Ethernet, wifi | Trama |
| 1 Física | | Bits por el medio | Cables, radio | Bit |

**Encapsulación:** al enviar, cada capa añade su cabecera a los datos de la capa de arriba (una petición HTTP va dentro de un segmento TCP, dentro de un paquete IP, dentro de una trama Ethernet). Al recibir, cada capa quita la suya.

### Capa de enlace: Ethernet y MAC

Cada tarjeta de red tiene una **dirección MAC** de 48 bits, como `3C:22:FB:1A:9E:04`. Los **switches** reenvían tramas dentro de una red local según la MAC de destino. El protocolo **ARP** averigua qué MAC tiene una IP de la red local.

### Capa de red: direcciones IPv4

Una dirección IPv4 tiene **32 bits**, escritos como cuatro números de 0 a 255: `192.168.1.10`. Se divide en una parte de **red** y otra de **host**, según la **máscara**:

| Notación | Máscara | Hosts útiles |
| - | - | - |
| /8 | 255.0.0.0 | 16 777 214 |
| /16 | 255.255.0.0 | 65 534 |
| /24 | 255.255.255.0 | 254 |
| /26 | 255.255.255.192 | 62 |
| /30 | 255.255.255.252 | 2 |

Con $h$ bits de host hay $2^h - 2$ direcciones para equipos: la primera es la **dirección de red** y la última la de **broadcast**. El paso a binario se practica en el [conversor de bases](https://apuntes.simulab.es/electronica/sistemas-numeracion/conversor-bases.md).

**Direcciones privadas** (no se enrutan en Internet): 10.0.0.0/8, 172.16.0.0/12 y 192.168.0.0/16.

### Calcular la red de una dirección

Se hace la **AND bit a bit** entre la IP y la máscara (ver [puertas lógicas](https://apuntes.simulab.es/electronica/logica-combinacional/puertas-logicas.md)). Atajo: en el octeto donde cambia la máscara, el tamaño del bloque es $256 - \text{valor de la máscara}$, y las redes empiezan en múltiplos de ese tamaño.

### Enrutamiento

Los **routers** unen redes distintas. Cada uno tiene una **tabla de rutas** que dice por dónde enviar cada destino; se elige la ruta con el **prefijo más largo** que coincida. Si nada coincide, se usa la **puerta de enlace por defecto**. Las tablas se construyen con protocolos como OSPF, que usa el [algoritmo de Dijkstra](https://apuntes.simulab.es/programacion/algoritmos/dijkstra.md), o BGP entre proveedores.

### Capa de transporte: TCP y UDP

| | TCP | UDP |
| - | - | - |
| Conexión | Sí (saludo en tres pasos: SYN, SYN-ACK, ACK) | No |
| Fiabilidad | Garantiza entrega, orden y sin duplicados | No garantiza nada |
| Control de flujo y congestión | Sí | No |
| Sobrecarga | Mayor | Mínima |
| Usos | Web, correo, ficheros, SSH | Vídeo en directo, juegos, DNS, VoIP |

Los **puertos** (16 bits) identifican la aplicación dentro de un equipo: 80 (HTTP), 443 (HTTPS), 22 (SSH), 53 (DNS), 25 (SMTP). Una conexión queda definida por IP y puerto de origen y de destino.

### Capa de aplicación

* **DNS:** traduce nombres (`simulab.es`) a direcciones IP, consultando una jerarquía de servidores.
* **HTTP/HTTPS:** peticiones (`GET`, `POST`…) y respuestas con un código de estado (200 OK, 404 No encontrado, 500 Error del servidor). HTTPS añade cifrado TLS.

### NAT

Un router doméstico tiene **una** IP pública y da IP privadas a los equipos de casa. Al salir a Internet, cambia la IP y el puerto de origen de cada paquete por los suyos y apunta la traducción para devolver la respuesta. Así, millones de redes comparten pocas direcciones públicas.

### IPv6

Con 32 bits solo hay unos 4300 millones de direcciones IPv4, y se agotaron. **IPv6** usa **128 bits** (unas $3{,}4\cdot10^{38}$ direcciones), escritas en hexadecimal: `2001:db8::8a2e:370:7334`. Elimina la necesidad de NAT y simplifica la cabecera.

## Ejemplos resueltos

> [accordion] Ejemplo 1 · Datos de una subred
>
> IP `192.168.10.77/26`. La máscara es 255.255.255.192: bloques de $256 - 192 = 64$ en el último octeto.
>
> 77 está en el bloque que empieza en 64:
>
> * Red: `192.168.10.64`
> * Broadcast: `192.168.10.127`
> * Hosts: de `.65` a `.126`, 62 direcciones.

> [accordion] Ejemplo 2 · Dividir una red en subredes
>
> Se tiene `172.16.0.0/16` y se necesitan 50 subredes. Hacen falta 6 bits más ($2^6 = 64 \ge 50$): prefijo /22.
>
> Cada subred tiene $32 - 22 = 10$ bits de host: $2^{10} - 2 = 1022$ equipos. Bloques de 4 en el tercer octeto: `172.16.0.0/22`, `172.16.4.0/22`, `172.16.8.0/22`…

> [accordion] Ejemplo 3 · ¿Están en la misma red?
>
> `10.1.5.20/20` y `10.1.14.3/20`. La máscara /20 deja bloques de 16 en el tercer octeto: el 5 está en el bloque 0–15 y el 14 también. **Sí**, las dos están en `10.1.0.0/20`.
>
> Con `10.1.17.3` no: está en el bloque 16–31.

> [accordion] Ejemplo 4 · Qué pasa al escribir una URL
>
> 1. **DNS:** el navegador pregunta la IP de `apuntes.simulab.es`.
> 2. **TCP:** abre una conexión con el puerto 443 de esa IP (tres pasos).
> 3. **TLS:** negocian el cifrado y se comprueba el certificado.
> 4. **HTTP:** envía `GET /` y recibe el HTML.
> 5. Por debajo, cada paquete IP salta de router en router, y en cada salto viaja en una trama Ethernet, wifi o de fibra distinta.

## Errores frecuentes

* **Contar la dirección de red y la de broadcast como hosts.** Con $h$ bits de host hay $2^h - 2$ útiles.
* **Confundir la MAC con la IP.** La MAC sirve dentro de la red local; la IP, de extremo a extremo.
* **Pensar que UDP es "peor".** Es más rápido y adecuado cuando un dato retrasado ya no sirve (vídeo en directo, juegos).
* **Olvidar que los switches trabajan en la capa 2 y los routers en la 3.**
* **Elegir mal el prefijo:** si hacen falta 50 subredes, 5 bits ($2^5 = 32$) no bastan.

## Preguntas frecuentes

> [accordion] ¿Por qué hay dos modelos, OSI y TCP/IP?
>
> OSI es un modelo de referencia teórico de la ISO, útil para enseñar y para hablar de "capa 2" o "capa 7". TCP/IP es el que realmente se implementó y usa Internet, y agrupa las capas 5, 6 y 7 en una sola.

> [accordion] ¿Qué es la latencia y por qué importa?
>
> Es el tiempo que tarda un paquete en ir y volver. Depende de la distancia (la luz en la fibra recorre unos 200 km por milisegundo), del número de saltos y de las colas en los routers. En una videollamada o un juego importa más que el ancho de banda.

## Temas relacionados

> [card] [Conversor de bases](https://apuntes.simulab.es/electronica/sistemas-numeracion/conversor-bases.md)
>
> Binario y hexadecimal para direcciones.

> [card] [Dijkstra y caminos mínimos](https://apuntes.simulab.es/programacion/algoritmos/dijkstra.md)
>
> Cómo calculan las rutas los routers.

> [card] [Muestreo y Nyquist](https://apuntes.simulab.es/electronica/senales/muestreo.md)
>
> Cómo se digitalizan las señales que viajan por la red.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.