El DICTionary Network Protocol (DICT) es una transacción TCP basada en petición/respuesta que permite a un cliente acceder a definiciones de diccionario, por medio de bases de datos de lenguajes naturales.
Introducción
El Protocolo DICT fue creado por el DICT Development Group, y está descrito en el RFC 2229 (Request For Comments). Su meta es sobrepasar el protocolo Webster y permitir a los clientes acceder a más diccionarios al mismo tiempo. Habitualmente escucha en el puerto 2628.
Tokens Utilizados
Las Órdenes y las Respuestas están compuestos por caracteres del UCS ISO 10646 utilizando la codificación UTF-8 RFC 2044. Más concretamente, usando las convenciones gramaticales de RFC 822:
(Extraído del RFC 2229)
; ( Octal, Decimal.) CHAR = <any UTF-8 character (1 to 6 octets)> CTL = <any ASCII control ; ( 0- 37, 0.- 31.) character and DEL> ; ( 177, 127.) CR = <ASCII CR, carriage return> ; ( 15, 13.) LF = <ASCII LF, linefeed> ; ( 12, 10.) SPACE = <ASCII SP, space> ; ( 40, 32.) HTAB = <ASCII HT, horizontal-tab> ; ( 11, 9.) <"> = <ASCII quote mark> ; ( 42, 34.) <'> = <ASCII single quote mark> ; ( 47, 39.) CRLF = CR LF WS = 1*(SPACE / HTAB) dqstring = <"> *(dqtext/quoted-pair) <"> dqtext = <any CHAR except <">, "\", and CTLs> sqstring = <'> *(dqtext/quoted-pair) <'> sqtext = <any CHAR except <'>, "\", and CTLs> quoted-pair = "\" CHAR atom = 1*<any CHAR except SPACE, CTLs, <'>, <">, and "\"> string = *<dqstring / sqstring / quoted-pair> word = *<atom / string> description = *<word / WS> text = *<word / WS>
Órdenes
La forma de ejecutar las órdenes es la siguiente:
- Se utiliza una palabra orden, seguida de cero o más parámetros.
- Las órdenes con parámetros deben separar los parámetros entre sí en la propia orden mediante espacios o caracteres TAB.
- Las líneas de órdenes deben estar completas con todos los parámetros requeridos, y solamente puede haber una orden en cada línea.
- Cada línea de órdenes debe terminar con CRLF.
La gramática para las órdenes es la siguiente:
command = cmd-word *<WS cmd-param> cmd-word = atom cmd-param = database / strategy / word database = atom strategy = atom
- No hay diferenciación entre mayúsculas y minúsculas.
- Las líneas de órdenes no pueden exceder los 1024 caracteres, incluyendo espacios, separadores, caracteres de puntuación y el CRLF.
Respuestas
Hay 2 tipos de respuesta a las órdenes anteriores: de Estado, y de Texto.
- Estado:
Las respuestas de estado indica la réplica del servidor al último comando recibido del cliente. Las líneas de respuesta de estado comienzan con 3 elementos de código alfanumérico, el cual es suficiente para distinguir todas las respuestas. El primer dígito de la respuesta indica el éxito, fracaso o proceso del anterior comando (basado generalmente en RFC 640,RFC 821).
1yz - Positive Preliminary reply 2yz - Positive Completion reply 3yz - Positive Intermediate reply 4yz - Transient Negative Completion reply 5yz - Permanent Negative Completion reply
El siguiente dígito en el código indica la categoría de la respuesta:
x0z - Syntax x1z - Information (p. e., la ayuda) x2z - Connections x3z - Authentication x4z - Unspecified as yet x5z - DICT System (Estas respuestas indican el estatus del sistema DICT del receptor con respecto a la transferencia solicitada u otras acciones de sistema DICT.) x8z - Nonstandard Extensiones no estadarizadas
La respuesta esperada por cada orden está detallada en la propia especificación de la orden. Algunas repsuestas de estado pueden contener parámetros como números o cadenas de caracteres
- Texto:
Antes que el texto, se envía una línea de respuesta de estado, usando un código 1yz, para indicar que el texto vendrá a continuación. El texto se envía como una serie de sucesivas líneas de texto, cada una terminada por CRLF. Para indicar el final del texto, se envía una línea con el código decimal 46 o ("."). Después de una respuesta de texto, se envía otra respuesta de estado de código 2yz. Las líneas siguen sin poder exceder los 1024 caracteres, contando espacios, separadores, etc. como se apuntó anteriormente.
Ejemplo de un Cliente DICT
Buscando la palabra widget.
Más información
Consultando el RFC 2229 (inglés).
Enlaces externos
Web del DICT Development Group
Bases de datos de diccionarios: