osi七层参考模型都有什么 osi七层模型通俗解释

一个很容易理解 OSI 七层模型的例子:
OSI 七层模式简单通俗理解
这个模型推出的最开始 , 是因为美国人有两台机器之间进行通信的需求 。
需求 1:
科学家要解决的第一个问题是 , 两个硬件之间怎么通信 。具体就是一台发些比特流 , 然后另一台能收到 。
于是 , 科学家发明了物理层:
主要定义物理设备标准 , 如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等 。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输 , 到达目的地后在转化为 1、0 , 也就是我们常说的数模转换与模数转换) 。这一层的数据叫做比特 。
需求 2:
现在通过电线我能发数据流了 , 但是 , 我还希望通过无线电波 , 通过其它介质来传输 。然后我还要保证传输过去的比特流是正确的 , 要有纠错功能 。
【osi七层参考模型都有什么 osi七层模型通俗解释】 于是 , 发明了数据链路层:
通过各种控制协议 , 将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路 。
需求 3:
现在我可以在两台计算机之间发送数据了 , 那么如果我要在多台计算机之间发送数据呢?怎么找到我要发的那台?或者 , A 要给 F 发信息 , 中间要经过 B , C , D,E , 但是中间还有好多节点如 K.J.Z.Y 。我怎么选择最佳路径?这就是路由要做的事 。
于是 , 发明了网络层 。通过路由算法 , 为报文或分组通过通信子网选择最适当的路径 。该层控制数据链路层与物理层之间的信息转发 , 建立、维持与终止网络的连接 。具体的说 , 数据链路层的数据在这一层被转换为数据包 , 然后通过路径选择、分段组合、顺序、进/出路由等控制 , 将信息从一个网络设备传送到另一个网络设备 。一般的 , 数据链路层是解决统一网络内节点之间的通信 , 而网络层主要解决不同子网之间的通信 。例如路由选择问题 。
需求 4: 现在我能发正确的发比特流数据到另一台计算机了 , 但是当我发大量数据时候 , 可能需要好长时间 , 例如一个视频格式的 , 网络会中断好多次(事实上 , 即使有了物理层和数据链路层 , 网络还是经常中断 , 只是中断的时间是毫秒级别的) 。那么 , 我还须要保证传输大量文件时的准确性 。于是 , 我要对发出去的数据进行封装 。就像发快递一样 , 一个个地发 。
于是 , 先发明了传输层 。
向用户提供可靠的、端到端的差错和流量控制 , 保证报文的正确传输 。提供建立、连接和拆除传输连接的功能 。传输层在网络层基础上 , 提供“面向连接”和“面向无连接”两种服务 。例如 TCP , 是用于发大量数据的 , 我发了 1 万个包出去 , 另一台电脑就要告诉我是否接受到了 1 万个包 , 如果缺了 3 个包 , 就告诉我是第 1001 , 234 , 8888 个包丢了 , 那我再发一次 。这样 , 就能保证对方把这个视频完整接收了 。
例如 UDP , 是用于发送少量数据的 。我发 20 个包出去 , 一般不会丢包 , 所以 , 我不管你收到多少个 。在多人互动游戏 , 也经常用 UDP 协议 , 因为一般都是简单的信息 , 而且有广播的需求 。如果用 TCP , 效率就很低 , 因为它会不停地告诉主机我收到了 20 个包 , 或者我收到了 18 个包 , 再发我两个!如果同时有 1 万台计算机都这样做 , 那么用 TCP 反而会降低效率 , 还不如用 UDP , 主机发出去就算了 , 丢几个包你就卡一下 , 算了 , 下次再发包你再更新 。

推荐阅读