本文由 简悦 SimpRead 转码,
原文地址 https://www.zhihu.com/question/24002080/answer/150830722车小胖
OSI 参考模型
OSI,是英文 Open System Interconnect 的缩写,中文翻译开放系统互联,一个抽象七层模型,但其核心思想一点也不抽象,非常具体,其核心思想:
1) 通信两端的主机能够理解对方的语言
这是要求主机使用相同协议格式来发送数据
2) 希望通信系统模块化,每个模块提供标准接口
每个模块给和直接耦合的模块提供标准化的流程接口,每个模块内部无论怎样实现没有硬性规定,但外在的接口一定是标准件,这样耦合的模块可以无缝对接起来。
这样做的好处有:
(1) 由于使用标准接口,每个通信模块可以独立开发,增加自由度,提高生产效率
(2) 增加代码的重复利用率,由于通信模块的标准化的外在接口,应用程序可以直接使用现成的通信模块,而无需重新编码,这大大减轻了开发者的负担,间接地提供了生产效率。
注: 一切比喻都是为了方便理解,比喻不可能完全恰当的表达所有内容。本篇文章只是为了让大家大概了解 OSI 七层模型中每一层的基本功能,实际的应用中涉及到的不止这点点。想要学精还是要看书!!!(三个感叹号) 当然,如果你喜欢我的文章,欢迎关注我,我会不定期的发布一些通信类的科普文章~
以下为正文
我们假设每个个体就是一台电脑,我们生活中的物品就是电脑中保存的文件。我们有一天想要与世界上其他地方的人交换货物,我们会用什么方法呢?
我们首先会看我们想要交换什么样的物品,如果是电子产品,可能会上苏宁易购,如果是书本,可能会上当当网,如果是服装裤子,可能会上淘宝或京东,如果是生活中的小玩意,可能会上咸鱼。这些电商平台为我们交换货物提供了专用的通道和规则,我们称这些平台为应用层。(应用层作用: 为网络用户之间的通信提供专用的程序和协议)
提供不同服务的电商平台
假设我们最终选择在淘宝上卖给别人一个衣柜。而衣柜太大了不易邮递,我们要找木匠将衣柜拆分成一个个零部件,并封装、打包,附上组装说明书。对方在收到你的邮件后,也会找木匠按照说明书拆封、组装,让它重新成为一个完整的衣柜。木匠的拆分 / 组装是为了衣柜更方便的传输,我们称木匠工作在表示层。(表示层作用: 提供数据压缩、解压、加密等服务,为应用层提供语法选择,语法转换)
拆分衣柜的木匠
木匠封装好了物品,会让客服在阿里旺旺中问一句:“您好,您确定够买了吗?如果您确定的话我就点确认下单,正式发货了。” 如果对面此时点了退款,那就不必发货了,如果对面回复 “是” 或没有回复,那么客服默认发货。发货的具体时间和数量是由客服决定的,客服可以选择当天全部发出去,也可以选择用两天时间分批次发出去。当然,对面也可以选择接收物品的时间(我们都有快递到了不能去取的经历)。而只有收件人在网上点击 “确认接收” 后,整个购买流程才会结束。客服的工作是确认订单的开始 / 结束时间以及货物的发送 / 接收数量的,我们称客服工作在会话层。(会话层作用: 建立、管理和终止表示层实体之间的会话连接)
确认收货的页面
以上,用户购买流程结束了。剩下的是如何将货物发送过去的问题。同理,在电脑中,前三步之后用户的操作便结束了,剩下的是信息如何在网络中传递的问题。因此,我们把前三层叫做 OSI 模型中的上层结构。
那么货物要如何传递呢?那么远,客服肯定不能自己去送,客服会联系快递公司。如果是不能丢失的重要邮件,客服会选择 EMS 邮寄;如果是要求速度的隔日达,客服可能会选择顺丰快递。快递公司的作用是保证你的货物能被对方顺利接收,快递公司就是我们常说的传输层,起到一个承上启下的作用。(传输层作用: 为会话层提供可靠的、无误的数据传输) 传输层是 OSI 模型中的中间层。
提供不同服务的快递公司
快递公司收到了快件通知,会查看订单上的地址信息:“发件地址: 北京市,收件地址: 上海市”。此时,分拨中心会根据地址选择运输路径,计算途经哪几个分拨中心能最快 / 路径最短的将货物送达。分拨中心根据地址信息提供路径选择,我们说分拨中心工作在网络层。(网络层作用: 基于 IP 地址为数据的传输进行网络间的路由选择)
北京到上海的路径选择
快递公司收到快递订单后,会派快递小哥到发件人所在地址,根据发件人的姓名和电话联系到发件人,取走货物,送往当地分拨中心。同理,当货物到达收件地的分拨中心后,当地的快递小哥会根据收件人的姓名和电话联系到收件人,将货物安全送达。快递小哥是通过姓名和电话(相当于 Mac 地址)联系到个人的,我们说快递小哥工作在数据链路层。(数据链路层作用: 物理地址寻址,为网络层提供数据传送服务)
快递小哥
货物运输途中,都由司机大哥开不同的卡车、汽车、三轮车运送。我们说司机大哥和交通工具们工作在物理层。(物理层作用: 为数据传输提供物理媒体,进行数据的实际传输)
司机大哥和他的交通工具
从快递公司接收货物开始,后面的所有流程都是货物在城市内 / 城市间的运输过程。在网络内也一样,从传输层建立连接开始,后面的所有流程都是数据包在网络内 / 网间的传递,与操作用户本身再无关系。因此,我们把后三层叫做 OSI 模型中的下层结构。
然而实际生活中,我们往往不会分那么细,老板,木匠,客服的活往往一个人就做了。运输过程也是一样,快递小哥经常客串司机的角色。
嘿嘿,想不到吧
都是我一个人哦
其实网络中也是一样。从电脑的角度来看,如果一台电脑要给另一台电脑发送文件,它首先会查看发送内容,通过发送内容选择发送平台。比如发送邮件用 Email,发送图片用 QQ。不同的应用程序有着不同的通信协议(Email——SMTP,Web——Http,文件传输——Ftp 等),这些通信协议都工作在应用层。
使用不同应用层协议的 APP
假设我们决定用 QQ 发送一张图片,我们电脑会在传送前先在后台对这张图片进行编码、加密和压缩,这一过程工作在表示层。
用 QQ 传送文件时,我们会被问到 “是否发送”,对面也会看到 “是否接收”。如果接收失败,会告诉你发送失败,问你是否重传;接收成功后,也会有对话框告诉你发送成功。这些,都工作在会话层。
确认发送对话框
这边确定发送,那边也确定接收后,会通过 TCP/UDP 协议建立通道,保证传输的可靠性。TCP/UDP 协议工作在传输层。
文件在网络传输过程中,通过 IP 地址,由路由器选择传输路径,路由器工作在网络层。
路由器
文件在网络传输过程中,在网内通过物理地址(Mac 地址)由交换机进行数据的传送。交换机工作在数据链路层。
交换机
网线 / 光纤负责发送比特流,提供信息传送的物理介质。
同样,网络中,我们也可以把前三层总结到一起,称为应用层。把后两层总结到一起,称为数据链路接口层或网络接口层。这样,就把繁琐的 OSI 七层结构转化为了精简的 TCP/IP 四层结构。
总结: 应用层——电商平台(应用软件中对应的 SMTP,Http,Ftp 等应用层协议)
表示层——木匠(负责数据压缩、编码)
会话层——秘书(负责文件发送 / 接收)
传输层——快递公司(EMS——TCP;顺丰——UDP)
网络层——分拨中兴(路由器)
数据链路层——快递小哥(交换机)
物理层——司机大哥和交通工具(网线 / 光纤)
不定期更新通信基础知识,力求用最生动的语言解释原本枯燥抽象的概念
欢迎关注~~~
用户买东西 -> tcp/ip 四层模型
- 商城把商品封装打包(应用层)对应(Http数据包)
- 打包后先给客户打三次电话 确认用户在家可以收货 (传输层) 对应(Tcp三次握手建立链接)
- 在包裹的快递单写上源地址(ip+端口) 目的地址(ip+端口)(网络层) 对应( IP 协议)
- 快递小哥来取包裹 物流中转(路由器根据收货地址中转) 最后送到客户家 (数据链路层)
- 用户确认快递单正确 根据 IP 协议 反解析 拆包裹的第一层包装 (网络层)
- 用户给商家打四次电话确认收到货了 根据 TCP协议 反解析 拆包裹的第二层包装(传输层)
- 用户解开最后一层包装 拿到用户自己想要的数据(应用层)对应(Http数据包)
以往文章: 如何跟小白解释集线器,交换机和路由器的区别?(一切从帝国时代开始)——薛定谔不在家的回答
https://www.zhihu.com/answer/402261894
https://zhuanlan.zhihu.com/p/34131799
https://www.zhihu.com/question/24002080/answer/150830722