Este artículo necesita citas adicionales para su verificación . ( julio de 2023 ) |
Este artículo está escrito como un manual o una guía . ( Julio de 2023 ) |
KISS (Keep It Simple, Stupid [1] ) es un protocolo para comunicarse con un dispositivo controlador de nodo terminal (TNC) en serie utilizado para radioaficionados . Esto permite que el TNC combine más funciones en un solo dispositivo y estandarice las comunicaciones. KISS fue desarrollado por Mike Cheponis y Phil Karn para permitir la transmisión de tramas de radio por paquetes AX.25 que contienen paquetes IP a través de un enlace en serie asíncrono , para su uso con el programa NOS KA9Q . [1]
El protocolo KISS está diseñado para ser fácil de implementar en dispositivos integrados simples , que sean capaces de realizar comunicaciones seriales asincrónicas. Si bien permite la transferencia de datos arbitrarios, no admite control de flujo ni manejo de errores .
KISS utiliza el protocolo de Internet de línea serie , pero define su propio protocolo simple en lugar de encapsular paquetes IP sin procesar, como lo hace SLIP. Los mensajes del protocolo KISS permiten configurar variables de control comunes de TNC, así como enviar paquetes de mensajes arbitrarios para que los reenvíe la TNC. Si bien los paquetes pueden ser arbitrarios, los protocolos que se usan comúnmente con KISS incluyen AX.25 e IPv4 .
Valor hexadecimal | Abreviatura | Descripción |
---|---|---|
0xC0 | DEFENDERSE | Extremo del marco |
0xDB | FESC | Escape de marco |
0xDC | Envíalo | Final del marco transpuesto |
0xDD | TFESC-ES | Escape de marco transpuesto |
De manera similar a SLIP, los códigos FEND consecutivos no deben interpretarse como cuadros vacíos. En cambio, todos los códigos FEND, excepto el último, deben descartarse. Esto se puede utilizar para la sincronización y para darle tiempo al AGC del receptor para que se estabilice.
Si los códigos FEND o FESC aparecen en los datos que se van a transferir, es necesario escaparlos . El código FEND se envía entonces como FESC, TFEND y el FESC se envía entonces como FESC, TFESC. Dos FESC seguidos constituyen una violación del protocolo y se pueden utilizar para señalar una transmisión abortada. Esto permite que el receptor (normalmente el TNC) evite malinterpretar los datos subsiguientes como parte de una trama válida. Cualquier dato recibido antes del siguiente FEND se descartaría correctamente.
Cualquiera de estos códigos puede enviarse desde el host a la TNC, pero solo el código de "trama de datos" debe enviarse desde la TNC al host. "En las TNC multipuerto, los 4 bits superiores del byte indicador de tipo pueden especificar uno de hasta dieciséis puertos". [1]
Bytes de comando | Nombre | Longitud del argumento | Descripción |
---|---|---|---|
0x?0 [...] | Marco de datos: puerto X | Varía | La TNC debe transmitir los siguientes bytes. La cantidad máxima de bytes, y por lo tanto el tamaño del paquete encapsulado, está determinada por la cantidad de memoria de la TNC. |
0x?1, 0x?? | RETRASO DE TRANSMISIÓN | 1 | La cantidad de tiempo que se debe esperar entre el momento en que se activa el transmisor y el comienzo del envío de datos (en unidades de 10 ms). |
0x?2, 0x?? | PAG | 1 | El parámetro de persistencia. Persistencia=Datos*256-1. Se utiliza para CSMA . |
0x?3, 0x?? | Tiempo de ranura | 1 | Tiempo de intervalo en unidades de 10 ms. Se utiliza para CSMA . |
0x?4, 0x?? | Cola TX | 1 | El tiempo que se debe mantener activado el transmisor después de enviar los datos (en unidades de 10 ms). |
0x?5, 0x?? | Dúplex completo | 1 | 0 significa semidúplex , cualquier otro valor significa dúplex completo. |
0x?6, [...] | Establecer hardware | Varía | Depende del dispositivo. |
0xFF | Devolver | 0 | Salir del modo KISS. El TNC deja de procesar el protocolo KISS y vuelve a su comportamiento específico del proveedor. |
Los bytes del comando se muestran aquí en formato hexadecimal , pero se envían como bytes, no como cadenas hexadecimales. En todos los casos, excepto en el comando Return, el nibble alto indica a qué puerto (en una TNC multipuerto) se aplica el comando.
Una TNC puede admitir otros comandos no estándar, a discreción del proveedor.
Comenzar | Dominio | Datos0..DatosN | Fin |
---|---|---|---|
DEFENDERSE | Mordisco alto – Índice de puerto Mordisco bajo – Comando | Datos | DEFENDERSE |
C0 - DEFENDER | 00 - MARCO DE DATOS | 54 - "T" | 45 - "E" | 53 - "S" | 54-"T" | C0 - DEFENDER |
C0 - DEFENDER | 50 - MARCO DE DATOS: puerto 5 | 48 - "H" | 65 - "e" | 6C - "l" | 6C - "l" | 6F - "o" | C0 - DEFENDER |
(el byte hexadecimal 50 es binario 0101 0000, que un TNC multipuerto interpretaría como "MARCO DE DATOS, PUERTO 5" porque 0101 -> 5)
C0 - DEFENDER | 00 - MARCO DE DATOS: puerto 0 | Base de datos - FESC | DC-TFENDER | Base de datos - FESC | DD-TFESC | C0 - DEFENDER |
Ambos bytes del mensaje de ejemplo requieren escape, por lo que se envían como una secuencia de dos bytes. La TNC los anulará antes de la transmisión.
C0 - DEFENDER | FF - REGRESO | C0 - DEFENDER |
El comportamiento de la TNC después de regresar del modo KISS depende del proveedor. Algunos proporcionan un "cliente de nodo" orientado a líneas o un cliente de comandos de "buzón de correo".
{{cite conference}}
: CS1 maint: nombres numéricos: lista de autores ( enlace )