Ciò accade a un livello di bit dell'elettronica del ricevitore.
Per ogni byte devi ricevere 8 bit. A questo punto della comunicazione hai solo decodificato i livelli del segnale (ad es. Convertito la potenza o la tensione elettrica) in bit. Si ricevono bit nel buffer.
Riempi costantemente il buffer (a livello di bit), quindi puoi controllare il buffer per vedere se hai ricevuto qualcosa. Prima si riceve molto 000000, ma poi a un certo punto arriva il messaggio ei bit nel buffer iniziano ad avere valori diversi.
Ora, se sei fortunato, il primo bit del messaggio arriva ad esempio all'8 ° o al 16 ° posto nel buffer (o allo 0 °). Questi sono tutti i bit che iniziano anche una rappresentazione logica di un byte.
Se non sei così fortunato, hai semplicemente inserito uno 0 all'ottavo posto di un buffer e inizieresti a riempire il messaggio al nono posto, il che significherebbe i primi sette bit dell'originale il primo byte verrebbe ricevuto come primo byte. E un secondo byte verrebbe ricevuto come ultimo bit del primo byte originale e primi 7 bit del secondo byte originale e così via. Questo rovinerebbe le cose per bene.
Devi essere in grado di inserire alcuni zeri nel buffer per controllare con l'inizio che riempie il messaggio nella "posizione di inizio byte" del buffer. Ma poiché sai quanti zeri dovevi riempire, sai quanto ritardo questo ha aggiunto per un certo messaggio (se conosci la frequenza di trasmissione).
EDIT: Giusto per rendere le cose più precise: sposti il preambolo nel buffer a byte casuali, è così che sai che stai ottenendo qualcosa. sync viene quindi utilizzato per sincronizzare la trasmissione (ad esempio, inserisci gli zerros in modo da iniziare dalla posizione del bit giusto).