查看原文
其他

字节一面:大白你了解网络分层么?

大白 CS指南 2022-09-29

大家好,我是大白。

这是 「面试现场」操作系统 的姊妹篇计算机网络,这个系列我会通过真实面试的形式向你讲解某个具体的知识点。希望对你能够有帮助!

--------------当日上午,大白正在找借口请假面试-----------

一个阳光明媚的中午,大白在领导办公室

👨‍💻 大白:领导我这头有点疼啊。。。想请半天假去医院看看。

👨‍💼 领导:不是前段时间才牙疼嘛???

👨‍💻 大白:不好意思,领导,头太疼了,我要走了。。。

👨‍💼 领导:。。。。。。

--------------------当日下午,字节跳动大厦--------------------

👨‍🏫 面试官:上一轮的面试官反映说你网络这块掌握的不够好,我们继续来聊聊吧!

👨‍💻 大白:好的好的!

----------------------面试正式开始------------------------

1为什么网络要分层?

👨‍🏫 面试官:可以结合咱们日常的软件系统开发来谈谈 “为什么网络要分层”? 吗?

👨‍💻 大白:说到分层,我们先从我们平时使用框架开发一个后台程序来说,我们往往会按照每一层做不同的事情的原则将系统分为三层(复杂的系统分层会更多):

  1. Repository(数据库操作)
  2. Service(业务操作)
  3. Controller(前后端数据交互)

复杂的系统需要分层,因为每一层都需要专注于一类事情。网络分层的原因也是一样,每一层只专注于做一类事情。

为什么计算机网络要分层呢? 我再来较为系统的说一说:

  1. 各层之间相互独立:各层之间相互独立,各层之间不需要关心其他层是如何实现的,只需要知道自己如何调用下层提供好的功能就可以了(可以简单理解为接口调用)。这个和我们对开发时系统进行分层是一个道理。
  2. 提高了整体灵活性 :每一层都可以使用最适合的技术来实现,你只需要保证你提供的功能以及暴露的接口的规则没有改变就行了。这个和我们平时开发系统的时候要求的高内聚、低耦合的原则也是可以对应上的。
  3. 大问题化小 :分层可以将复杂的网络间题分解为许多比较小的、界线比较清晰简单的小问题来处理和解决。这样使得复杂的计算机网络系统变得易于设计,实现和标准化。 这个和我们平时开发的时候,一般会将系统功能分解,然后将复杂的问题分解为容易理解的更小的问题是相对应的,这些较小的问题具有更好的边界(目标和接口)定义。

说到计算机网络分层,我想到了计算机世界非常非常有名的一句话,这里分享一下:

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,计算机整个体系从上到下都是按照严格的层次结构设计的。

大白:如果一层不够那就加两层吧!

2OSI 七层模型

👨‍🏫 面试官:嗯嗯,不错不错!OSI七层模型了解吗?每一层都提供了什么功能?

👨‍💻 大白内心 OS:这个面试官有点东西啊!OSI七层模型虽然失败了,但是却提供了很多不错的理论基础。为了更好地去了解网络分层,OSI七层模型还是非常有必要学习的。

👨‍💻 大白:OSI七层模型是国际标准化组织提出一个网络分层模型。OSI七层模型的大体结构以及每一层提供的功能如下图所示:

OSI七层模型

每一层都专注做一件事情,并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路有和寻址功能,这样传输层才知道把数据传输到哪里去。

OSI的七层体系结构概念清楚,理论也很完整,但是它比较复杂而且不实用,而且有些功能在多个层中重复出现。

上面这种图可能比较抽象,再来一个比较生动的图片。下面这个图片是我在国外的一个网站上看到的,非常赞!

👨‍🏫 面试官:既然OSI七层模型这么厉害,为什么干不过TCP/IP 4层模型呢?

👨‍💻 大白:的确,OSI七层模型当时一直被一些大公司甚至一些国家政府支持。这样的背景下,为什么会失败呢?我觉得主要有下面几方面原因:

  1. OSI的专家缺乏实际经验,他们在完成OSI标准时缺乏商业驱动力
  2. OSI的协议实现起来过分复杂,而且运行效率很低
  3. OSI制定标准的周期太长,因而使得按OSI标准生产的设备无法及时进入市场(20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来,但基于TCP/IP的互联网已经抢先在全球相当大的范围成功运行了)
  4. OSI的层次划分不太合理,有些功能在多个层次中重复出现。

3TCP/IP 4层模型

👨‍🏫 面试官:聊完了OSI七层模型,我们再来聊聊TCP/IP 4层模型吧!

👨‍💻 大白:好的,这个我熟!这是目前被广泛采用的一种模型,我们可以将 TCP / IP 模型看作是 OSI 7层模型的精简版本,由以下4层组成:

  1. 应用层
  2. 传输层
  3. 网络层
  4. 网络接口层

需要注意的是,我们并不能将 TCP/IP4层模型 和OSI7层模型完全精确地匹配起来,不过可以简单将两者对应起来,如下图所示:

TCP-IP-4-model

👨‍🏫 面试官:不错不错!看来是有备而来啊!

👨‍💻 大白:嘿嘿。。。

👨‍🏫 面试官:稍等一下,我去喝点水,有点口干舌燥了,我们等下来具体聊聊 TCP/IP 4层模型。

👨‍💻 大白:好的好的!

参考资料:

  1. https://medium.com/@james_aka_yale/the-4-layer-internet-model-network-engineers-need-to-know-e78432614a4f
  2. https://www.guru99.com/tcp-ip-model.html
  3. https://www.freeccnastudyguide.com/study-guides/ccna/ch1/1-4-tcpip-model/
  4. OSI 七层模型与 TCP/IP 四层模型— https://wsgzao.github.io/post/osi/
End
坑位不多啦!欢迎大家加我的个人微信与我交流~

推荐阅读

是大白,毕业于某 985 院校,2020 年校招拿到了绝大部分大厂的 offer。这个账号主要编程必备基础知识、数据结构和算法、操作系统、计算机网络、计算机组成原理。欢迎大家关注!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存