Métodos para confirmar en ambos lados que se recibió una señal en una dirección

1

Supongamos que hay dos dispositivos (A y B) que se comunican entre sí (dúplex completo). Por el bien de este ejemplo, digamos que el medio es RF (inalámbrico).

Si el dispositivo A envía un mensaje al dispositivo B, ¿qué métodos / estrategias existen para ambos dispositivos para confirmar que B recibió el mensaje y para ambos dispositivos ser ¿Seguro que el otro dispositivo lo sabe?

Esto se explica mejor a través de un ejemplo del mundo real:

Supongamos que tiene un control remoto / llave de RF de dúplex completo para su automóvil que controla las cerraduras. El control remoto tiene una pantalla LCD.

Si ordena que se cierren las cerraduras, el control remoto enviará una señal al auto. Si el automóvil recibe la señal correctamente, puede bloquear las puertas inmediatamente y luego enviar un acuse de recibo (ACK) al control remoto para que diga "las puertas están bloqueadas" y el control remoto puede mostrar esto en su pantalla. Sin embargo, el control remoto puede recibir o no el ACK del auto.

Si el control remoto no recibe el ACK del automóvil, el control remoto y el usuario no saben si las puertas están cerradas. En este punto, el usuario puede volver a intentar el proceso, o darse por vencido y caminar hacia el automóvil, ya que cualquiera de los dos no es deseable porque no era necesario. También puede causar problemas adicionales, como que el usuario espere que el automóvil se desbloquee y, por lo tanto, no traiga sus llaves para sacar un artículo del maletero. Por lo tanto, existe el deseo de que tanto el control remoto como el automóvil estén "en la misma página".

Ahora consideremos la misma secuencia, excepto que el control remoto recibió el ACK. El control remoto ahora sabe que el auto recibió el mensaje. Puede mostrar al usuario que las puertas están bloqueadas ... Pero el auto no sabe que el control remoto sabe. Desde el punto de vista del automóvil, es posible que no se haya recibido el ACK, por lo que las puertas no deberían estar cerradas aún o de lo contrario nos encontramos con los problemas mencionados en el último párrafo. Por lo tanto, el automóvil puede esperar a que el control remoto envíe un ACK propio al automóvil. Si se recibe, el auto sabe que el control remoto sabe que el auto sabe cómo cerrar las puertas ... ¿Pero el control remoto lo sabe? ¡No!

¿Viendo un patrón aquí? Ambos dispositivos continúan pasando ACKs de un lado a otro. Tampoco puede salir y decir "Sé al 100% que el otro dispositivo sabe que voy a realizar mi acción" .

¿Hay alguna forma para que tanto el control remoto como el automóvil se aseguren de que las puertas estén bloqueadas y el control remoto lo muestre?

Si eso no es posible, ¿qué otras estrategias aparte de la simple fuerza bruta (el auto que envía ACK repetidamente) están ahí para estar bastante seguros de que las puertas están bloqueadas y el control remoto lo muestra como tal?

    
pregunta Bort

3 respuestas

2

Como se mencionó en los comentarios, esto se conoce como el Problema de los dos generales , y ha estado bien estudió. Se ha comprobado que no existe un algoritmo perfecto que siempre lleve a que ambas partes estén de acuerdo y que el otro también lo tenga. Pero si está dispuesto a enviar muchos mensajes, puede acercarse arbitrariamente.

La "mejor" estrategia estará determinada por los detalles del problema. Dependerá del costo del envío de los mensajes (que podría ser diferente en ambas direcciones), el costo de la falla, la probabilidad de que falten los mensajes y si los mensajes faltantes están relacionados o no.     

respondido por el Jack B
2

Mmm! La forma habitual imita la forma en que intercambiamos información nosotros mismos. "Aquí hay un mensaje al que necesitaré una respuesta. El mensaje es" cierre las puertas cuando obtenga mi aprobación ". Una buena manera de que el automóvil responda sería enviar el mismo mensaje pero con un código ACK1 adjunto. Ahora está esperando que el control remoto repita el comando tal vez con un código ack2 ligeramente diferente. Para algo como el cierre remoto de la puerta, las luces del automóvil son una buena manera de indicar que el mensaje ha sido activado.

Sin embargo, creo que tiene en mente algo mucho más crítico que el bloqueo de la puerta del automóvil & desbloqueo en mente ¿Qué tal "tren de aterrizaje bloqueado" en un avión?

Estos sistemas se llaman abiertos & bucle cerrado. Un bucle abierto simplemente realiza la acción. Hay muchas maneras en las que un mensaje puede ser verificado por su autenticidad. La adición de caracteres de verificación al final es una vez dicho método. El carácter de control cíclico (CCC) o el carácter de control de bloque (BCC) son formas de contar, por ejemplo, el número de "unos" en un mensaje digital. Un poco como contar los números de "A" en un texto le daría una mejor verificación de la integridad.

Al final del día, si es de vital importancia, el mensaje puede enviarse dos o más veces y compararlo para asegurarse de que se reciba con fidelidad. {recibido fielmente - recibido fielmente}! No se activará hasta que se intercambie un número previamente acordado de mensajes similares.

Espero que esto abra las posibilidades de cómo es posible proceder con una autenticidad y seguridad casi a prueba de bombas y responda a su consulta de manera suficiente.

Esto de ninguna manera considera la cuestión de la intercepción o generación de comandos deshonestos. Eso es más dentro de la esfera de cyphers & códigos - un juego de pelota bastante diferente.

    
respondido por el Berry Greene
2

En las redes de computadoras, el lado que solicita generalmente reenvía la solicitud hasta que obtiene un ACK. Si se pierde el ACK, se recibirá una solicitud duplicada.

Intercambio de ejemplos:

  

Control remoto: "Bloquea la puerta".
  Coche: (cierra la puerta)
  Coche: "ACK" (mensaje perdido en la transmisión)
  Control remoto: "Cierre la puerta".
  Coche: (señala que la puerta ya está bloqueada y no hace nada)
  Coche: "ACK" (mensaje perdido en la transmisión)
  Control remoto: "Cierre la puerta".
  Coche: (señala que la puerta ya está bloqueada y no hace nada)
  Coche: "ACK" (mensaje recibido con éxito)

Tenga en cuenta que para usar este método, el protocolo debe diseñarse de modo que las solicitudes duplicadas no importen. Así que el control remoto no puede decirle al automóvil "cambiar el estado de la puerta". En su lugar, el control remoto debe preguntar primero si la puerta está actualmente bloqueada (con reintentos) y luego establecerla en el estado opuesto (con reintentos).

Después de un cierto número de reintentos fallidos, el control remoto debe abandonar (quizás el automóvil no esté dentro del alcance). En ese caso, no sabe si el automóvil está fuera del alcance o si el automóvil no transmitió la respuesta. Esto se puede evitar enviando primero un mensaje de no-op (lo que hace que el automóvil envíe un ACK, pero no haga nada) para ver si el automóvil está dentro del rango.

Como lo notaron otros respondedores, siempre hay una posibilidad distinta de cero de que el control remoto no reciba los ACK del automóvil cuando la operación fue exitosa. Esto es inevitable. En el mejor de los casos, la probabilidad se puede reducir de modo que sea improbable que ocurra en escenarios normales.

    
respondido por el immibis

Lea otras preguntas en las etiquetas