【计算机网络】网络为什么要分层?

网络为什么需要分层?

我觉得最准确的回答应该是:封装对下层的变化

如果学过或者了解过设计模式就知道,实现一个复杂的、多功能的程序,为了便于维护与拓展,程序的功能之间应该是解耦和的。因此,复杂的程序都要分层,这是程序设计的要求。(好好理解这句话)

举个例子,对于复杂的电商网站,会分为 Dao 层(专门负责数据库连接、增删改查等操作),Service层(专门负责业务逻辑处理),Controller层(专门负责业务模块的流程控制)等,除此之外,为了进一步解耦和,在这些层中还需要首先设计接口,再设计其实现类。每个层单独完成一份任务,专注一份任务,这就是分层的设计思路

同样的道理,在计算机网络中,每一层的协议负责的工作都是不一样的,也就对应有了不同设备来处理(二层设备、三层设备)。同时,对下层的变化进行封装,这里有必要理解深刻一点。物理层只关心 0 和 1 是如何传输的,而对他们所表达的内容毫不关心;往上一层,数据链路层只关心数据帧是否准确地送到了对应MAC地址的目的主机,而不关心是通过光纤也好,同轴电缆也好,wifi也好,只要目的主机收到的数据帧没错就ok;继续往上,同理。

因此,这里引用极客时间中的两点作为总结:

  • 始终想像自己是一个处理网络包的程序:如何拿到网络包,如何根据规则进行处理,如何发送出去。
  • 始终牢记一个原则:只要在网络上跑的包,都是完整的。可以有下层没上层,但绝不能有下层没上层。
发布了104 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41960890/article/details/104903477