“老默我想吃鱼了”与五层网络模型

261,426 阅读9分钟

最近看狂飙有点上头了😂,还专门把几百人的群昵称改成了“摸鱼强盛集团”,群友们也很积极,昵称都改成了狂飙中的人名,聊着聊着嘴里蹦出几句狂飙中的台词,一时间感觉还蛮有意思的,群里充满了欢心笑语,给疲惫了一天的心带来些许快乐。😂

看到标题,大家是否心生疑虑?“老默我想吃鱼了”跟五层网络模型有什么关系呢?完全八竿子打不着的事,大家先别急💐,继续往下看...

五层网络模型是计算机网络的一个基本知识点,无论前端还是后端,面试的时候都有可能被问到,五层网络模型是比较抽象的,因为大家看不见,摸不着,但它却是每时每刻都在发生的,像微信聊天、浏览器打开一个网页等等,这些都是经过了五层网络模型,今天我们就来聊聊这个话题!

分层的意义

我们都说五层网络模型,为什么是五层呢?三层行不行?为什么要分层呢?

当我们遇到比较复杂的问题时,可以使用分层的思想将其简单化,就像我们做一个复杂功能的网站,我们会把每个功能封装成一个一个模块,每一个模块完成一个功能,最后将这些模块组装起来就ok了。那既然如此,我们的网络就真的这么复杂吗?看看这本书的厚度,你就知道了,确实很复杂😭

image.png

当高启强给老默发微信说:老默我想吃鱼了,那这消息是如何从强哥手机跑到老默手机里的?这里面是有很多问题需要解决的,绝对不是一个ajax就能解决的。

image.png

聊天:

  • 强哥:老默我想吃鱼了

  • 老默:收到,强哥

当老默收到强哥的消息之后,立马在鱼摊子挑选最大的鱼,开始清理鱼...这时候就要考虑几个问题:

需要考虑的问题:

  • 用什么来装鱼?

    方案:黑色袋子、塑料盒子、麻袋、揣兜里

  • 如何保证鱼的新鲜?

    方案:加点冰块、推个冰箱

  • 怎么才能不让警察叔叔发现?

    方案:化妆伪装成大爷,敌后渗透

  • 怎么找到强哥地址?

    方案:百度地图、导盲犬、夜观天象、掐指一算

  • 用什么交通工具呢?

    方案:飞船、火箭、宝马X5、还是那辆全京海7000多辆的白色货车

画个简图:

👉 需要注意的是这并不是真正的五层模型,这里只是举个例子

22.png

从图上我们可以看出,每一层都会解决特定的问题,不需要考虑上一层是怎么处理的,只需要把结果往下层传递即可,每一层有多种解决方案,不管选择哪一种方案都不会对上层造成影响,都是独立的。

image.png

五层网络模型

五层网络模型分为:应用层、传输层、网络层、数据链路层、物理层,接下来我们挨个叙述😎

应用层

所谓的应用层就是说我们在互联网应用的过程中产生特定的应用需求,比如上网访问网页的过程中如何跟服务器进行交互。如果用老默送鱼的例子解释,老默和强哥相当于两个软件,老默送鱼的过程就好像是两个软件之间的通信。这些软件应用就被成为应用层。

应用层有很多的协议,比如:HTTP协议FTP协议(文件传输)DNS协议(域名解析)SMTP协议(邮件传输),这些协议类似于包装层的方案选择什么来装鱼,黑色袋子、麻袋、还是揣兜里,用于处理不同的场景,当我们访问网页的时候,就会用到HTTP协议,规定了请求头-请求体,响应的时候有响应头+响应体。HTTP协议还有一个安全版本是HTTPS协议,这两个协议本质上都是用相同的方式获取对象,只不过HTTPS实际上是在一个称为TLS(Transport Layer Security,传输层安全)的安全协议上使用HTTP。

传输层

传输层主要是保证消息的可靠传递,当强哥发消息告诉老默:我想吃鱼了,老默立马心领神会,知道该干嘛了,那如果强哥发的是:老默我想吃鱼了,结果老默收到的是:老默我想吃__了,少了个“鱼”字,老默是不是很懵逼,百思不得其解,这种情况在网络中我们称为“丢包”。

传输层也有相关的协议,比如:TCP协议,UDP协议TCP协议(Transmission Control Protocol,传输控制协议)就是处理可靠传输的,保证数据的正确性,只要使用这个协议,那双方的数据永远不可能错乱,多个字或者少个字的情况。而UDP协议(User Datagram Protocol,用户数据报协议)并不是解决可靠传递的,这个协议只管发送数据,至于数据能不能送到,双手插兜无所谓。

网络层

通过应用层和传输层,我们拿到了“信息”,也保证了信息的可靠传递,接下来的问题就是这些信息传输给谁呢?这就是网络层要做的事情,如何在茫茫互联网找到对的人?老默要送鱼,起码得知道强哥住在哪里吧,不然怎么送呢!而且送鱼路线是有多条的,走哪一条最近也是网络层需要解决的事情

网络层的协议代表就是IP协议(Internet Protocol),网络层会接收到来自传输层的“数据”,然后将这些数据拆分很多片段,主要是为了方便IP数据包的发送,理论上每个数据包最多可以存储64KB,但实际上数据包不超过1500个字节,IP路由器会转发每一个数据包,沿着一条路径从一台路由器传递到下一台路由器,直到达到目的地,然后会在网络层重组,这里的网络层指的是快到强哥家的时候,因为数据是有一个封装和解封装的过程。

数据链路层

数据链路层需要做的就是如何在子网中找到对方?可能有的小伙伴就要问了,网络层不也是在茫茫人海找人嘛,这两者有什么不一样呢?网络层协议的代表就是IP协议,我举个例子,我们在公众号留言的时候,会出现IP地址,告诉我们这个人来自哪个省,以前是没有的

image.png

那问题来了,我们光凭这个IP地址能否找到这个人?他用的是哪一台电脑?不用想,答案是否定的,所以这时候数据链路层来了,它就是帮助我们找到这个人的手段

数据链路层的代表就是MAC协议(medium access control,介质访问控制),也就是我们常说的MAC地址,苹果电脑可以通过ifconfig查询,windows通过ipconfig查询,MAC地址是跟网卡绑定在一起的,全球唯一

👉IP地址MAC地址区别:

MAC地址相当于我们的身份证号,无论我们在哪个城市,它都是唯一不变的,而IP地址换个城市就会变,当前在北京就是北京,广东就是在广东,IP地址只是在同一个网络环境下是唯一的

物理层

到了这一步之后,老默的鱼准备好了,也能保证了可靠的运送,强哥地址也有了,万事俱备就开始配送了,配送方式也有很多,飞船、火箭、白色货车都可以,但是在计算机里只有二进制数据,二进制数据可以用光纤、双绞线、同轴电缆、电力线等等,像这些传输的介质我们一般称为导向的传输介质,因为信号传输都是沿着物理电缆的路径而有导向的

封装和解封装

画了一张简图:

封装解封装.png

当老默送鱼的时候,在应用层阶段会使用http协议,会在鱼的头部加上请求头+请求体,选择一种包装鱼的方式,然后到了传输层,在这一层需要保证送鱼的途中安全可靠,不能把鱼丢半路,这可不行,此时使用TCP协议保证消息的可靠,然后到了网络层,这一层就是通过IP寻找地址的过程,随后到了数据链路层,这里做的就是根据MAC地址寻找详细地址过程,最后到了物理层,这一层会通过一些介质手段将二进制信号进行发送,相当于老默通过某种交通工具送鱼阶段。解封装阶段无非就是抽丝剥茧,将碎片化数据包进行拼接,最后将完整正确的信息送到对方的手中,此时一条鲜活的鱼到了强哥面前。

四层、五层、七层是怎么回事

457.png

有时候我们会在网上看到有四层网络模型、五层网络模型还有七层网络模型,那到底有几层?最早开始的时候只有四层网络模型,分别是:应用层、传输层、网络层以及物理链路层,这四层模型几乎全世界各个机构都是认可这套模型的,后来有个专门搞标准的组织叫OSI,作为一个标准组织自然有自己的傲气,又搞出来一个七层模型,分别是应用层、表示层、会话层、传输层、网络层、物理链路层以及物理层。这七层模型实际上只存在一些教科书资料中,实际上并没有啥应用,大家认可这个有这个七层模型,毕竟是标准组织,得给点面子,有点像那个叫好但没行动,后来受到七层网络模型的启发又形成了五层模型:应用层、传输层、网络层、物理链路层、物理层,五层模型只是把四层模型的数据链路层细分出来一个物理层,其实分不分都是要做这些事情的,没什么区别的

最后

如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下啊~🌸,点击链接即可关注 法医💪

本文正在参加「金石计划」