Если речь о соединении Arduino-терминал на ПК, то передаются тупо символы кодами. По сути обычный UART. Просто передает байты.
Если надо, то при передаче программист добавляет плюшки в виде кодов исправления ошибок, ну или хотя бы контрольной суммы (CRC), с повторным запросом, в случае, если контрольная сумма не сошлась. На других устройствах соответственно это тоже должно быть реализовано.
В случае использования конкретного протокола (например, если надыбали готовую библиотеку) данные фичи уже могут быть написаны за Вас.