网络七层协议的通俗理解

最近在补一些网络协议的知识,自认没下面这位博主讲得好,所以借用借用下这位博主总结的内容,确实通俗易懂

转自:https://www.cnblogs.com/carlos-mm/p/6297197.html

OSI七层协议如下:

 
博主是用历史推演的角度去理解的。总体来说,OSI模型是从底层往上层发展出来的。
假设有两台机器之间进行通信的需求
 
  • 第1个需求:

         解决两个硬件之间怎么通信。具体就是一台发比特流,然后另一台能收到

        于是发明了物理层

   主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等

   它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)

   这一层的数据叫做比特

  • 需求2:

       问题:现在通过电线能发数据流了,但是我还希望通过无线电波等其它介质来传输,这时候数据是否正确是个问题

       需求:保证传输过去的比特流是正确的,要有纠错功能

  于是,发明了数据链路层

  定义了如何让格式化数据进行传输,以及如何控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输

  • 需求3:

       问题:现在能发正确的发比特流数据到另一台计算机了,但是当发大量数据时候,可能需要好长时间,网络会中断好多次

       需求:保证传输大量文件时的准确性

       因此,我要对发出去的数据进行封装。就像发快递一样,一个个地发。于是先发明了传输层

       例如TCP是用于发大量数据的,我发了1万个包出去,另一台主机就要告诉我是否接受到了100个包,如果缺了3个包,就告诉我是第10,23,88个

包丢了,那我再发一次。这样,就能保证对方把这个数据完整接收了。

  • 需求4:

    问题:传输层只是解决了打包的问题。但是如果我有多台计算机,怎么找到我要发的那台?或者,A要给F发信息,中间要经过B,C,D,E,但是中间还有好

多节点如K.J.Z.Y。我怎么选择最佳路径?这就是路由要做的事。

   于是,发明了网络层。即路由器,交换机那些具有寻址功能的设备所实现的功能。这一层定义的是IP地址,通过IP地址寻址。所以产生了IP协议

  • 需求5:

  梳理下,现在已经保证给正确的计算机,发送正确的封装过后的信息了。但是用户级别的体验好不好?难道我每次都要调用TCP去打包,然后调用IP协议

去找路由,自己去发?当然不行,所以我们要建立一个自动收发包,自动寻址的功能。 

  于是,发明了会话层。会话层的作用就是建立和管理应用程序之间的通信。

  • 需求6:

  现在我能保证应用程序自动收发包,自动寻址了。但是我要用Linux给window发包,两个系统语法不一致,

       就像安装包一样,exe是不能在linux下用的,shell在window下也是不能直接运行的。

      于是需要表示层(presentation),帮我们解决不同系统之间的通信语法问题。

  • 需求7:
  现在所有必要条件都准备好了,可以尽情写应用层

 

 

posted @ 2018-09-25 20:39  鼠标的博客  阅读(2427)  评论(0编辑  收藏  举报