最近看狂飙有点上头了😂,还专门把几百人的群昵称改成了“摸鱼强盛集团”,群友们也很积极,昵称都改成了狂飙中的人名,聊着聊着嘴里蹦出几句狂飙中的台词,一时间感觉还蛮有意思的,群里充满了欢心笑语,给疲惫了一天的心带来些许快乐。😂
看到标题,大家是否心生疑虑?“老默我想吃鱼了”跟五层网络模型有什么关系呢?完全八竿子打不着的事,大家先别急💐,继续往下看...
五层网络模型
是计算机网络的一个基本知识点,无论前端还是后端,面试的时候都有可能被问到,五层网络模型是比较抽象的,因为大家看不见,摸不着,但它却是每时每刻都在发生的,像微信聊天、浏览器打开一个网页等等,这些都是经过了五层网络模型,今天我们就来聊聊这个话题!
分层的意义
我们都说五层网络模型,为什么是五层呢?三层行不行?为什么要分层呢?
当我们遇到比较复杂的问题时,可以使用分层的思想将其简单化,就像我们做一个复杂功能的网站,我们会把每个功能封装成一个一个模块,每一个模块完成一个功能,最后将这些模块组装起来就ok了。那既然如此,我们的网络就真的这么复杂吗?看看这本书的厚度,你就知道了,确实很复杂😭
当高启强给老默发微信说:老默我想吃鱼了,那这消息是如何从强哥手机跑到老默手机里的?这里面是有很多问题需要解决的,绝对不是一个ajax就能解决的。
聊天:
- 强哥:老默我想吃鱼了
- 老默:收到,强哥
当老默收到强哥的消息之后,立马在鱼摊子挑选最大的鱼,开始清理鱼...这时候就要考虑几个问题:
需要考虑的问题:
用什么来装鱼?
方案:黑色袋子、塑料盒子、麻袋、揣兜里
如何保证鱼的新鲜?
方案:加点冰块、推个冰箱
怎么才能不让警察叔叔发现?
方案:化妆伪装成大爷,敌后渗透
怎么找到强哥地址?
方案:百度地图、导盲犬、夜观天象、掐指一算
用什么交通工具呢?
方案:飞船、火箭、宝马X5、还是那辆全京海7000多辆的白色货车
画个简图:
👉 需要注意的是这并不是真正的五层模型,这里只是举个例子
从图上我们可以看出,每一层都会解决特定的问题,不需要考虑上一层是怎么处理的,只需要把结果往下层传递即可,每一层有多种解决方案,不管选择哪一种方案都不会对上层造成影响,都是独立的。
五层网络模型
五层网络模型分为:应用层、传输层、网络层、数据链路层、物理层,接下来我们挨个叙述😎
应用层
所谓的应用层
就是说我们在互联网应用的过程中产生特定的应用需求,比如上网访问网页的过程中如何跟服务器进行交互。如果用老默送鱼的例子解释,老默和强哥相当于两个软件,老默送鱼的过程就好像是两个软件之间的通信。这些软件应用就被成为应用层。
应用层有很多的协议,比如: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地址,告诉我们这个人来自哪个省,以前是没有的
那问题来了,我们光凭这个IP地址能否找到这个人?他用的是哪一台电脑?不用想,答案是否定的,所以这时候数据链路层来了,它就是帮助我们找到这个人的手段
数据链路层的代表就是MAC协议
(medium access control,介质访问控制),也就是我们常说的MAC地址,苹果电脑可以通过ifconfig查询
,windows通过ipconfig查询
,MAC地址是跟网卡绑定在一起的,全球唯一
👉IP地址
和MAC地址
区别:
MAC地址相当于我们的身份证号,无论我们在哪个城市,它都是唯一不变的,而IP地址换个城市就会变,当前在北京就是北京,广东就是在广东,IP地址只是在同一个网络环境下是唯一的
物理层
到了这一步之后,老默的鱼准备好了,也能保证了可靠的运送,强哥地址也有了,万事俱备就开始配送了,配送方式也有很多,飞船、火箭、白色货车都可以,但是在计算机里只有二进制数据,二进制数据可以用光纤、双绞线、同轴电缆、电力线等等,像这些传输的介质我们一般称为导向的传输介质
,因为信号传输都是沿着物理电缆的路径而有导向的
封装和解封装
画了一张简图:
当老默送鱼的时候,在应用层阶段会使用http协议,会在鱼的头部加上请求头+请求体,选择一种包装鱼的方式,然后到了传输层,在这一层需要保证送鱼的途中安全可靠,不能把鱼丢半路,这可不行,此时使用TCP协议保证消息的可靠,然后到了网络层,这一层就是通过IP寻找地址的过程,随后到了数据链路层,这里做的就是根据MAC地址寻找详细地址过程,最后到了物理层,这一层会通过一些介质手段将二进制信号进行发送,相当于老默通过某种交通工具送鱼阶段。解封装阶段无非就是抽丝剥茧,将碎片化数据包进行拼接,最后将完整正确的信息送到对方的手中,此时一条鲜活的鱼到了强哥面前。
四层、五层、七层是怎么回事
有时候我们会在网上看到有四层网络模型、五层网络模型还有七层网络模型,那到底有几层?最早开始的时候只有四层网络模型,分别是:应用层、传输层、网络层以及物理链路层,这四层模型几乎全世界各个机构都是认可这套模型的,后来有个专门搞标准的组织叫OSI,作为一个标准组织自然有自己的傲气,又搞出来一个七层模型,分别是应用层、表示层、会话层、传输层、网络层、物理链路层以及物理层。这七层模型实际上只存在一些教科书资料中,实际上并没有啥应用,大家认可这个有这个七层模型,毕竟是标准组织,得给点面子,有点像那个叫好但没行动,后来受到七层网络模型的启发又形成了五层模型:应用层、传输层、网络层、物理链路层、物理层,五层模型只是把四层模型的数据链路层细分出来一个物理层,其实分不分都是要做这些事情的,没什么区别的
最后
如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下啊~🌸,点击链接即可关注 法医💪
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。