Articulo de referencia

Interfaz de flujo de datos

La interfaz de flujo de datos (DSI) es una capa de sesión que se utiliza para transportar el tráfico del protocolo de archivos de Apple a través del protocolo de control de tran...

La interfaz de flujo de datos (DSI) es una capa de sesión que se utiliza para transportar el tráfico del protocolo de archivos de Apple a través del protocolo de control de transmisión .

Descripción general

Cuando Apple introdujo TCP con MacTCP y Open Transport en System 7 en la década de 1990, necesitaba que su protocolo para compartir archivos (AFP) funcionara tanto en TCP como en AppleTalk . Introdujeron AppleTalk Session Protocol (ASP) y DSI para TCP de forma coincidente con AFP 2.x.

DSI está implementado directamente en clientes AFP, como en Mac OS y afpfs-ng.

Protocolo

DSI se utiliza entre un cliente y un servidor AFP. Toda comunicación DSI contiene el siguiente encabezado DSI:

Estructura del paquete

Los campos son:

  • Indicadores : si el paquete es una solicitud (0x00) o una respuesta (0x01).
  • Comando: uno de los 7 comandos posibles (ver más abajo)
  • ID de solicitud: un identificador secuencial establecido en la solicitud y copiado en la respuesta.
  • Código de error/desplazamiento de datos adjunto:
    • Para las solicitudes, este valor se deja en 0, excepto cuando se utiliza el comando DSIWrite.
    • Para las respuestas, este es un código de error.
  • Longitud total de los datos: la longitud total de los datos después del encabezado DSI.
  • Reservado: para futura expansión
  • Carga útil: aquí es donde se colocan los datos DSI limitados o, más comúnmente, el encabezado AFP.

Comandos

Hay siete comandos posibles: [ 2 ]

Solicitudes y respuestas

Al recibir la mayoría de las solicitudes DSI, el cliente o el servidor envían un mensaje de respuesta. Esta respuesta contiene:

  • El campo de indicadores se establece en 0x01 (respuesta)
  • El campo de comando se establece con el mismo valor que el campo de comando de la solicitud.
  • El mismo ID de solicitud enviado en la solicitud (utilizado para que el cliente encuentre la solicitud que se está confirmando).
  • totalDataLength se establece a la longitud de la carga útil (si corresponde).
  • Cuando corresponda, la propia carga útil de datos después del encabezado DSI. (Consulte el comando individual para obtener más detalles).

Los comandos DSITickle y DSICloseSession no generan ninguna respuesta.

Creación, mantenimiento y finalización de sesiones.

El cliente inicia una sesión enviando una solicitud DSIOpenSession, que incluirá el tamaño del búfer de recepción que tiene para los paquetes (denominado cuanto de solicitud, normalmente 1024 bytes). El servidor confirma la solicitud y devuelve el tamaño de su búfer de recepción de datos (normalmente 256k en Mac OS X Leopard ).

El cierre de la sesión puede ser iniciado por cualquiera de las partes mediante el envío de DSICloseSession. El remitente no necesita esperar una respuesta y debe cerrar la sesión inmediatamente después de enviar el mensaje.

El mantenimiento de la conexión se realiza mediante el envío de señales de seguimiento . DSI proporciona un mecanismo para asegurar que el cliente y el servidor sepan que el otro sigue activo. Cada 30 segundos de inactividad, el servidor envía una solicitud de seguimiento al cliente. De forma similar, el cliente también envía su propia solicitud de seguimiento (esto NO es un paquete de respuesta). Tanto el cliente como el servidor pueden finalizar la sesión DSI si no reciben respuesta del otro durante 120 segundos. El cliente también puede desconectarse si hay una solicitud en curso y no se recibe respuesta ni solicitud de seguimiento en 60 segundos (en Mac OS X v.10.2 y posteriores).

Obtener información del servidor con GetStatus

Este comando DSI encapsula un paquete FPGetSrvrInfo. Un cliente lo utiliza para obtener información de un servidor en el que no ha iniciado sesión.

Los elementos de datos están organizados en el paquete con un catálogo de índices que apuntan a datos estructurados. [ 3 ]

La solicitud a una solicitud DSIGetStatus hará que el servidor responda con la siguiente información:

  • indicadores para las características básicas del servidor
  • Nombre del servidor (ASCII de 7 bits y UTF-8 )
  • Firma: se utiliza para identificar de forma única al servidor para otras transacciones AFP.
  • Tipo de servidor: normalmente "Macintosh" o "Netatalk".
  • una lista de cadenas que describen las versiones de AFP habladas (por ejemplo, "AFP3.2")
  • Lista UAM: una lista de cadenas que describen los métodos de autenticación de usuarios (por ejemplo, "DHX2").
  • un icono de 64x64 píxeles
  • lista de servidores de directorio

El formato de respuesta de DSIGetStatus es idéntico al de FPGetSrvrInfo de AFP y se utiliza para ASPGetStatus. [ 4 ]

Códigos de error

Los códigos de error devueltos son códigos de resultado AFP. [ 5 ]

Investigación adicional

DSI nunca se documenta por separado y es lo suficientemente simple y estático como para que las referencias antiguas sean adecuadas para implementaciones modernas. Los conceptos de DSI son idénticos a los del Protocolo de Sesión de AppleTalk (ASP), y la descripción general en Inside AppleTalk, Segunda Edición, puede resultar útil.

La guía más concisa es el capítulo "AFP sobre TCP" de la Guía de programación del protocolo de archivos de Apple .

Una fuente importante de información para comprender DSI se puede encontrar analizando la comunicación entre clientes y servidores AFP mediante un analizador de paquetes.

Notas a pie de página

  1. "DSIHeader" en "Referencia del protocolo de presentación de archivos de Apple"
  2. "Comandos DSI" en "Guía de programación del protocolo de archivos de Apple"
  3. "FPGetSrvrInfo" en "Apple Filing Protocol Reference"
  4. "DSIGetStatus" en "Referencia del protocolo de presentación de archivos de Apple"
  5. "Códigos de resultado" en "Referencia del protocolo de presentación de documentos de Apple"

Referencias

  • Protocolo de presentación de archivos AppleTalk, versiones 2.1 y 2.2
  • Inside AppleTalk Sidhu, Gurharan S.; Andrews, Richard F.; Oppenheimer, Alan B. (mayo de 1990), Inside AppleTalk, Segunda edición , Addison-Wesley Publishing Company, Inc., ISBN 0-201-55021-0
  • Guía de programación del protocolo de presentación de archivos de Apple
  • Referencia del protocolo de presentación de archivos de Apple