tl;dr OSC is more of an encoding than a protocol.
A true communication protocol would address the semantics of what the communicated messages mean; one aspect of OSC's openness is that it purposefully leaves semantics completely up to each implementation.