12. Capa de Transporte (TCP y UDP)¶
12.1. ¿De qué va este tema?¶
Conocer los protocolos TCP y UDP y los conceptos principales de los protocolos de transporte. Entender el concepto de socket como interfaz de programación y comunicación de red.
12.2. Clases¶
Son unas 12 sesiones de clase.
12.2.1. La Capa de Transporte¶
La Capa de Transporte / Capa 4 / L4
Similar a las funciones y servicios de L2 pero incluyendo varios saltos (equipos)
Conexion directa origen - destino (sockets)
Funciones:
Direccionamiento (uso de puertos)
Establecimiento (liberación y mantenimiento) de la conexión (sea fiable o no)
control de flujo
multiplexado: dos máquinas pueden tener varias conexiones (usando puertos)
Servicios:
CONS (handshake + datos + fin)
CLNS (sólo datos)
Primitivas Transporte:
listen
connect
send
receive
disconnect
Protocolos (Internet) de Transporte:
UDP. no fiable (pero muy rápido).
TCP. fiable (pero más lento).
Actividad. Leer Documentación
Estudiar al Documentación
12.2.2. Sockets y Puertos¶
-
Equivalen a un circuito punto a punto (pero hay varios enlaces intermedios): flujo de datos
Concepto: source ip address:source port <–> destination ip address:destination port
IP aporta el direccionamiento del equipo y TCP o UDP el direccionamiento a nivel de puerto (un host tiene varios puertos)
Basados en arquitectura C/S
Servicio escuchando en un puerto y luego se crea un socket cliente - servidor
Pero da igual qué lado del socket es el servidor
Generalmente un cliente solicita la conexión a un servidor
Los protocolos pueden ser:
orientados a conexión (OC -> TCP)
… o no (NOC -> UDP)
Implica que el socket sea instantáneo (UDP) o con varios intercambios (TCP)
Puertos ( IANA Assigned Ports ):
Privilegiados (0 - 1023). System / Well Known Ports
Registrados (1024 - 49151). User / Registered Ports
Efímeros (49152 - 65355). Dynamic / Ephemeral / Private Ports
Se usan (mucho) en servicios de red y puede ser complejo:
Se pueden programar a muy bajo nivel
IPC Sockets vs Network Sockets : programación de servicios cliente/Servidor de/en red
Sockets Unix (Local Sockets) : a nivel de host (mismo equipo físico)
Network sockets: entre hosts
Conceptos de Sockets para programación
Actividad.
Haz una captura de tráfico de al menos 1.000 tramas (Repasa Herramientas de Análisis de Tráfico)
¿Cuántos sockets hay?
¿Cual es el puerto origen en la trama 150?
¿Cual es el puerto destino?
¿Cual es la IP origen?
¿Y la IP destino?
¿Cual es el socket en la trama 150?
¿Cual es el socket en la trama 50?
¿Cual es el puerto del servidor DNS (si hay tráfico?
¿Cual es el puerto del servidor HTTP (si hay tráfico)?
¿Cual son los puertos que usan los clientes en esas tramas?
12.2.3. El Protocolo UDP¶
-
Muy sencillo y eficiente pero …
… no fiable (pero si el enlace es muy fiable compensa)
Características (RFC 768):
Sencillo y Ligero
No fiable y sin conexión (pero sí usa sockets)
Datagrama UDP
Actividad. Análisis Tráfico UDP
Comprobar UDP con Wireshark: Uso de Wireshark (Avanzado)
12.2.4. El Protocolo TCP¶
-
Muy fiable y complejo
A costa de velocidad (mucho más lento que UDP)
Funciones (RFC 793 y varios más):
Transferencia de Datos (SYN, SYN/ACK y ACK usando segmentos)
Fiabilidad (seq + ack)
Control de flujo (ventana deslizante)
Multiplexado Aplicaciones (puertos)
Conexión (sockets= ip + puerto)
Seguridad y Precedencia
El Segmento TCP :
Actividad. Estudiar Documentación
Repasa los videos y la documentación
12.2.5. El proceso de conexión y control de flujo¶
Control de la conexión:
Usa de flags (campos de un bit) para definir en qué punto está
Inicio: 3-Way HandShake: SYN, SYN/ACK y ACK
Transferencia (de datos)
Cierre: 4-Way HandShake: FIN, ACK, FIN, ACK ( Why ?)
El control de flujo (varias estrategias):
Checksum (con ACK)
Usando protocolo de Ventana Deslizante (varios a la vez)
Temporizadores (varios escenarios)
Actividad. Estudiar Documentación
Repasa los videos y la documentación
12.2.6. Recapitulando¶
Protocolos de Transporte:
Control de la Conexión
12.2.7. Detalles avanzados de un segmento TCP¶
-
Longitud de Cabecera (Data Offset en palabras 32b) = 20 (mínimo) + Opciones (múltiplos de 4)
Tipo de Opción, Longitud y Datos (4B)
Ejemplos de Opciones:
EOL (End Of List)
NOP (No OPeration)
Maximum Segment Size
Window Scaling (Escalado de Ventana)
SACK (Selective ACK)
Timestamp
Tamaño de la Ventana
Números de Secuencia (absolutos y relativos). En Bytes ( Understanding TCP Sequence Number )
Guías Completas TCP
12.2.8. Analizando el estado de las conexiones de red¶
Una conexión puede estar en diferentes estados
Son varios: Estados TCP / TCP States
Depende del punto de observación (cliente o servidor)
Esperando conexión : LISTEN
Conexión establecida: ESTABLISHED
En diferentes estados (por revisar): SYN_SENT, SYN_RECV , FINWAIT_1, FINWAIT_2, TIME_WAIT, CLOSED, CLOSE_WAIT, LAST_ACK, CLOSING, UNKNOWN, DELETE_TCB
Analizando una red : Diagnóstico de Red
Se suele usar el comando netstat (Unix / Windows)
En unix, mejor cheat:ss