La interfaz de transporte abierta X / ( XTI ) es una especificación de grupo abierto para la programación de aplicaciones de red presente en los sistemas operativos UNIX System V. Proporciona servicios de capa de transporte OSI con independencia de protocolo. Aunque Open Group considera que esta especificación se ha retirado, [1] una implementación es parte de las interfaces de programación estándar en los sistemas operativos UNIX System V modernos donde se implementa utilizando el mecanismo de entrada / salida de caracteres STREAMS .
Descripción general
La interfaz de transporte X / Open es una especificación que define una interfaz de servicio de transporte independiente para aplicaciones de red. Los programas que utilizan XTI se pueden ejecutar en una variedad de proveedores de transporte, como el Protocolo de control de transmisión (TCP), los sistemas de red Xerox (XNS), la arquitectura de red de sistemas (SNA), X.25 , el modo de transferencia asíncrona (ATM) o cualquier otro. proveedor de la capa de transporte que funciona en la capa 4 del modelo OSI . [2]
XTI proporciona una funcionalidad similar a la interfaz de sockets de Berkeley , sin embargo, es independiente del protocolo en contraste con la interfaz de socket que está fuertemente sesgada hacia los protocolos de Internet . [3] Se basa en la interfaz de la capa de transporte (TLI) del sistema V de UNIX ., [4] que es una definición de servicio de transporte que se adhiere al modelo de interconexión de sistemas abiertos (OSI). [5] XTI consta de un módulo STREAMS cooperante, una interfaz de programación de aplicaciones (API) de biblioteca de enlaces , archivos de encabezado y las reglas y restricciones que explican cómo funcionan e interactúan los procesos XTI. [3]
Independencia del protocolo
XTI es independiente del protocolo. Sin embargo, las aplicaciones aún deben conocer el sistema de transporte deseado para poder seleccionarlo. [6] Las aplicaciones pueden lograr esta independencia del protocolo de transporte utilizando las facilidades de selección de red que también proporciona la biblioteca XTI / TLI (libnsl). [7]
Equivalentes de sockets a XTI / TLI
Aunque XTI / TLI es similar a la interfaz de socket BSD, ninguna está incluida ni incluye la otra y varias funciones que tienen el mismo rol tienen un comportamiento diferente. Tanto las interfaces de sockets TLI como BSD en las versiones de los sistemas operativos UNIX SVR 3 [8] y SVR 4 [9] se implementan utilizando la misma interfaz de servicio de transporte STREAMS subyacente .
La siguiente tabla muestra la equivalencia aproximada entre el POSIX XTI y las interfaces de sockets:
Interfaz XTI / TLI | Interfaz de enchufe | Misma semántica |
---|---|---|
de la pluma | enchufe | sí, excepto que t_open puede realizar t_getinfo al abrir. |
- | par de enchufes | - |
t_getinfo | - | - |
t_getprotaddr | getsockname, getpeername | sí, pero t_getprotaddr puede realizar ambas llamadas en una. |
t_bind | atar, escuchar | sí, excepto que t_bind puede enlazar y escuchar en una sola operación. |
t_optmgmt | getsockopt, setsockopt | sí, excepto que t_optmgmt puede obtener valores predeterminados y negociar valores; getsockopt y setsockopt solo pueden establecer y recuperar valores actuales. |
t_unbind | unir | sí, la vinculación a AF_UNSPEC desvincula un socket. |
t_close | cerca | sí, excepto para los puntos finales conectados, t_close siempre resulta en una desconexión abortiva, mientras que cerrar a veces resulta en una liberación ordenada. |
t_getstate | - | - |
t_sync | - | - |
t_alloc | - | - |
t_free | - | - |
t_look | seleccionar, getockopt | select y getsockopt (SO_ERROR) no pueden proporcionar todas las indicaciones proporcionadas por t_look. |
terror | perror | sí, excepto que XTI usa t_errno además de errno y puede indicar tanto errores de transporte como errores del sistema UNIX. |
t_strerror | strerror | sí |
t_connect | conectar | t_bind es necesario antes de t_connect |
t_rcvconnect | Seleccione | t_rcvconnect es equivalente a una selección en un conjunto de conectores O_NONBLOCK en el que se emitió una conexión. |
t_escuchar, t_accept, t_snddis | aceptar | accept no puede rechazar una conexión, mientras que una conexión recibida con t_listen puede aceptarse posteriormente con t_accept o rechazarse con t_snddis. |
t_snd, t_sndv | enviar, enviar a, enviar msg | sí, pero t_snd y t_sndv solo se pueden usar para transporte en modo de conexión. |
t_rcv, t_rcvv | recv, recvfrom, recvmsg | sí, pero t_rcv y t_rcvv solo se pueden usar para transporte en modo de conexión. |
t_snddis | cerrar, apagar | Después de emitir t_snddis, un programa puede continuar escuchando solicitudes o restablecer la conexión con la función t_connect, mientras que close libera el descriptor del archivo de socket. Para continuar la comunicación, es necesario establecer una nueva conexión emitiendo nuevamente socket y enlazar, escuchar o conectar. |
t_rcvdis | ENOTCONN, ECONNRESET, EPIPE, SIGPIPE | sí, excepto enchufes que reciben la desconexión como error o señal. |
t_sndrel, t_sndreldata | cerrar | sí, pero shutdown no es capaz de enviar datos con la liberación ordenada: t_sndreldata puede enviar datos con la liberación ordenada. T_sndrel solo apaga la dirección de envío. |
t_rcvrel, t_rcvreldata | - | - |
t_sndudata, t_sndvudata | sendmsg | sí, pero t_sndudata y t_sndvudata solo se pueden usar de forma portátil para datos en modo sin conexión. |
t_rcvudata, t_rcvvudata | recvmsg | sí, pero t_rcvudata y t_rcvvudata solo se pueden usar de forma portátil para datos en modo sin conexión. |
t_rcvuderr | - | - |
leer escribir | leer escribir | XTI / TLI necesita empujar el módulo tirdwr antes de llamar a las funciones de lectura / escritura |
Para determinar la secuencia adecuada de llamadas a funciones de biblioteca, XTI / TLI usa indicadores de estado, de manera similar a la API de sockets. Sin embargo, algunas funciones de API de socket se pueden llamar desde múltiples estados (por ejemplo, sendmsg desde el estado no vinculado en el socket sin conexión, conectar desde el estado no vinculado en el socket orientado a la conexión); mientras que las funciones de la API XTI solo se pueden emitir desde un estado específico y correspondiente (por ejemplo, t_bind solo se puede emitir desde el estado no vinculado, t_connect solo desde el estado vinculado).
Modo asíncrono XTI / TLI
La aplicación de usuario final XTI en tiempo real utilizará la interfaz XTI de forma asíncrona (de lo contrario, no hay garantías sobre cuánto tiempo se bloqueará una llamada en espera de datos). El conjunto de funciones es el mismo que el de las llamadas síncronas, pero al inicializar el punto final de transporte, se proporciona el parámetro O_NONBLOCK. El modo asíncrono XTI permite que la aplicación del usuario final sea notificada sobre varios eventos de manejadores de archivos: solicitudes de indicaciones de conexiones, nuevos datos, tiempos de espera.
XTI refina TLI
XTI refina TLI, proporcionando mensajes de error adicionales, eventos adicionales para administrar el control de flujo y simplifica los parámetros de las funciones (XTI siempre abre los extremos de transporte como lectura-escritura). Además, XTI verifica el valor de qlen para evitar el bloqueo indefinido cuando la aplicación emite t_listen. Se han agregado funciones de utilidad adicionales: t_strerror () y t_getprotaddr () .
Implementaciones
La biblioteca XTI se encuentra en UNIX System V pero también tiene puertos para otros sistemas, como OpenSS7 para Linux.
Notas
- ^ ( XNS y 5.2 )
- ^ ( XNS y 5 )
- ↑ a b ( Goodheart 1994 , p. 523)
- ^ ( Stevens 1994 , págs. 17-18)
- ^ ( Goodheart 1994 , págs. 519)
- ^ Introducción a las tecnologías de redes
- ↑ ( Stevens 1990 )
- ^ ( Waite 1987 , págs. 295-304)
- ↑ ( Goodheart 1994 , p. 519)
Referencias
- Guía de interfaces de programación: Sun Microsystems, Inc. Septiembre de 2008
- Buen corazón, Berny; James Cox (1994). El jardín mágico explicado: los componentes internos de UNIX System V Release 4 . Englewood Cliffs, Nueva Jersey: Prentice-Hall. ISBN 0-13-098138-9.
- Open Group (septiembre de 1994). Servicios de red (XNS) Problema 4 . Especificación X / Open CAE . XNS (Edición 4 ed.). Berkshire, Reino Unido: The Open Group. ISBN 1-85912-049-0.
- Open Group (febrero de 1997). Servicios de red (XNS) Problema 5 . Especificación CAE . XNS (Edición 5 ed.). Berkshire, Reino Unido: The Open Group. ISBN 1-85912-165-9.
- Grupo abierto (1999). Servicios de red (XNS) Edición 5.2, Borrador 2 . Especificación CAE . XNS (Edición 5.2, Borrador 2 ed.). Berkshire, Reino Unido: The Open Group. ISBN 1-85912-241-8.
- Rago, SA (1993). Programación UNIX V Red del sistema . Reading, Mass .: Addison-Wesley. ISBN 0-201-56318-5.
- Stevens, W. Richard (1990). Programación de red UNIX . Englewood Cliffs, Nueva Jersey: Prentice-Hall. ISBN 0-13-949876-1.
- Stevens, W. Richard (1994). TCP / IP ilustrado: los protocolos . Reading, Mass .: Addison-Wesley. ISBN 0-201-63346-9.
- Waite, Mitchell (1987). Documentos UNIX para desarrolladores y usuarios avanzados de UNIX . Indianápolis: Howard W. Sams & Company. ISBN 0-672-22578-6.
enlaces externos
- Networking Services (XNS) Edición 5.2, The Open Group, enero de 2000
- Emisor El Emisor de la Norma Técnica XTI
- Introducción a las tecnologías de redes
- Ejemplo orientado a conexiones de una comunicación TCP utilizando interfaz XTI. [ enlace muerto permanente ]