stadium-proto/Транспортный адаптер.md

3.0 KiB
Raw Blame History

Транспортный адаптер

Адаптер представляет из себя нечто, способное вести коммуникацию в рамках конкретного транспортного протокола, преобразовывать передаваемый ему произвольный набор байт в форму, приемлимую транспортным протоколом и корректно воспринимаемую другим адаптером того-же вида, а также выполнять обратное преобразование. У каждого транспортного адаптера есть собственное кодовое имя, которое позволяет его однозначно идентифицировать.

Транспортный адаптер предоставляет интерфейс для передачи данных в виде блоков, т.е. массивов байт известного размера. У каждого транспортного адаптера есть собственный лимит на максимальный размер блока данных, вне зависимости от того, является-ли низлежащий протокол потоковым.

Транспортный адаптер, в силу своей природы, может также обеспечивать дополнительный уровень шифрования и добавлять "шумовые пакеты" в траффик. Адаптеры должны согласовать эти параметры (если нужно) самостоятельно.

В рамках базового протокола предписана реализация нескольких адаптеров, реализующих наивные варианты передачи данных по нижележащим протоколам. Предписанных к реализации адаптеров, перечень которых приведён ниже, существует два типа: обязательные и рекомендуемые. Первые обязаны присутствовать в любой реализации, соответствующей спецификации протокола, вторыми допускается пренебречь.

Обязательные

  • DumbU: реализует передачу поверх протокола UDP
  • DumbT: передаёт данные по TCP

Рекомендуемые

  • FirstClass: использует для передачи минималистичный сабсет HTTP/1.1
  • TrashBox: использует FTP (RFC 959)
  • TLSimp: использует TLS 1.3 (RFC 8446 и пр.)
  • Pissle: использует ICMP