为什么网络协议选择分层设计?这样做有什么好处?

关于网络协议层次的演化历程,有什么好的参考资料?
关注者
58
被浏览
38,843

9 个回答

因为现在流行的网络层以上协议都是ip的,所以看上去分层好像没有那么必要了。但是分层模型出来的时候,网络的形态千奇百怪,IP协议只是其中之一。

所以IP以上协议,现在看起来不分层好像问题也不大。反正就2个协议族tcp和udp。tcp上面99%以上是http。

但是不是每个开发者都要从IP层开始写软件呢?现在看到最大的好处就是解放了应用层开发者,他们专心去写应用不用关注下层实现。但是必须明白下层提供的服务能力。

事实上,在常见的用户协议以外,有很多很多很多设备间的协议。这些协议如果在分层模型下定义很“纯粹”,如果不是分层,那么设计起来就复杂多了。

说到底,还是复杂问题简单化的结果。

而对于IP层以下的协议,分层的好处是一目了然的:不同的接入方式必然是不同的协议。如果http在wifi上和在以太上,在gprs上,lte上各自定义完整的协议栈,那么服务器端怎么办?不可能为每一种接入方式提供一个服务器协议栈吧。也不现实,不经济。如果在IP层分开,那么服务器只要一套就可以支持各种终端了

所以至少在ip层以下分层非常必要。

分层好处是降低耦合,上层不关心底层实现,只关心底层提供服务(接口),属于面向接口设计,这样层与层之间通信就可以标准化。标准化意味着底层可扩展,可替换,给协议设计带来很大灵活性和扩展性,本身网络是非常异构复杂的,需要不断升级协议去解决和优化网络问题;