# El modelo TCP/IP y el modelo de referencia de interconexión de sistemas abiertos (OSI) de ISO. Protocolos TCP/IP

## 1. El modelo TCP/IP y el modelo de referencia OSI (ISO)

El **modelo OSI** (*Open Systems Interconnection*), desarrollado por la **ISO**, es un **modelo teórico de referencia** que describe cómo se comunican los sistemas en red mediante una arquitectura en **7 capas**.

> No define protocolos concretos, sino funciones.

### Capas del modelo OSI

1. **Capa Física**
   - Transmisión de bits por el medio físico
   - Señales, voltajes, cables, conectores
   - Ejemplos: cable Ethernet, fibra óptica

2. **Capa de Enlace de datos**
   - Comunicación entre nodos de la misma red
   - Direcciones MAC
   - Control de errores
   - Ejemplos: Ethernet, Wi-Fi

3. **Capa de Red**
   - Direccionamiento lógico y enrutamiento
   - Determina el camino de los paquetes
   - Protocolo principal: IP

4. **Capa de Transporte**
   - Comunicación extremo a extremo
   - Control de flujo y errores
   - Protocolos: TCP y UDP

5. **Capa de Sesión**
   - Establece, mantiene y finaliza sesiones
   - Control del diálogo entre aplicaciones

6. **Capa de Presentación**
   - Formato de los datos
   - Compresión y cifrado
   - Ejemplo conceptual: SSL/TLS

7. **Capa de Aplicación**
   - Interfaz con el usuario
   - Servicios de red
   - Ejemplos: HTTP, FTP, SMTP, DNS

---

## 2. Modelo TCP/IP

El **modelo TCP/IP** es un **modelo práctico**, base de **Internet**, desarrollado por **DARPA**.  
Define tanto la arquitectura como los **protocolos reales** de comunicación.

### Capas del modelo TCP/IP

1. **Acceso a red**
   - Equivale a las capas Física y Enlace del modelo OSI
   - Ejemplos: Ethernet, Wi-Fi

2. **Internet**
   - Direccionamiento y enrutamiento
   - Protocolos: IP, ICMP, ARP

3. **Transporte**
   - Comunicación extremo a extremo
   - Protocolos: TCP y UDP

4. **Aplicación**
   - Servicios de red para el usuario
   - Protocolos: HTTP, HTTPS, FTP, SMTP, DNS, SSH

---

## 3. Correspondencia entre OSI y TCP/IP

| Modelo OSI            | Modelo TCP/IP   |
|----------------------|-----------------|
| Aplicación           | Aplicación      |
| Presentación         | Aplicación      |
| Sesión               | Aplicación      |
| Transporte           | Transporte      |
| Red                  | Internet        |
| Enlace de datos      | Acceso a red    |
| Física               | Acceso a red    |

---

## 4. Protocolos principales de TCP/IP

### Protocolo IP
- Capa: Internet
- Función: direccionamiento y enrutamiento
- Versiones: IPv4 e IPv6
- No garantiza la entrega de paquetes

### Protocolo TCP
- Capa: Transporte
- Orientado a conexión
- Fiable: control de errores y retransmisión
- Usado en: web, correo electrónico

### Protocolo UDP
- Capa: Transporte
- No orientado a conexión
- Más rápido, menos fiable
- Usado en: streaming, DNS, VoIP

### Otros protocolos importantes
- **ICMP**: mensajes de error y control (ping)
- **ARP**: resolución de direcciones IP a MAC
- **HTTP / HTTPS**: servicios web
- **FTP**: transferencia de archivos
- **SMTP / POP3 / IMAP**: correo electrónico
- **DNS**: resolución de nombres de dominio

---

## 5. Diferencias entre OSI y TCP/IP

- **Modelo OSI**
  - Teórico
  - 7 capas
  - Enfoque didáctico

- **Modelo TCP/IP**
  - Práctico
  - 4 capas
  - Base de Internet

## 6. Componentes de una red

Una red tiene 2 partes: **host** y **red**. 

- **Host**: dispositivo que se conecta a la red, como un ordenador, smartphone o servidor.
- **Red**: conjunto de dispositivos y medios que permiten la comunicación entre hosts, como routers, switches y cables.

## Clases
- **Clase A**:
  - Rango: 0.0.0.0 a 126.255.255.255
  - Más de 16 millones de hosts por red
- **Clase B**:
  - Rango: 128.0.0.0 a 191.255.255.255
  - Más de 65 mil hosts por red
  - Usada por universidades y empresas grandes
- **Clase C**:
  - Rango: 192.0.0.0 a 223.0.0.0
  - Más de 254 hosts por red
  - Usada por pequeñas empresas y redes domésticas
  - Más común en Internet
- **Clase D**:
  - Rango: 224.0.0.0 a 239.255.255.255
  - Usada para multicast
  - No se asigna a hosts individuales
- **Clase E**:
  - Rango: 240.0.0.0 a 255.255.255.255
  - Reservada para uso futuro
  - No se asigna a hosts ni multicast

## Direcciones especiales
- **Dirección de loopback**: 127.0.0.1, utilizada para pruebas internas del host
- **APIPA**: 169.254.0.0 a 169.254.255.255, utilizada cuando no se puede obtener una dirección IP automáticamente
- **Dirección no asignable**: 0.0.0.0, utilizada para referirse a una dirección desconocida o no especificada
- **Dirección de broadcast**: 255.255.255.255, utilizada para enviar mensajes a todos los hosts de una red

## Rangos privados
- **Clase A**:
  - Rango: 10.0.0.0 a 10.255.255.255
  - Más de 16 millones de hosts por red
- **Clase B**:
  - Rango: 172.16.0.0 a 172.31.255.255
  - Más de 1 millón de hosts por red
- **Clase C**:
  - Rango: 192.168.0.0 a 192.168.255.255
  - Más de 65 mil hosts por red

## Subredes
- Permiten dividir una red en partes más pequeñas
- Utilizan una máscara de subred para determinar qué parte de la dirección IP corresponde a la red y qué parte corresponde a los hosts
- Ejemplo: con una máscara de subred de 255.255.255.0, la dirección IP 192.168.1.1 pertenece a la red 192.168.1.0 y el host 1
- Permiten mejorar la seguridad y el rendimiento de la red al limitar el tráfico a segmentos específicos
- Facilitan la gestión de direcciones IP al permitir reutilizar rangos de direcciones en diferentes partes de la red

## Puertos
- 443: HTTPS
- 80: HTTP
- 20 y 21: FTP
- 22: SSH
- 25: SMTP
- 53: DNS
- 69: TFTP
- snmp: 161 y 162
- pop3: 110
- imap: 143
- 3389: RDP
- snmp: 161 y 162
- ntp: 123
- dhcp: 67 y 68

## 3. Protocolos principales de TCP IP

- **IP** (Internet Protocol): Direccionamiento y el enrutamiento de paquetes. 
  - Versiones: 
    - IPv4, con direcciones de 32 bits.
    - IPv6, con direcciones de 128 bits. 
  - No garantiza la entrega de los paquetes.
- **TCP** (Transmission Control Protocol):
  - Capa de transporte. 
  - Proporciona una comunicación orientada a conexión, fiable, con control de flujo y de errores. Garantiza que todos los segmentos llegan en orden y sin errores. Se usa para aplicaciones donde la fiabilidad es crítica, como la navegación web con HTTP y HTTPS, el correo electrónico y la transferencia de ficheros con FTP.
- **UDP** (User Datagram Protocol): 
  - Capa de transporte. 
  - No orientado a conexión y no garantiza la entrega ni el orden de los paquetes. 
  - Es más rápido que TCP por eso se usa en aplicaciones donde la velocidad es más importante que la fiabilidad, como el streaming de vídeo, los juegos en red, las consultas DNS y las comunicaciones de voz sobre IP.
- **ICMP** (Internet Control Message Protocol)
  - Diagnóstico de redes. 
  - Comandos:
    - `ping` utiliza mensajes ICMP de solicitud y respuesta de eco para comprobar la conectividad con un host. 
    - `traceroute` o `tracert usa mensajes ICMP para descubrir la ruta que siguen los paquetes hasta su destino.
- **ARP** (Address Resolution Protocol)
  - Resuelve la correspondencia entre direcciones IP y direcciones MAC en una red local. 
  - Cuando un dispositivo conoce la IP de destino pero no su MAC, envía un mensaje ARP broadcast preguntando quién tiene esa IP, y el propietario responde con su dirección MAC.
- **DNS**(Domain Name System)
  - Traduce los nombres de dominio legibles por las personas, como www.miteco.gob.es, en las direcciones IP numéricas que usan los equipos. 
  - Puerto 53.
- **DHCP** (Dynamic Host Configuration Protocol)
  - Asigna automáticamente configuración de red a los dispositivos cuando se conectan: dirección IP, máscara de subred, puerta de enlace predeterminada y servidor DNS. 
  - Puertos 67 y 68.
- **HTTP** (HyperText Transfer Protocol)
  - Protocolo de la web, que permite la transferencia de páginas y recursos entre servidores y clientes. 
  - Puerto 80. 
  - **HTTPS** es la versión segura de HTTP sobre TLS y opera en el puerto 443
- **FTP** (File Transfer Protocol)
  - Permite la transferencia de ficheros entre sistemas. 
  - Puertos:
    - 21 - canal de control 
    - 20 - canal de datos. 
  - FTPS - Versión segura (cifrado TLS)
- **SSH** (Secure Shell)
  - Proporciona acceso remoto seguro a la línea de comandos de servidores. 
  - Puerto 22
  - Utiliza cifrado para proteger las comunicaciones. 
  - Sustituye al antiguo **Telnet**, que transmitía todo en texto claro.