If absolute reliability is required, then some type of error detection and/or correction should be used. ALL physical interface types are prone to an error every now and then. Choice of method depends on what overhead you are prepared to pay. A Hamming code generator is fairly easy to implement, but cuts your thoughput in half. More common is CRC which for relatively low computational overhead is very good at detecting errors so you can ask for a retransmission. Simplest is a checksum. Or send things twice and compare received results... lots of ways to get around errors, so just pick a convenient protocol for other reasons like how far you want to send data, how much bandwidth is available, etc.