To synchronise you have to transmit a constant signal (all 0's or all 1's) and check that you receive the same signal. If it isn't the same signal, maintain the same 8bit pseudo random number in receiver until you get a match, and then pass to the next 8bit pseudo random number. If you are synchronised, you will get a new match. If not, keep the actual 8bit number until next match.
You will have to transmit the constant signal for a time enough to allow synchronisation (perhaps the length of your pseudo random code). After that you can and BOT and EOT codes to detect beginning and end of data...
Once you reach synchronisation in receiver, a 'desynchronisation' will mean the beginning of data if the received signal match with BOT code.
This is an easy way to reach synchronisation.
If you also need to recover original clock, the easiest way is to sample input signal in receiver at higher speed than the original clock, and detect input signal's edges to determine the best sample point. A 4x of the original clock is a good value.
Now you have to warm your brain a bit. Good luck.