Implementando Byte Stuffing usando Java

Necesidad de relleno de bytes 
En las tramas de tamaño variable en la capa de enlace de datos, necesitamos definir una forma de separar una trama de la siguiente. El relleno de bytes se emplea para realizar la tarea. En relleno de bytesse agrega una bandera de 8 bits (‘F’) al principio y al final del cuadro, distinguiendo así un cuadro del siguiente. Por lo tanto, cada vez que se encuentra una secuencia de banderas (‘F’), significa el comienzo o el final de una trama. Sin embargo, este ingenioso esquema daría lugar a una discrepancia si el patrón de bandera (‘F’) se produjera dentro de los datos transportados por el marco mismo. El relleno de bytes viene al rescate aquí, al rellenar los datos originales con una secuencia de escape adicional de 8 bits (‘E’) antes del patrón de bandera, siempre que ocurra dentro de los datos transportados por un marco. El receptor tendría entonces que desmontar la secuencia de escape para obtener los datos originales.
Una simple pregunta que podría surgir en este momento es, ¡qué pasaría si la secuencia de escape (‘E’) formara parte de los datos que se enviarán! Este escenario se maneja exactamente de la misma manera que se describe anteriormente, es decir, se agrega una secuencia de escape adicional de 8 bits (‘E’) a los datos originales antes de la secuencia de escape que formaba parte de los datos.
En los protocolos orientados a caracteres, donde los datos a transportar son caracteres de 8 bits, se emplea el relleno de bytes para manejar los problemas discutidos anteriormente.
Para simplificar las cosas, consideraremos solo tres tipos de secuencias de bytes en los datos enviados, como: 
F : Secuencia de bandera 
E : Secuencia de escape 
D : Cualquier otra secuencia de datos 
Por ejemplo: 
 

At Sender Side
Enter the Message to be Sent : 
DDEDFFDE
The data being sent (with byte stuffed) is : FDDEEDEFEFDEEF
Sending Message....
Thanks for the Feedback Server!!

At Receiver Side
Message Received...Successfully!!!
The Stuffed Message is : FDDEEDEFEFDEEF
The Destuffed Message is : DDEDFFDE
Messaging is over.....EXITING

En el ejemplo anterior, podemos ver cómo se recuperan los datos originales en el extremo del receptor. 
Enfoque
en el lado del remitente (cliente) 
 

  1. Los datos de cada cuadro en el lado del remitente se rellenan primero con una secuencia de banderas de 8 bits (‘F’) al principio y al final de cada cuadro.
  2. A continuación, los datos se escanean para ver si alguna secuencia de banderas similar (‘F’) forma parte de ellos o no. En caso afirmativo, antes de cada secuencia de bandera, se rellena una secuencia de escape adicional (‘E’).
  3. Ahora, si se encuentra que cualquier secuencia de escape similar (‘E’) forma parte de los datos a enviar, entonces se rellena una secuencia de escape adicional (‘E’) antes de que ocurra cada secuencia de escape.
  4. Finalmente, estos datos rellenos son enviados por el remitente.
    1. El receptor se salta el primer y el último byte de los datos recibidos, ya que son simplemente para señalar el comienzo y el final de una trama, respectivamente, y no contienen ningún dato útil.
    2. A partir del siguiente byte, los datos se escanean y si se encuentran dos secuencias de escape (‘E’) en sucesión, la primera se elimina. De manera similar, si una secuencia de escape es seguida por una secuencia de bandera (‘F’), la primera se desllena.
    3. Esta estrategia ayuda al receptor a recuperar los datos reales enviados con precisión.

Publicación traducida automáticamente

Artículo escrito por SaagnikAdhikary y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *