Multidifusión IP

La multidifusión IP se encuentra en la categoría del plano de datos no raíz y del plano de control no raíz. Todas las aplicaciones desempeñan un papel hoja. Actualmente, la mayoría de las implementaciones de multidifusión IP usan un conjunto de opciones de socket propuestas por Steve Deering en el Grupo de tareas de ingeniería de Internet (IETF). Por lo tanto, hay cinco operaciones disponibles:

  • IP_MULTICAST_TTL: establece el ámbito de los controles de período de vida de una sesión de multidifusión.
  • IP_MULTICAST_IF: determina la interfaz que se va a usar para la multidifusión.
  • IP_ADD_MEMBERSHI: combina una sesión de multidifusión especificada.
  • IP_DROP_MEMBERSHIP: se quita de una sesión de multidifusión.
  • IP_MULTICAST_LOOP: controla el bucle invertido del tráfico de multidifusión.

Establecer el período de vida de un socket de multidifusión IP se asigna directamente al uso del código de comando SIO_MULTICAST_SCOPE para WSAIoctl.

El método para determinar la interfaz IP que se va a usar para la multidifusión es a través de una opción de socket específico de TCP/IP, tal como se describe en el anexo Protocol-Specific de Windows Sockets 2. Las tres operaciones restantes se tratan bien con la semántica de Windows Sockets 2 que se describe aquí.

La aplicación abriría sockets con marcas de c_leaf/d_leaf en WSASocket. Usaría WSAJoinLeaf para agregarse a un grupo de multidifusión en la interfaz predeterminada designada para las operaciones de multidifusión. Si la marca en WSAJoinLeaf indica que este socket es solo un remitente, la operación de combinación es básicamente un no-op y no es necesario enviar ningún mensaje IGMP. De lo contrario, se envía un paquete IGMP al enrutador para indicar intereses en la recepción de paquetes enviados a la dirección de multidifusión especificada. Dado que la aplicación creó sockets especiales c_leaf/d_leaf usados solo para realizar multidifusión, la función closesocket estándar se usaría para quitar la sesión de multidifusión. El código de comando SIO_MULTIPOINT_LOOPBACK para WSAIoctl proporciona un mecanismo de control genérico para determinar si los datos enviados en un socket d_leaf en un esquema multipoint no raíz también se pueden recibir en el mismo socket.

Nota

La versión winsock de la opción IP_MULTICAST_LOOP es semánticamente diferente de la versión unix de la opción IP_MULTICAST_LOOP:

 

  • En Winsock, la opción IP_MULTICAST_LOOP solo se aplica a la ruta de acceso de recepción.
  • En la versión de UNIX, la opción IP_MULTICAST_LOOP se aplica a la ruta de acceso de envío.

Por ejemplo, las aplicaciones ON y OFF (que son más fáciles de realizar un seguimiento que X e Y) se unen al mismo grupo en la misma interfaz; application ON establece la opción IP_MULTICAST_LOOP activada, la aplicación OFF establece la opción IP_MULTICAST_LOOP desactivada. Si ON y OFF son aplicaciones winsock, OFF puede enviar a ON, pero ON no se puede enviar a OFF. En cambio, si ON y OFF son aplicaciones UNIX, ON puede enviar a OFF, pero OFF no puede enviar a ON.