DICT

De Wikipedia, la enciclopedia libre

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[editar]

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[editar]

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[editar]

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[editar]

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[editar]

Buscando la palabra widget.

Buscando la palabra Widget

Más información[editar]

Consultando el RFC 2229 (inglés).

Enlaces externos[editar]

Web del DICT Development Group

Bases de datos de diccionarios: