I say this because I work with specialized equipment that uses RS-232 serial protocols for communication, and despite many decades of examples available of "the right" way to do it (e.g. OSI model), engineers continue(d) to not understand this lesson and design ad hoc protocols that don't respect this division of concerns and which suffer for it. Even in IP protocols designed to modernize this to wrap the RS-232 serial packets in internet packets, they repeat the same mistake(s). That is, in the midst of having to deal with a more complicated problem for serial protocol to IP protocol conversion because the original format didn't clearly distinguish envelope from data, they compound the problem by mixing levels in the new protocol.
For example, writing IPv4 into the standard for a proprietary an Application or Session level protocol even at the same time as our network is banning IPv4 and requiring IPv6, but the protocol is not even defined for IPv6 addresses. When it should be agnostic to IP level concerns entirely. (The engineers said, while designing the system, "well .1 is going to be this piece of equipment, .2 is going to be the other side, if it's blah blah blah it's .3, etc.")