Networking 理解osi模型中的应用层

Networking 理解osi模型中的应用层,networking,tcp,tcp-ip,osi,Networking,Tcp,Tcp Ip,Osi,我知道在应用层有很多协议 问题更多的是什么时候可以不遵循其中任何一条 假设我有一个客户端和一个服务器,客户端应用程序应该向该服务器发送一些数据,例如,关于使用该应用程序的人的一些统计数据 现在,对于一个好的编程实践,只打开一个tcp套接字并按原样发送数据就可以了,而不需要遵循协议的开销,或者我正在破坏osi模型,我应该在应用层遵循其中一个协议吗? 我是在这里重新发明轮子,还是一个切实可行的解决方案 总有一个应用层协议。如果您的概念是将某些统计信息以普通十进制数字的形式传输到某个TCP或UDP端口

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

问题更多的是什么时候可以不遵循其中任何一条

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

现在,对于一个好的编程实践,只打开一个tcp套接字并按原样发送数据就可以了,而不需要遵循协议的开销,或者我正在破坏osi模型,我应该在应用层遵循其中一个协议吗?
我是在这里重新发明轮子,还是一个切实可行的解决方案

总有一个应用层协议。如果您的概念是将某些统计信息以普通十进制数字的形式传输到某个TCP或UDP端口上的服务器“”,那么这就是您的(隐式)应用程序协议。该协议使服务器能够接收数据,并为数字赋予意义

OSI模型是一个模型,而不是一条法律。在应用层协议中,您可以做任何您想做的事情


但是,预测服务的未来扩展可能很有用,这样您就可以在一个流/数据报中传输
value\u a:data\0value\u b:data
,而无需保持客户端和服务器版本完全同步(服务器不需要所有值,只需忽略未知值)。当然,您每次也可以使用不同的服务器端口,这是您的选择。

现实世界中没有任何东西遵循OSI模型,毕竟OSI只是一个模型。您的操作系统将第5层、第6层和第7层合并为一个层。“破坏模型”是毫无意义的,特别是在OSI模型已经被破坏的情况下;-)如果我想在上面的用例中遵循应用层已知协议列表中的协议,我应该选择哪一个?例如,您可以选择普通HTTP、WebDAV、XMPP、SOAP,甚至FTP。任何适合你需要的。如果我只需要发送一些数字到服务器,我可以用http吗??如果没有,我是否可以使用其他协议?是的,请参阅上面的列表。使用HTTP,您甚至可以使用头条目(X-age-value或类似条目)传输实际数据。