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

  1. La Capa de Transporte / Capa 4 / L4

    1. Similar a las funciones y servicios de L2 pero incluyendo varios saltos (equipos)

    2. Conexion directa origen - destino (sockets)

    https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/OSI_Model_v1.svg/653px-OSI_Model_v1.svg.png
  2. Funciones:

    1. Direccionamiento (uso de puertos)

    2. Establecimiento (liberación y mantenimiento) de la conexión (sea fiable o no)

    3. control de flujo

    4. multiplexado: dos máquinas pueden tener varias conexiones (usando puertos)

  3. Servicios:

    1. CONS (handshake + datos + fin)

    2. CLNS (sólo datos)

  4. Primitivas Transporte:

    1. listen

    2. connect

    3. send

    4. receive

    5. disconnect

  5. Protocolos (Internet) de Transporte:

    1. UDP. no fiable (pero muy rápido).

    2. TCP. fiable (pero más lento).

Actividad. Leer Documentación

Estudiar al Documentación

12.2.2. Sockets y Puertos

  1. Sockets:

    1. Equivalen a un circuito punto a punto (pero hay varios enlaces intermedios): flujo de datos

    2. Concepto: source ip address:source port <–> destination ip address:destination port

    3. IP aporta el direccionamiento del equipo y TCP o UDP el direccionamiento a nivel de puerto (un host tiene varios puertos)

    4. Basados en arquitectura C/S

      1. Servicio escuchando en un puerto y luego se crea un socket cliente - servidor

      2. Pero da igual qué lado del socket es el servidor

      3. Generalmente un cliente solicita la conexión a un servidor

  2. Los protocolos pueden ser:

    1. orientados a conexión (OC -> TCP)

    2. … o no (NOC -> UDP)

    3. Implica que el socket sea instantáneo (UDP) o con varios intercambios (TCP)

  3. Puertos ( IANA Assigned Ports ):

    1. Privilegiados (0 - 1023). System / Well Known Ports

    2. Registrados (1024 - 49151). User / Registered Ports

    3. Efímeros (49152 - 65355). Dynamic / Ephemeral / Private Ports

  4. Se usan (mucho) en servicios de red y puede ser complejo:

    1. Se pueden programar a muy bajo nivel

    2. IPC Sockets vs Network Sockets : programación de servicios cliente/Servidor de/en red

      1. Sockets Unix (Local Sockets) : a nivel de host (mismo equipo físico)

      2. Network sockets: entre hosts

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

  1. ¿Cuántos sockets hay?

  2. ¿Cual es el puerto origen en la trama 150?

  3. ¿Cual es el puerto destino?

  4. ¿Cual es la IP origen?

  5. ¿Y la IP destino?

  6. ¿Cual es el socket en la trama 150?

  7. ¿Cual es el socket en la trama 50?

  8. ¿Cual es el puerto del servidor DNS (si hay tráfico?

  9. ¿Cual es el puerto del servidor HTTP (si hay tráfico)?

  10. ¿Cual son los puertos que usan los clientes en esas tramas?

12.2.3. El Protocolo UDP

  1. El Protocolo UDP

    1. Muy sencillo y eficiente pero …

    2. … no fiable (pero si el enlace es muy fiable compensa)

  2. Características (RFC 768):

    1. Sencillo y Ligero

    2. No fiable y sin conexión (pero sí usa sockets)

  3. Datagrama UDP

../_images/datagrama_udp.png
  1. Aplicaciones que lo usan: DHCP , RIP , RTP , VoIP , TFTP , DNS y alguno más.

Actividad. Análisis Tráfico UDP

Comprobar UDP con Wireshark: Uso de Wireshark (Avanzado)

12.2.4. El Protocolo TCP

  1. El Protocolo TCP

    1. Muy fiable y complejo

    2. A costa de velocidad (mucho más lento que UDP)

  2. Funciones (RFC 793 y varios más):

    1. Transferencia de Datos (SYN, SYN/ACK y ACK usando segmentos)

    2. Fiabilidad (seq + ack)

    3. Control de flujo (ventana deslizante)

    4. Multiplexado Aplicaciones (puertos)

    5. Conexión (sockets= ip + puerto)

    6. Seguridad y Precedencia

  3. El Segmento TCP :

    1. ¿Porqué necesitamos segmentos?

    2. MSS = Cabecera TCP + Cabecera IP + MTU

    3. Diferentes Campos

    https://upload.wikimedia.org/wikipedia/commons/a/a9/CabeceraTCP.png

Actividad. Estudiar Documentación

Repasa los videos y la documentación

12.2.5. El proceso de conexión y control de flujo

  1. Control de la conexión:

    1. Usa de flags (campos de un bit) para definir en qué punto está

    2. Inicio: 3-Way HandShake: SYN, SYN/ACK y ACK

      https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Tcp-handshake.svg/1146px-Tcp-handshake.svg.png
    3. Transferencia (de datos)

    4. Cierre: 4-Way HandShake: FIN, ACK, FIN, ACK ( Why ?)

      https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Fin_de_conexi%C3%B3n_TCP.svg/1280px-Fin_de_conexi%C3%B3n_TCP.svg.png
  2. El control de flujo (varias estrategias):

    1. Checksum (con ACK)

    2. Usando protocolo de Ventana Deslizante (varios a la vez)

    3. Temporizadores (varios escenarios)

    https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Ventana_deslizante_2.JPG/1264px-Ventana_deslizante_2.JPG

Actividad. Estudiar Documentación

Repasa los videos y la documentación

12.2.6. Recapitulando

  1. Protocolos de Transporte:

  2. Control de la Conexión

Actividad. Análizar Tráfico TCP

Analizar Tráfico TCP (Básico) en Uso de Wireshark (Avanzado)

12.2.7. Detalles avanzados de un segmento TCP

  1. Opciones TCP

    1. Longitud de Cabecera (Data Offset en palabras 32b) = 20 (mínimo) + Opciones (múltiplos de 4)

    2. Tipo de Opción, Longitud y Datos (4B)

    3. Ejemplos de Opciones:

      1. EOL (End Of List)

      2. NOP (No OPeration)

      3. Maximum Segment Size

      4. Window Scaling (Escalado de Ventana)

      5. SACK (Selective ACK)

      6. Timestamp

    4. Tamaño de la Ventana

    5. Números de Secuencia (absolutos y relativos). En Bytes ( Understanding TCP Sequence Number )

  2. TCP Flags

  3. Guías Completas TCP

    1. Guía Ionos

    2. Videos NetGeeks

    3. TCP Enterprise Tutorial

Actividad. Análizar Tráfico TCP

Analizar Tráfico TCP (Avanzado): Uso de Wireshark (Avanzado)

12.2.8. Analizando el estado de las conexiones de red

  1. Una conexión puede estar en diferentes estados

    1. Son varios: Estados TCP / TCP States

    2. Depende del punto de observación (cliente o servidor)

    3. Esperando conexión : LISTEN

    4. Conexión establecida: ESTABLISHED

    5. En diferentes estados (por revisar): SYN_SENT, SYN_RECV , FINWAIT_1, FINWAIT_2, TIME_WAIT, CLOSED, CLOSE_WAIT, LAST_ACK, CLOSING, UNKNOWN, DELETE_TCB

  2. Analizando una red : Diagnóstico de Red

    1. Se suele usar el comando netstat (Unix / Windows)

    2. En unix, mejor cheat:ss

    3. netstat vs ss

Actividad. Diagnóstico de Red (Sockets)

Diagnóstico de Red