The KISS protocol is designed to be easy to implement in simple embedded devices, which are capable of asynchronous serial communications. While it allows arbitrary data to be transferred, there is no support for flow control or error handling.
Back-to-back FEND codes should not be interpreted as empty frames. Instead, all but the last FEND code should be discarded. This can be used for synchronization.
If the FEND or FESC codes appear in the data to be transferred, they need to be escaped. The FEND code is then sent as FESC, TFEND and the FESC is then sent as FESC, TFESC.
Any of these codes may be sent from the host to the TNC, but only the "Data frame" code should be sent from the TNC to the host. "In multi-port TNCs, the upper 4 bits of the type indicator byte can specify one of up to sixteen ports."