¿A qué socket va? Demultiplexación UDP y TCP

Los clientes A, B (y D) envían segmentos al servidor C. C mira la cabecera para elegir el socket: UDP solo mira el destino (IP_D, PD); TCP mira los cuatro valores (IP_O, PO, IP_D, PD). Sigue cada segmento hasta la tabla de sockets de C.

Escenario

Protocolo de transporte

Clientes y puertos efímeros

El SO del cliente elige el puerto origen en el rango efímero. El nuevo cliente (D, o una conexión nueva de A, B o D) envía al primer puerto en el que escucha C.

Modo

Practicar

Un escenario aleatorio de 4 a 6 segmentos, en modo predicción. Atención al mismo puerto origen en dos hosts y a los puertos en los que nadie escucha.

Vista

Segmentos que llegan a C

Supuestos del modelo
  • Las direcciones se escriben con letras (A, B, C, D), como en las diapositivas. IP_O: dirección IP origen; IP_D: dirección IP destino; PO: puerto origen; PD: puerto destino.
  • UDP (no orientado a conexión): el socket se identifica solo por su destino (IP_D, PD). Segmentos con orígenes distintos e igual destino van al mismo socket. El puerto origen sirve como dirección de retorno.
  • TCP (orientado a conexión): el servidor tiene un socket de bienvenida en el puerto en el que escucha y un socket de conexión por cada conexión simultánea, identificado por los cuatro valores (IP_O, PO, IP_D, PD). Aquí un segmento con una 4-tupla nueva llega al socket de bienvenida, que crea el socket de conexión; cómo se establece la conexión se verá en GG32.
  • Procesos: «uno a uno» es un proceso por conexión (P0 tiene el socket de bienvenida y crea P4, P5…); «uno a varios» es un proceso con un hilo por conexión; por eventos (nginx, Node.js), un proceso con muchos sockets. El número de sockets no depende de ello; el de procesos, sí.
  • El campo Protocolo de la cabecera IP (6 = TCP, 17 = UDP) elige el protocolo de transporte antes de mirar el puerto, así que 443/TCP y 443/UDP son sockets distintos. Un segmento a un puerto en el que nadie escucha con ese protocolo se descarta.
  • Puertos efímeros: el rango de la IANA es 49152–65535; Linux usa por defecto 32768–60999 (net.ipv4.ip_local_port_range). Los puertos del servidor son bien conocidos (80, 443…) o, como en las diapositivas, los fija la aplicación (6428).

Sobre esta visualización

Visualización de la demultiplexación en la capa de transporte. Tres hosts cliente (A, B y D) envían segmentos con la cabecera visible (Protocolo, IP_O, IP_D, PO, PD) a un servidor C, dentro del cual se ve la tabla de sockets. Con UDP el socket se identifica solo por el destino (IP_D, PD): todos los segmentos al mismo puerto entran por un único socket, vengan de donde vengan. Con TCP hay un socket de bienvenida por puerto en escucha y un socket de conexión por cada 4-tupla (IP_O, PO, IP_D, PD) distinta, de modo que el mismo puerto origen desde dos IP distintas da dos sockets. Un interruptor pasa los mismos segmentos de UDP a TCP. El botón Responder muestra la respuesta del servidor con IP y puertos intercambiados: el puerto origen es la dirección de retorno. «Nuevo cliente» añade un segmento con un puerto efímero elegido por el SO en el rango de la IANA (49152–65535) o de Linux (32768–60999). Escenarios de las diapositivas: UDP con dos clientes y un socket, TCP «uno a uno» (un proceso por conexión), «uno a varios» (hilos), un servidor web por eventos con HTTP/2 y HTTP/1.1, y 443/TCP junto a 443/UDP, con la vista de tres niveles de direccionamiento (IP, Protocolo 6/17, puerto). Incluye modo predicción, ejercicios aleatorios y la pregunta final de cuántos sockets tiene el servidor.

Conceptos: demultiplexación, multiplexación, socket UDP, socket TCP, socket de bienvenida, socket de conexión, 4-tupla, puerto origen y puerto destino, puertos efímeros, dirección de retorno, campo Protocolo (6/17), procesos e hilos del servidor.

Fórmulas:

Arquitectura de Redes I, Sesión 3.1 · Enrique de la Hoz, Universidad de Alcalá · Licencia CC BY-SA 4.0 · Original y catálogo en GitHub · DOI 10.5281/zenodo.23285664