分层的网络模型

前面的一篇文章简要说了一下linux网卡的ip地址结构,可是写完之后觉得说的不够彻底,我一般写文章喜欢从大的方面着手而不喜欢钻到细节中,因为细节往往容易把握,而大体的设计往往对于我们这些学习的人是不可见的,比如linux内核代码够细节了吧,我们每个人都可以拥有都可以阅读,但是linux内核设计背后的思想我们却不得而知,因此我往往独好几遍代码然后做好几个实验,意在发掘作者为什么这么设计代码,发现代码结构成为这样的原因,当我看了linux的网络代码的时候,我思考了很长时间,妈的linux就好像是专门为网络设计的,它和tcp/ip简直是亲兄弟,如果说linux的很多别的特性比不过Microsoft或者Apple的话,我敢说,在网络方面,linux是最强大的,既然说到了网络,我就想把自己对网络的理解写成一篇短文。

众所周知,我们的网络遵循OSI七层模型,但是那只是理论上的,真正只遵循的是TCP/IP模型,这里我们可以看到是从IP开始的,并没有OSI下面的链路层和网络层,而且我们对比OSI和TCP/IP后会发现,它们的功能有些重合,具体哪里呢?看了RFC之后会发现,OSI的链路层和TCP/IP的传输层的功能几乎一样。这不得不引起我的思考。实际山它们一样是应该的,我觉得我们的互联网就是从网络层也就是IP层开始的,IP层以下的层次仅仅就是一个支撑环境,互联网旨在为所有的上层应用提供一个同构的平台,它的任务之一就是屏蔽掉下层的网络异构性,那么在TCP/IP模型上我们可以看到这一点,TCP/IP从IP层开始正如OSI从物理层开始一样,TCP/IP模型并不规定链路层和物理层的信息,它只是定义了一个IP,这个IP就像一个终结者一样,任何想纳入这个系统的系统都必须遵循这个IP的规定,这是一个统一的接口,也必须在这个地方强行限制一个统一的接口才会使以后的工作更简单,于是当这个模型风行以后,各个底层的网络都遵循了这个IP的规定,都使用了IP地址进行通信,因此TCP/IP模型就可以放心的在上层构建复杂的应用了,因此可以看出,TCP/IP模型就是互联网的模型,IP层相当于传统网络的物理层,它只是简单地提供了寻址,传输的功能,提供传输的机制,而任何策略交由给上层的协议来完成,这就是设计边界问题,想要设计一个高级的协议族就不能从最底层比如物理层开始定义规范,就好像皇帝总是将任务交给高级官员,然后高级官员将任务交给低级官员一样,皇帝不必管人民的死活,这种糟糕的体制已经成了传统,那么我们设计任何系统时都要遵循它。

因此我们把网络分为两个部分,一个是网络层以下,也就是ip层以下,这些层次是为了物理传输而设定的,另外一部分就是ip层以上,这些层次是为了逻辑传输而设定的,ip层也就是网络层在中间提供屏蔽下层异构网络的作用,在上层基于ip看来,网络传输就是从ip层开始的。理解到了这里,我们就不难理解为何链路层提供流量控制而传输层也提供流量控制了,链路层的流量控制是基于物理的流量控制,也就是在两个物理相邻的节点之间的流量控制,而传输层的流量控制是两个通信节点之间的逻辑上的流量控制,不涉及物理作用。

如果我们彻底地理解了互联网,那么我们可以完全不用顾及底层用什么媒介进行传输,用双绞铜线和光纤都无所谓,因为我们知道TCP/IP已经在IP层为我们提供了一个统一的接口,我们只需要操作这个统一的接口就可以了。对于互联网来说,我们对再底层的东西不关心,我们只管我们的数据能否正确到达对端而不管怎么到达对端。因此在逻辑上讲,TCP/IP模型的IP层就是最底层,它提供了OSI的物理层的概念和功能,实际上,互联网根本不关心IP层以下的东西,这就是事实。本质上互联网是一个逻辑网络,想想就知道,有几个搞网站设计的人懂得电缆方面的知识呢?从需求上讲,互联网也不允许深入到细节,它的最大边界就是负责到网络层,再往下负责的话就可能分互联网的心,使得它在网路层以上用力偏小,因此互联网的界限就是IP层,IP层以下的工作其实很丰富,不如可以用很多技术实现IP,比如以太网,比如X.25等等,不过这些互联网也就是TCP/IP都不管。至于传输层,它的作用就和链路层一样,也是提供流量控制等功能,只不过是逻辑方面的,是通信双方的而不是相邻两个物理节点的。

整个互联网分为物理的和逻辑的两个部分,物理的部分由IP层以下的负责,和逻辑层由IP层以上的负责。我喜欢linux的目的就在于linux完全重现了这种完美的设计,我认为TCP/IP并不是OSI的替代,相反的,它只是OSI的一部分,也就是网络层以及以上的部分,毕竟TCP/IP并没有定义网络层以下的层次,在linux中,这一切表现的比我用文字描述的还清晰,linux内核设计的每个数据结构都耐人寻味,这就是我在喜欢linux的原因,特别的是它的网络方面。

通过本文和前面的一篇文章的描述,我们应该明白一个不相关的概念:网卡的mac地址和ip地址是不相关的,因为mac地址代表的是物理的链路,而ip地址代表的是逻辑链路,这样的话就不难理解那个哲学上的意义了,也就是为何一个mac地址可以对应很多ip地址。

原文链接: https://blog.csdn.net/dog250/article/details/5302845

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    分层的网络模型

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/410669

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月26日 下午12:09
下一篇 2023年4月26日 下午12:09

相关推荐