[What]图解TCPIP_理解OSI模型

系统性的重新认识tcpip.

OSI模型

ISO为网络通信协议指定了OSI参考模型,将其必要的功能分成了7层,每个分层都接收其下一层提供的服务,并且负责为上一层提供服务。

  • 层与层之间通过标准接口进行通信,只要接口不变,层内部实现的变化并不影响其他层。
    • 这就如同打电话一样,人与人之间通过电话进行直接的语言通信而不用关心整个通信系统的实现,当系统的某一层设备更新对我们来说也是透明的。
  • 而在同一层之间(指的是发送方和接收方的同一层)按照约定的协议进行交互。
osi.jpg
  • 应用层: 为应用程序提供最上层的接口服务,比如文件传输、电子邮件、远程登录等。
    • 发送方应用程序将要发送的数据及目的地等信息发送给应用层,应用层会在发送的数据中加上头部以描述该数据.
    • 接收方应用层分析接收到的数据头,并将数据返回给应用程序。
  • 表示层: 将设备固有的数据格式转换为网络通用标准的传输格式(比如统一大小端)
    • 发送方将数据转换为标准格式,并附有该层的头部(比如描述编码格式等)
    • 接收方分析头部将标准格式转换为该计算机特定的数据格式
  • 会话层: 建立和断开通信连接,以及数据分割等传输相关的管理
    • 会话层指定了以哪种策略来发送当前的数据,会话层会在数据前加上头部(比如描述数据传送顺序的信息)
  • 传输层: 保证可靠传输,这是在通信双方节点上处理,不需要在路由器上处理
    • 传输层为确保所传输的数据到达目标地址,会在通信两端计算机之间进行确认,如果数据未到达则会负责重发,此层也会增加头部
  • 网络层: 负责寻址和路由选择
    • 其主要目的就是通过地址将数据发送到目的地址,此层的头部就详细描述了目的地址等信息
    • 网络层并不保证数据的可靠传输,它需要与传输层的紧密配合以确保数据可以可靠的传输各个目的地址
  • 数据链路层: 负责物理层面上的互连、节点之间的通信传输
    • 通过将MAC地址附加到首部可以完成当前环境下设备之间的传输
    • 数据链路层只负责发送一个分段内的数据
  • 物理层: 网口的信息经由电平高低或脉冲光传输

传输与地址

传输方式

传输方式分为以下两类:

  1. 面向有连接型:在通信传输前,先打开一个连接通道然后才开始传输,连接通道被关闭后无法发送数据(类似于打电话,需要与对方建立连接后才可以通信)
    • 比如ATM,帧中继,TCP等协议
  2. 面向无连接型:无需确认是否有接收端,发送端随时可以发送数据(类似于寄快递,不需要确认收件人地址号码等信息的正确性)
    • 比如以太网,IP,UDP等协议

电路交换与分组交换

电路交换:源计算机通过中间的交换机最终连接到目标计算机,当建立连接后两台计算机便独占了一条线路,这导致其他计算机有通信请求时只能等待当前的连接断开。

  • 很明显这样效率很低

分组交换:将计算机要发送的数据分包,包中表明了源地址和目标地址,这样一条线路上就可以存在多个计算机的数据包,宏观上来看可以认为是多台计算机同时通信。

  • 我觉得,这种分发机制和操作系统的分时调度机制好像。
  • 分组交换会将发送端的数据发送给路由器,路由器会缓存数据到FIFO中,然后再转发给目标计算机,所以分组交换也叫 蓄积交换
    • 当路由器的缓存饱和或溢出时,可能发生分组数据丢失的情况,此时传输层的重要性就显现出来了。

根据接收端数量分通信方式

  • 单播(Unicast):1对1的通信(比如打电话)
  • 广播(Broadcast):1对多的通信,广播的传输范围称为 广播域
  • 多播(Multicast):多个特定的主机作为接收端(比如电视会议)
  • 任播(Anycast): 在特定的多台主机中选出一台作为接收端的一种通信方式
    • 被选中的那台特定主机将返回一个单播信号,随后发送端主机会只跟这台主机进行通信。

地址

地址指明了发送端与接收端,地址具有如下特性:

  • 唯一性
    • 对应广播、多播、任播而言,对这些由多个设备组成的一组通信赋予同一个具有唯一性的地址
  • 层次性:为了快速的定位某个地址,地址需要有层次性以方便查找(类似国名、省名、市名、区名等)
    • IP地址实现了层次性,MAC地址虽然具有唯一性但不具备层次性
      • IP地址根据网络号与主机号来实现层次性
Last Updated 2018-10-14 日 19:32.
Render by hexo-renderer-org with Emacs 26.1 (Org mode 9.1.14)