谈一谈计算机网络---网络分层

教科书,老师,网络上的文章往往对网络分层有个不恰当的比喻,“为什么网络要分层呀?因为不同的层次之间有不同的沟通方式,这个叫作协议。例如,一家公司也是分“层次”的,分总经理、经理、组长、员工。总经理之间有他们的沟通方式,经理和经理之间也有沟通方式,同理组长和员工。”
为什么说不恰当呢?
第一个问题: 请问经理在握手的时候,员工在干什么?很多人听过 TCP 建立连接的三次握手协议,也会把它当知识点背诵。同理问你,TCP 在进行三次握手的时候,IP 层和 MAC 层对应都有什么操作呢?
**第二个问题:**在学习第三层协议的时候,IP 协议里面包含目标地址和源地址。第三层里往往还会学习路由协议。路由就像中转站,我们从原始地址 A 到目标地址 D,中间经过两个中转站 A->B->C->D,是通过路由转发的。A 知道自己的下一个中转站是 B,那从 A 发出来的包,应该把 B 的 IP 地址放在哪里呢?B 知道自己的下一个中转站是 C,从 B 发出来的包,应该把 C 的 IP 地址放在哪里呢?如果放在 IP 协议中的目标地址,那包到了中转站,怎么知道最终的目的地址是 D 呢?
**第三个问题:**关于二层设备、三层设备都听过。二层设备处理的通常是 MAC 层的东西。那我发送一个 HTTP 的包,是在第七层工作的,那是不是不需要经过二层设备?或者即便经过了,二层设备也不处理呢?或者换一种问法,二层设备处理的包里,有没有 HTTP 层的内容呢?
网络分层
到底为什么需要分层?在计算机的世界里,复杂的程序都要分层。比如写电商系统的时候,复杂的电商还会分数据库层、缓存层、Compose 层、Controller 层和接入层,每一层专注做本层的事情。要符合设计模式里面的单一职责原则。那么网络也有网络处理程序,这个程序需要跑在个人计算机上,服务器上,路由器上,处理的内容就可以理解为内存中一段有格式的数据,格式很复杂。要完成这么复杂的程序,自然是需要分层处理的。
网络处理程序工作流程
在这里插入图片描述
接受流程是这样的:
1 网络包到达网口以后,先看看是否需要处理。如果配置了混杂模式则全部拿进来
2 取下二层的头,查看MAC地址是不是自己的
3 取下三层的头,看看IP地址是不是自己的,如果是自己的则判断是调用TCP处理,还是UDP处理,如果不是则转发
4 假设是TCP,则判断四层的头,看这是一个发起,还是一个应答,又或者是一个正常的数据包,然后分别由不同的逻辑进行处理。如果是发起或者应答,接下来可能要发送一个回复包;如果是一个正常的数据包,就需要交给上层了。
5 通过四层的头,找到端口号,交给应用程序,至于应用程序怎么处理,那是应用程序的事情了。
发送流程:
1 小明点击了浏览器上的某个按钮,然后浏览器通过端口号发给了传输层
2 传输层看到了是TCP请求,添加一个TCP头,加上浏览器给你的目的端口号
3 TCP头和HTTP头已经有了,添加一个IP头,包括目的IP地址和源IP地址
4 添加MAC头,包括源MAC地址和目的MAC地址
开头指出的比喻不对,就是因为现实生活中,往往是员工说一句,组长补充两句,然后经理补充两句,最后总经理再补充两句。但是在网络世界,应该是总经理说话,经理补充两句,组长补充两句,员工再补充两句。
总结来说:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。
没有MAC地址只有IP地址的包是发布出去的。
所以如果一个 HTTP 协议的包跑在网络上,它一定是完整的。无论这个包经过哪些设备,它都是完整的。
那么二层设备,三层设备的意思就很明显了
所谓的二层设备、三层设备,都是这些设备上跑的程序不同而已。
一个 HTTP 协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面 HTTP、TCP、 IP、 MAC 都有。
什么叫二层设备呀,就是只把 MAC 头摘下来,看看到底是丢弃、转发,还是自己留着。
那什么叫三层设备呢?就是把 MAC 头摘下来之后,再把 IP 头摘下来,看看到底是丢弃、转发,还是自己留着。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值