了解osi模型中的应用层

Understanding the application layer in the osi model

我知道在应用层有很多协议,

问题更多的是什么时候可以不关注其中的任何一个,

假设我有一个客户端和一个服务器,客户端应用程序应该向该服务器发送一些数据,例如,一些关于使用该应用程序的人的统计数据,

现在,为了良好的编程习惯,是否可以只打开一个 tcp 套接字并按原样发送数据而无需遵循协议的开销,或者我是否破坏了 osi 模型并且我应该遵循其中一种协议在应用层? 我是在这里重新发明轮子还是一个实用的解决方案?

应用层协议总是存在的。如果您的概念是将一些统计数据传输到服务器“'on a certain TCP or UDP port as a plain, decimal number'”,那么这就是您的(隐式)应用程序协议。该协议使服务器能够接收数据并为数字分配含义。

OSI模型是模型,不是定律。在你的应用层协议中你可以为所欲为。

但是,预测该服务的未来扩展可能会很有用,这样您就可以,例如,在一个 stream/datagram 中传输 value_a:data[=10=]value_b:data 而不必保持客户端和服务器版本完美同步(服务器不期望所有值并且只是忽略未知值)。当然,您也可以每次使用不同的服务器端口 - 您的选择。