美文网首页
网络协议笔记day02:网络分层的真实含义是什么?

网络协议笔记day02:网络分层的真实含义是什么?

作者: 楠楠喜欢泡枸杞 | 来源:发表于2019-05-29 11:57 被阅读0次

    1网络为什么要分层?

        因为,是个复杂的程序都要分层。

        我们可以这样来理解,想象网络包是一块内存,自己是一个处理网络包的程序,而且这段程序可以跑在电脑上,可以跑在交换机上,也可以跑在路由器上。我们想象自己有很多的网口,从某个网口拿进一个包,用自己的程序处理一下,再从另一个网口发出去。

        网络包的格式很复杂,这个程序也很复杂。

        复杂的程序都要分层,这是程序设计的要求。

        比如,复杂的电商还会分数据库层、缓存层、Compose层、Controller层和接入层,每一层专注做本层的事情。

    2程序是如何工作的?

        当一个网络包从一个网口经过的时候,我们(我们此刻的身份是程序,嘻嘻~)看到了,首先要看看是不是要请进来然后对它进行处理。有的网口配置了混杂模式,凡事经过的包全都会拿进来。

        拿进来之后,就会交给一段程序进行处理,过程我就不再赘述啦,简而言之,就是每一层会有对应的程序对它进行处理,把它这一层封装的头部拿下来进行检查,看看它的MAC地址/IP地址是否对应,若对应则是自己的,否则就要转发出去;或者检查它是TCP还是UDP,然后交给相对应的程序去处理;又或者看看它的端口号对应哪个应用,然后交给这个应用去处理,etc。

        发送请求的过程则是进行层层封装,上节课有讲过,这里就不赘述啦。

    3揭秘层与层之间的关系

        之前有听过一个不恰当的比喻:为什么要分层呀?因为不同的层次之间有不同的沟通方式,这个叫做协议。例如,一家公司也是分“层次”的,分总经理、经理、组长和员工。总经理之间有他们的交流方式,经理之间也有他们的交流方式,组长和员工也是一样的。

        但是,所有不能体现出层层封装含义的比喻,都是不恰当的。

        总经理握手的时候其他层次的员工无需在场,但在网络世界不是这样的。正确的应该是,总经理之间沟通的时候,把经理装在自己的包包里,经理把组长放在自己的包包里,组长把员工放在自己的包包里,像套娃娃一样。

        在TCP三次握手的时候,它每发送一个消息,都会带着IP层和MAC层。因为,TCP每发送一个消息,IP层和MAC层的所有机制都要运行一遍。我们只看到了TCP的三次握手,其实,IP和MAC层为此也忙活好久了。

        我们要记住一点:只要是在网络上跑的包,都是完整的,可以有下层无上层,但是绝对不可能有上层无下层。

        (忽然明白我把上下层理解反了,这里的下层指的是IP和MAC在下,而TCP在上,应该是这样的~)

        所以,对TCP协议来说,三次握手也好,重试也好,只要想发出去包,就要有IP层和MAC层,不然是发不出去的。

        我们都听过二层设备和三层设备,二层设备通常处理的是MAC层的东西,三层设备通常处理的是IP层的东西。所谓的二层设备、三层设备,都是这些设备上跑的程序不同而已。一个HTTP协议经过二层设备、三层设备,它们收进去的都是整个网络包,这里面HTTP、TCP、IP、MAC什么都有~而二层设备只是把MAC层摘下来看看到底是丢弃、转发还是自己留着,三层设备是先把MAC头摘下来,然后再把IP头摘下来看看是丢弃、转发还是自己留着。

    4小结

        理解网络协议的工作模式,有两个小窍门:

        1.始终想象自己是一个处理网络包的程序:如何拿到网络包、如何根据规则进行处理、如何发出去。

        2.始终牢记一个原则:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。(是不是有外层没内层这样更易理解呢~)

        通信协议就像没有天桥的双子楼,要从A座的24层到达B座的24层就得先下楼梯再上楼梯,其他协议也是如此。

        关于MAC地址和IP地址的理解,MAC地址是局域网寻址,IP地址是网络寻址:

        

相关文章

网友评论

      本文标题:网络协议笔记day02:网络分层的真实含义是什么?

      本文链接:https://www.haomeiwen.com/subject/skmetctx.html