Адаптер представляет из себя нечто, способное вести коммуникацию в рамках конкретного транспортного протокола, преобразовывать передаваемый ему произвольный набор байт в форму, приемлимую транспортным протоколом и корректно воспринимаемую другим адаптером того-же вида, а также выполнять обратное преобразование. У каждого транспортного адаптера есть собственное кодовое имя, которое позволяет его однозначно идентифицировать.
Транспортный адаптер предоставляет интерфейс для передачи данных в виде блоков, т.е. массивов байт известного размера. У каждого транспортного адаптера есть собственный лимит на максимальный размер блока данных, вне зависимости от того, является-ли низлежащий протокол потоковым.
Транспортный адаптер, в силу своей природы, может также обеспечивать дополнительный уровень шифрования и добавлять "шумовые пакеты" в траффик. Адаптеры должны согласовать эти параметры (если нужно) самостоятельно.
В рамках базового протокола предписана реализация нескольких адаптеров, реализующих наивные варианты передачи данных по нижележащим протоколам. Предписанных к реализации адаптеров, перечень которых приведён ниже, существует два типа: обязательные и рекомендуемые. Первые обязаны присутствовать в любой реализации, соответствующей спецификации протокола, вторыми допускается пренебречь.
### Обязательные
- DumbU: реализует передачу поверх протокола UDP
- DumbT: передаёт данные по TCP
### Рекомендуемые
- FirstClass: использует для передачи минималистичный сабсет HTTP/1.1
- TrashBox: использует FTP (RFC 959)
- TLSimp: использует TLS 1.3 (RFC 8446 и пр.)
- Pissle: использует ICMP <!-- Да, название прекрасно, цепочка ассоциаций была следующей: ICMP -> ICBM -> Missle -> Ping Missle -> ... -->