Ich halte das nicht für ein Designfehler.
Ein Protokoll der ISO-Schichten 5-7 ist doch normalerweise genau definiert.
HTTP läuft z.B. normalerweise über
TCP, standardmäßig auf Port 80. Also ist es ein Nachfahre von
TCP.
TFTP läuft normalerweise über UDP und hört auf Port 69. Ist also ein Nachfahre von UDP.
Wenn man
Indy so aufbauen würde, dass man alle möglichen Protokolle aus dem unteren ISO-Modell und die Verschlüsselungen mischen / tauschen würde, wäre die Definition der einzelnen Protokolle doch irgendwie sinnlos...
Ich finde die Klassenhierarchie eigentlich ganz anständig so.