程序员必知的OSI

322 阅读3分钟

        学习计算机网络一定绕不开OSI七层模型,本节内容讲解OSI模型出现的原因及每层的作用,让web程序员对OSI模型有一个基本的认识以便学习计算机网络的其他内容

产生的原因

我们想一个场景,现在世界上还没有网络,但是咱们俩个各有一台计算机,你在北京我在上海,我们需要怎么做才能通过计算机实现信息的交互

image.png

两台计算机实现信息的交互并不是件容易的事,我们需要考虑很多问题

例如:

  • ”hello“如何转码。
  • 数据包要选择哪条线路
  • 是用光信号传还是电信号传
  • 网线的材质用什么

image.png

这些问题是需要多学科综合的问题,需要各专业领域的精英通力合作才能解决。

七层

我们对这些问题进行归类抽象就得到了OSI七层模型,每层之间相互独立,只需做好本层该做的工作,然后调用下层而无需关心下层的实现

七层模型分为

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

image.png

应用层(Application Layer)

只需关心业务逻辑,其余的都不需要关心。(微信,qq,浏览器,tomcat等都是应用层)

image.png

表示层

协商用于传输的数据格式,并转换数据格式。

数据发送端的应用层将数据给表现层,表现层按约定处理数据(如:压缩或加密数据)。数据接收端的表现层接受到数据后再按照约定处理好数据(如,解压缩或解密)后给应用层

image.png

会话层(Session Layer)

负责管理两个连网实体间的连接

连网实体:服务器到服务器,客户端到服务器等

连接:虚拟概念

image.png

会话层类似于我们打电话,A拨通B的电话,B接起来后,就产生了会话,之后就通过这个“会话”交流信息。

传输层(Transport Layer)

将数据从一个实体传输到另一个实体,但不负责数据传输方式。其中一个重要的功能是拆包封包。

功能:

  • 数据拆分与重组
  • 纠错
  • 管理连接
  • 流量控制
  • 端口寻址

image.png

网络层(Network Layer)

负责把一个封包从一个ip地址传输到另一个ip地址。

网络层一个核心功能是路由,一台济南的计算机向南京的计算机发消息,数据包该选择哪条线路。这就是网络层的路由要处理的

image.png

数据链路层(Data Link Layer)

确保两个临近设备间的数据传输并隐藏底层实现。数据链路层支撑着网络层的功能

image.png

物理层(Physical Layer)

物理层是支持数据链路层的,数据链路层只需要关系,我要把数据从哪个设备传输到哪个设备,而不关系这两个设备直接是用,光纤,还是wifi。这就是物理层的指责。

OSI问题

分层臃肿,并不是每层都需要。会话层,表现层并不是都需要。所以应用层,会话层,表示层都可合并为应用层

image.png