我知道应用层有很多协议,
问题更多是关于什么时候可以不关注他们中的任何一个,
假设我有一个客户端和一个服务器,客户端应用程序应该向该服务器发送一些数据,例如,关于一个人使用该应用程序的一些统计数据,
现在,为了一个好的编程实践,是否可以只打开一个 tcp 套接字并按原样发送数据而无需遵循协议的开销,或者我是否破坏了 osi 模型,我应该遵循应用层的协议之一?我是在这里重新发明轮子还是一个实用的解决方案?
我知道应用层有很多协议,
问题更多是关于什么时候可以不关注他们中的任何一个,
假设我有一个客户端和一个服务器,客户端应用程序应该向该服务器发送一些数据,例如,关于一个人使用该应用程序的一些统计数据,
现在,为了一个好的编程实践,是否可以只打开一个 tcp 套接字并按原样发送数据而无需遵循协议的开销,或者我是否破坏了 osi 模型,我应该遵循应用层的协议之一?我是在这里重新发明轮子还是一个实用的解决方案?
总是有一个应用层协议。如果您的概念是“在某个 TCP 或 UDP 端口上将一些统计信息作为纯十进制数字”传输到服务器,那么这就是您的(隐式)应用程序协议。该协议使服务器能够接收数据并为数字分配含义。
OSI 模型是一种模型,而不是法律。在您的应用层协议中,您可以为所欲为。
但是,预测服务的未来扩展可能很有用,这样您就可以例如value_a:data\0value_b:data
在一个流/数据报中传输,而不必使客户端和服务器版本保持完美同步(服务器不期望所有值而只是忽略未知值) . 当然,您也可以每次都使用不同的服务器端口——您的选择。