男人.No boy no cry

彪悍的人生,不需要解釋...

导航

网络基础之一OSI七层(转)

Posted on 2005-11-29 13:32  Piccolo Goo  阅读(590)  评论(0)    收藏  举报
网络基础之一OSI七层(转)

最近发现很多朋友对网络的基础知识并不是很了解,我就把我所知道的用尽量通俗的文字写出来,与大家一起探讨学习,希望大家参与、支持,谢谢。


第一篇,先说最基础的东西,就是OSI七层模型。


最初,各个厂商的设备,系统,个有个的一套,彼此之间很难互相通信,要建立一个网络,就只能选一家厂商的设备,比如说全IBM的,或全DECnet的,用一种系统,那时UNIX大行其道。后来用Windows的网络也慢慢多了起来,基于将不同网络互连的迫切要求,国际标准化组织ISO于上世纪70年代发布了OSI七层网路模型,以规范化网络设计。那为什么要分层呢?是因为出于将数据处理分步的考虑。总结来说,OSI网七层络模型的用处如下:


1.使不同厂商在开发设备的时候有个公共的标准,让不同厂商开发出来的设备能够互相通信。


2.使不同系统之间能够互相通信,如UNIX、Winsows和Mac。


3.分层使数据处理分步,互相之间不造成影响。


OSI七层网络模型由下至上为1至7层,分别为物理层(Physical layer),数据链路层(Data link layer),网络层(Network layer),传输层(Transport layer),会话层(Session layer),表示层(Presentation layer),应用层(Application layer)。其中上三层称之为高层,定义应用程序之间的通信和人机界面。什么意思呢,就是上三层负责把电脑能看懂的东西转化为你能看懂的东西,或把你能看懂的东西转化为电脑能看懂的东西。下四层称之为底层,定义的是数据如何端到端的传输(end-to-end),物理规范以及数据与光电信号间的转换。先面一层一层的来说明。从上层说起。 应用层,很简单,就是应用程序。这一层负责确定通信对象,并确保由足够的资源用于通信,这些当然都是想要通信的应用程序干的事情。 表示层,负责数据的编码、转化,确保应用层的正常工作。这一层,是将我们看到的界面与二进制间互相转化的地方,就是我们的语言与机器语言间的转化。数据的压缩、解压,加密、解密都发生在这一层。这一层根据不同的应用目的将数据处理为不同的格式,表现出来就是我们看到的各种各样的文件扩展名。 会话层,负责建立、维护、控制会话,区分不同的会话,以及提供单工(Simplex)、半双工(Half duplex)、全双工(Full duplex)三种通信模式的服务。我们平时所知的NFS,RPC,X Windows等都工作在这一层。 传输层,负责分割、组合数据,实现端到端的逻辑连接。数据在上三层是整体的,到了这一层开始被分割,这一层分割后的数据被称为段(Segment)。三次握手(Three-way handshake),面向连接(Connection-Oriented)或非面向连接(Connectionless-Oriented)的服务,流控(Flow control)等都发生在这一层。 网络层,负责管理网络地址,定位设备,决定路由。我们所熟知的IP地址和路由器就是工作在这一层。上层的数据段在这一层被分割,封装后叫做包(Packet),包有两种,一种叫做用户数据包(Data packets),是上层传下来的用户数据;另一种叫路由更新包(Route update packets),是直接由路由器发出来的,用来和其他路由器进行路由信息的交换。 数据链路层,负责准备物理传输,CRC校验,错误通知,网络拓扑,流控等。我们所熟知的MAC地址和交换机都工作在这一层。上层传下来的包在这一层被分割封装后叫做帧(Frame)。物理层,就是实实在在的物理链路,负责将数据以比特流的方式发送,接收,就不多说了。


OSI网络结构的七层模型
  (OSI Network Architecture 7 Layers Model)

  开放式系统互联模型(OSI)是1984年由国际标准化组织(ISO)提出的一个参考模型。作为一个概念性框架,它是不同制造商的设备和应用软件在网络中进行通信的标准。现在此模型已成为计算机间和网络间进行通信的主要结构模型。目前使用的大多数网络通信协议的结构都是基于 OSI 模型的。 OSI 将通信过程定义为七层,即将连网计算机间传输信息的任务划分为七个更小、更易于处理的任务组。每一个任务或任务组则被分配到各个 OSI 层。每一层都是独立存在的,因此分配到各层的任务能够独立地执行。这样使得变更其中某层提供的方案时不影响其他层。

  OSI 七层模型的每一层都具有清晰的特征。基本来说,第七至第四层处理数据源和数据目的地之间的端到端通信,而第三至第一层处理网络设备间的通信。另外, OSI 模型的七层也可以划分为两组:上层(层 7 、层 6 和层 5 )和下层(层 4 、层 3 、层 2 和层 1 )。 OSI 模型的上层处理应用程序问题,并且通常只应用在软件上。最高层,即应用层是与终端用户最接近的。 OSI 模型的下层是处理数据传输的。物理层和数据链路层应用在硬件和软件上。最底层,即物理层是与物理网络媒介(比如说,电线)最接近的,并且负责在媒介上发送数据。

  各层的具体描述如下:

  第七层:应用层           定义了用于在网络中进行通信和数据传输的接口 - 用户程式;
                                                提供标准服务,比如虚拟终端、文件以及任务的传输和处理;
  第六层:表示层           掩盖不同系统间的数据格式的不同性;
                                               指定独立结构的数据传输格式;
                                               数据的编码和解码;加密和解密;压缩和解压缩
  第五层:会话层           管理用户会话和对话;
                                              控制用户间逻辑连接的建立和挂断;
                                              报告上一层发生的错误
  第四层:传输层           管理网络中端到端的信息传送;
                                              通过错误纠正和流控制机制提供可靠且有序的数据包传送;
                                             提供面向无连接的数据包的传送;
  第三层:网络层          定义网络设备间如何传输数据;
                                             根据唯一的网络设备地址路由数据包;
                                              提供流和拥塞控制以防止网络资源的损耗
  第二层:数据链路层 定义操作通信连接的程序;
                                               封装数据包为数据帧;
                                               监测和纠正数据包传输错误
  第一层:物理层           定义通过网络设备发送数据的物理方式;
                                               作为网络媒介和设备间的接口;
                                               定义光学、电气以及机械特性。
  通过 OSI 层,信息可以从一台计算机的软件应用程序传输到另一台的应用程序上。例如,计算机 A 上的应用程序要将信息发送到计算机 B 的应用程序,则计算机 A 中的应用程序需要将信息先发送到其应用层(第七层),然后此层将信息发送到表示层(第六层),表示层将数据转送到会话层(第五层),如此继续,直至物理层(第一层)。在物理层,数据被放置在物理网络媒介中并被发送至计算机 B 。计算机 B 的物理层接收来自物理媒介的数据,然后将信息向上发送至数据链路层(第二层),数据链路层再转送给网络层,依次继续直到信息到达计算机 B 的应用层。最后,计算机 B 的应用层再将信息传送给应用程序接收端,从而完成通信过程。下面图示说明了这一过程。

OSI 的七层运用各种各样的控制信息来和其他计算机系统的对应层进行通信。这些控制信息包含特殊的请求和说明,它们在对应的 OSI 层间进行交换。每一层数据的头和尾是两个携带控制信息的基本形式。

  对于从上一层传送下来的数据,附加在前面的控制信息称为头,附加在后面的控制信息称为尾。然而,在对来自上一层数据增加协议头和协议尾,对一个 OSI 层来说并不是必需的。

  当数据在各层间传送时,每一层都可以在数据上增加头和尾,而这些数据已经包含了上一层增加的头和尾。协议头包含了有关层与层间的通信信息。头、尾以及数据是相关联的概念,它们取决于分析信息单元的协议层。例如,传输层头包含了只有传输层可以看到的信息,传输层下面的其他层只将此头作为数据的一部分传递。对于网络层,一个信息单元由第三层的头和数据组成。对于数据链路层,经网络层向下传递的所有信息即第三层头和数据都被看作是数据。换句话说,在给定的某一 OSI 层,信息单元的数据部分包含来自于所有上层的头和尾以及数据,这称之为封装。



例如,如果计算机 A 要将应用程序中的某数据发送至计算机 B ,数据首先传送至应用层。 计算机 A 的应用层通过在数据上添加协议头来和计算机 B 的应用层通信。所形成的信息单元包含协议头、数据、可能还有协议尾,被发送至表示层,表示层再添加为计算机 B 的表示层所理解的控制信息的协议头。信息单元的大小随着每一层协议头和协议尾的添加而增加,这些协议头和协议尾包含了计算机 B 的对应层要使用的控制信息。在物理层,整个信息单元通过网络介质传输。

  计算机 B 中的物理层收到信息单元并将其传送至数据链路层;然后 B 中的数据链路层读取计算机 A 的数据链路层添加的协议头中的控制信息;然后去除协议头和协议尾,剩余部分被传送至网络层。每一层执行相同的动作:从对应层读取协议头和协议尾,并去除,再将剩余信息发送至上一层。应用层执行完这些动作后,数据就被传送至计算机 B 中的应用程序,这些数据和计算机 A 的应用程序所发送的完全相同 。

  一个 OSI 层与另一层之间的通信是利用第二层提供的服务完成的。相邻层提供的服务帮助一 OSI 层与另一计算机系统的对应层进行通信。一个 OSI 模型的特定层通常是与另外三个 OSI 层联系:与之直接相邻的上一层和下一层,还有目标联网计算机系统的对应层。例如,计算机 A 的数据链路层应与其网络层,物理层以及计算机 B 的数据链路层进行通信。下面的图表可以解释这个例子 :