Multiplexing and demultiplexing

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

Multiplexación y demultiplexación

La multiplexación es la combinación de dos o más canales en un solo medio de transmisión. El proceso inverso es llamado demultiplexación.

Esquema de un multiplexor y demultiplexor.

Multiplexación y demultiplexación de la capa de transporte; es decir, la ampliación de servicio entre host a host proporcionado por la capa de red a un servicio de entrega proceso a proceso para las aplicaciones que se ejecutan en los host.

Para comprender lo explicado veremos un servicio básico de la capa de transporte en el contexto de Internet. Un usuario puede tener abierto distintas aplicaciones (ejemplo, conexión FTP, navegador por internet, varias sesiones de TELNET). Los segmentos se entregan al socket del proceso, no al proceso directamente. Cada puerto tiene un identificador único ( formato depende de si es TCP o UDP). El segmento tiene una serie de campos entre ellos un identificador que permite identificar el socket al que hay que entregar. La capa de transporte examina los campos para poder entregar al socket correcto esto se conoce como demultiplexión. La multiplexion es cuando en el origen se crean segmentos de paquetes de datos de distintos procesos. Podemos hacer la analogía del correo, cuando una persona recibe el correo, realiza una tarea de demultiplexación entregando a cada destinatario las cartas adecuadas, mientras que el que envía un conjunto de cartas de distintas personas, realiza una tarea de multiplexado.

Los segmentos tienen diversos campos necesarios para realizar estas tareas. Entre los campos encontraremos el numero de puerto origen y destino. Los puerto pueden ser entre 0 y 65535 (16 bits), de los cuales hasta el 1023 están reservados para aplicaciones conocidas como por ejemplo; HTTP (80), FTP (21). Al desarrollar una aplicación (Como por ejemplo la programación de un socket) , hay que asignarle un número de puerto.

La tarea de demultiplexación de UDP son básicas: un segmento llega al host, la capa de transporte examina el número de puerto de destino y lo dirige al socket correspondiente en cambio la tarea de TCP son más complicada.

Segmento TCP y UDP.



Multiplexación y demultiplexación sin conexión

Recordando un poco del tema anterior que se pueden crear sockets para UDP, los cuales se asignan a un número de puerto entre el 1024 y el 65535,esto en caso que el programador no especifique el puerto, por ejemplo el codigo en Java, como se vio anteriormente seria el siguiente:

DatagramSocket socket = new DatagramSocket(19157)

Una vez asignados los numeros de puerto a los sockets UDP Durante un envío por UDP, la capa de transporte del host de origen crea un segmento que contiene los números de puerto de origen y destino, los datos de aplicación y otros dos valores que se veran más adelante.Luego el segmento pasa a la capa de red, que lo encapsula en un datagrama IP y hace lo posible por entregar el segmento al host receptor. Si el segmento llega al receptor,se entrega al puerto que corresponda. El host de destino podría estar ejecutando varios procesos, cada uno de ellos con su propio socket, a medida que los segmentos UDP llegan de la red, el host de destino dirige (demultiplexa) cada segmento al socket que corresponde examinando el puerto de destino del segmento.

Host dirigiendo cada segmento al socket que corresponde

El socket UDP está identificado por una dirección IP de destino y el número de puerto de destino. El hecho de poner el puerto origen en el segmento responde a la posibilidad de que el host receptor envíe una respuesta, si el host de destino desea devolver un segmento al host de origen, el puerto de destino del receptor tomara el valor del puerto del host de origen

Inversión de los puertos de origen y destino

Multiplexación y demultiplexación orientadas a la conexión

El socket TCP está identificado por la dirección IP, número de puerto de origen, la dirección IP y número de puerto de destino.

El servidor crea un socket de entrada que se encarga de atender las peticiones de conexión por parte de los clientes. Al recibir una petición para un proceso, el socket avisa a dicho proceso, que crea un nuevo socket para establecer la conexión final. El servidor toma nota de los 4 valores que mencionamos antes, de forma que a partir de entonces, todos los segmentos cuyos 4 datos coincidan con esos, serán demultiplexados a dicho proceso.

2 clientes usando el mismo puerto de destino

Servidores Web Y TCP

Tomando como ejemplo un servidor web que atiende varias peticiones simultáneas (puerto 80), es evidente que todos los segmentos llegan al servidor al mismo puerto, generando un nuevo proceso por cada conexión y cada proceso tiene su propio socket de conexión por las que llegan solicitudes y se envían respuestas, por lo tanto, se distinguen unas de otras mediante los datos de origen.

Los servidores web actuales, por cada conexión, el servidor crea un nuevo proceso (o un nuevo hilo, en servidores actuales; así puede haber muchos sockets de conexión para un mismo proceso). Dependiendo de si se usa HTTP persistente o no persistente, la conexión se mantiene a lo largo de los mensajes o se va creando y luego cerrando para cada nueva solicitud , esto afecta el rendimiento del servidor.

Referencias

  • Redes de computadoras "Un enfoque descendente" (5ta Edición). KUROSE, ROSS (Pearson - Adisson Wesley)

Enlaces

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas