OSI模型:是理论巨人还是实践矮子?

在刚毕业那会儿,大概是2011年左右,我.


在刚毕业那会儿,大概是2011年左右,我还是个网络小白,才接触OSI模型,想着能靠它驰骋网络江湖。结果这么多年过去了,我发现自己在日常工作中,真的很少用到这玩意儿。或许这也是为什么,在这方面我还是小白吧。

添加图片注释,不超过 140 字(可选)

不过,说实话,这OSI模型,看着挺高大上的,分层思想啥的,听起来挺牛。但用到它的机会真不多。我印象中用到最多的时候,是在给公司刚校招进来的,如我一样的非科班新同事讲如何学习TCP/IP方面的知识时。

但在后面的工作中,总有人跟我说,OSI模型多有用啊,网络问题分析一抓一个准。真的吗?

我觉得,它也就告诉我们网络层得建立在稳定运行的数据链路层上,数据链路层又得靠物理层撑着,这样数据才能从一个主机跳到另一个。IP协议怎么在物理链路上跑,怎么用来排查故障,这些确实重要。但这些都是通用的分层概念,不是OSI模型独有的。比如异步传输模式ATM(Asynchronous Transfer Mode)采用了类似于OSI模型的分层结构,还有SANA模型、DoD模型等等。

添加图片注释,不超过 140 字(可选)

那OSI模型到底给我们带来了啥新鲜玩意儿呢?至少我从没听谁说过:“这个协议在物理层,所以它就得这么干……”或者“这个协议属于网络层,它的工作原理就是……”之类的。同理,我也没听过:“这个协议在表示层,它的作用就是解决……”这种说法。

OSI模型,也就告诉我有哪些层,这些层之间有个接口。然后呢?然后就没了。它没告诉我这些层到底解决了什么问题,也没告诉我该怎么解决。你说OSI模型能帮我理解每层的功能,或者每层解决的问题吗?

在理解每层功能方面的确有点用,但作用真的有限,在解决问题上,真的很少引用OSI模型来解决问题。

添加图片注释,不超过 140 字(可选)

更令人困惑的是,我们如何处理OSI模型中的隧道问题?理论上,咱们可以把低层的协议像俄罗斯套娃一样,塞进同一层或者更高层的另一个协议里,这样中间节点的封装协议信息就被藏起来了。

但你知道吗?在OSI模型里,这种“层中层”的概念是不存在的。递归?在OSI模型里可没这玩意儿,它主要描述的是接口,而不是功能。

添加图片注释,不超过 140 字(可选)

比如说,通过OSI模型,你能解释BGP和OSPF这些协议到底属于哪一层?我反正是解释不清楚。

TCP带有端口号(套接字号),用来决定哪个应用接收数据,这难道不是在给应用“喂饭”吗?但具体怎么喂,得看TCP是跟HTTP混还是跟FTP混。以太网到底属于物理链路层还是数据链路层?这两个不应该是不同的协议吗?

添加图片注释,不超过 140 字(可选)

这并不是说OSI模型不值得学习,只是认为它在设计、构建或管理网络、协议或协议栈方面并没有特别大的用处。

OSI模型的好处在于它让我们有了分层的基本概念,特别是接口到接口、主机到主机、应用程序到应用程序的通信方式。但是,OSI模型是理解网络工作方式的强大基础模型吗?恐怕不是。它更像是个启蒙老师,带我们入了门,但真要深入研究网络,还得靠咱们自己多实践、多摸索。

所以,在你看来,OSI模型到底是理论巨人还是实践矮子?

发表回复