stringtranslate.com

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 transmisión .

Descripción general

Cuando Apple introdujo TCP con MacTCP y Open Transport en System 7 en la década de 1990, necesitaban que su protocolo de intercambio de archivos (AFP) se ejecutara tanto en TCP como en AppleTalk . Introdujeron el protocolo de sesión AppleTalk (ASP) y DSI para TCP coincidiendo con AFP 2.x.

DSI se implementa directamente en clientes AFP, como Mac OS y afpfs-ng.

Protocolo

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

Estructura del paquete

Los campos son:

Comandos

Hay siete comandos posibles: [2]

Solicitudes y respuestas

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

Los comandos DSITickle y DSICloseSession no generan una respuesta.

Creación, mantenimiento y desmontaje de sesiones.

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

Cualquiera de las partes puede iniciar el cierre de la sesión enviando 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 cosquillas . DSI proporciona un mecanismo para garantizar que el cliente y el servidor sepan que el otro todavía está activo. Cada 30 segundos de inactividad, el servidor envía una solicitud de cosquillas al cliente. Del mismo modo, el cliente también envía sus propias cosquillas. (Esto NO es un paquete de respuesta). Tanto el cliente como el servidor pueden finalizar la sesión DSI si no logran escuchar del otro durante 120 segundos. El cliente también puede desconectarse si una solicitud está en proceso y no se recibe respuesta ni cosquillas dentro de los 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. Lo utiliza un cliente 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:

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

Códigos de error

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

Más investigación

DSI nunca se documenta por separado y es lo suficientemente simple y estático como para que las referencias más antiguas sean adecuadas para implementaciones modernas. Los conceptos de DSI son idénticos al protocolo de sesión AppleTalk (ASP) y la descripción general de 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.

Se puede encontrar una fuente importante de información para comprender DSI analizando la comunicación entre clientes y servidores AFP utilizando un rastreador de paquetes.

Notas a pie de página

  1. ^ "DSIHeader" en "Referencia del protocolo de presentación de Apple"
  2. ^ "Comandos DSI" en la "Guía de programación del protocolo de archivos de Apple"
  3. ^ "FPGetSrvrInfo" en "Referencia del protocolo de presentación de Apple"
  4. ^ "DSIGetStatus" en "Referencia del protocolo de presentación de Apple"
  5. ^ "Códigos de resultados" en "Referencia del protocolo de presentación de Apple"

Referencias