网络略谈(二).网络概念OSI参考模型(上)
草木瓜整理 20080201
一、引言
《网络编程概念全面接触》系列早对基本网络概念作了总结说明,我们这里要首先要介绍的就是
著名的OSI/RM。
人们谈起网络不能不说OSI参考模型,OSI参考模型(OSI/RM)的全称为开放系统互连参考模型
(Open System Interconnection Reference Model,OSI/RM),是由国际标准化组织ISO制定的网
络系统互连模型。
虽然OSI参考模型在实际应用方面意义不是很大,但对于我们理解网络协议内部的运作机制却很
有帮助,也是学习网络的很好参考。
二、OSI/RM模型概况
OSI/RM模型,是国际标准化组织(ISO)提出的一个试图使各类计算机在世界范围内互联为网络的
标准框架,简称OSI。OSI将计算机网络体系结构(architecture)划分为如下七层:
物理层:Physical Layer
数据链路层:Data Link Layer
网络层:Network Layer
传输层:Transport Layer
会话层:Session Layer
表示层:Presentation Layer
应用层:Application Layer
OSI标准制定过程中采用的方法是将整个庞大而复杂的问题划分为若干个容易处理的小问题,即
体系结构进行分层。在OSI中,采用了三级抽象:体系结构,服务定义,协议规格说明。
ISO将整个网络通信功能划分为七个层次的原则是:
1、网中各节点都有相同的层次。
2、不同节点的同等层次具有相同的功能。
3、同一节点相邻层之间能通过接口通信。
4、每一层使用下层提供的服务,并向其上层提供服务。
5、不同节点的同等层次按照协议实现对等层之间的通信。
OSI仅仅是一个标准,而不是特定的系统或协议。网络开发者可以根据这个标准开发网络系统,制定
网络协议。网络用户可以用这个标准来考察网络系统,分析网络协议。
事实上,并没有哪个产品完全实现了OSI/RM参考模型。
刚刚接触这个七层网络模型的人肯定比较迷茫,可以在网上搜索些图片便于理解,知识掌握是一
个迭代的过程,不可能一步到位。
通过baidu google搜索 “网络协议图” 或“网络模型图”,这里笔者推荐几个比较详细的图表:
<network associates guild to communications protocols>
<科来软件网络通讯协议图>
三、RFC(Request For Comments)
谈网络通信,还是需要引入RFC这个东东。详细解释见百度RFC词条,不再赘述。
四、OSI/RM模型之物理层<Physical Layer>
物理层<Physical Layer>规定了通信设备的机械特性、电气特性、功能特性和过程特性,用
以建立、维护和拆除物理链路连接。
具体地讲:
机械特性规定了网络连接时所须接插件的规格尺寸、引脚数量和排列情况等;
电气特性规定了在物理连接上传输比特(bit)流时线路上信号电平的大小、阻抗匹配、传输速率
和距离限制等;
功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;
规程特性定义了利用信号线进行比特(bit)流传输的一组操作规程,是指在物理连接上建立、维
护和交换信息,是DTE和DCE双方在各电路上的系列动作。
在物理层<Physical Layer>数据的基本单位称为比特(bit)。
属于物理层定义的典型规范代表有:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
可能有些人对DCE,DTE感到陌生,下面会具体介绍:
DTE(Data Terminal Equipment)数据终端设备,DCE(Data Communical Equipment)数据通信
设备。DTE是网络最外端的设备,DCE是连接DTE和网络交换设备的设备,DCE控制DTE的传输
参数,比如时钟、虚电路等。DTE,DCE一般是用于接口的区分,比如一台路由器,它处于网络的
边缘,它有个S0/0口需要从另一台路由器学习一些参数,在具体实施时,我们就不需要在这个S0/0
口配置“时钟速率”,它会从对方学到。这时它就是DTE,而对方就是DCE。这也说明了DCE控制DTE
的传输参数。
其实对于标准的串行端口,通常从外观就能判断是DTE还是DCE,DTE是针头(俗称公头),DCE
是孔头(俗称母头),这样两种接口才能连到一起。
物理层的媒体包括了架空明线、平衡电缆、光纤、无线信道等。通信用的互连设备指DTE和DCE
间的互连设备。数据传输通常是经过DTE到DCE,再经过DCE到DTE的路径。互连设备中指将DTE、
DCE连接起来的装置,如各种插头、插座。
LAN中的各种粗、细同轴电缆、T型接、插头,接收器,发送器,中继器等都属于物理层的媒体和
连接器。
物理层涉及在信道上传输的原始比特流。设计上必须保证一方发出“1”时,另一方接收到的是“1”
而不是“0”。在物理层,设计的问题主要是处理机械的、电气的、功能的和过程的接口,以及物理层
下的物理传输介质等。
比如典型问题:
用(高电位)多少伏特电压表示“1”,(低电位)多少伏特电压表示“0”;
一个比特(bit)持续多少微秒;
传输是否在两个方向上同时进行;
最初的连接如何建立,完成通信后连接如何终止;
网络接插件有多少针以及各针的用途。
物理层实际上就是通过介质(双绞线,光纤,无线等)把多个网络通信设备连接在一起的东东。甚
至说一个信鸽也可以被认为是一个物理层设备(参见RFC 1149)。网络故障的排除经常会涉及到物理
层问题。举个很简单的例子,普通双绞线的通信距离是有限的,不同质量更会有大的差异,这都是
网络布线需要考虑的。
五、OSI/RM模型之数据链路层<Data Link Layer>
数据链路层<Data Link Layer>在物理层<Physical Layer>提供比特流服务的基础上,建立相邻节
点之间的数据链路,通过差错控制提供数据帧(frame)在信道上无差错的传输,并进行电路上的系列
动作。数据链路层把数据帧转换成二进制位供物理层处理。
数据链路可以大体理解为数据通道。物理层要为终端设备间的数据通信提供传输媒体介质及其连接。
媒体介质是长期的,而连接是有生存周期的。在连接生存周期内,收发两端可以进行不等的一次或多
次数据通信,每次通信都要经过两个过程:建立通信联络和拆除通信联络。这种建立起来的数据收发
关系其实就是数据链路。
当然,在物理媒介上传输数据难免会受到各种不可靠因素的影响而产生差错,为了弥补物理层的不
足,为上层提供无差错的数据传输,就需要能对数据进行检错和纠错。数据链路的建立和拆除,对数
据的检错和纠错是数据链路层的基本任务。
数据链路层在不可靠的物理媒介上提供可靠的数据传输。具体的作用有:物理地址寻址、数据成帧、
流量控制、数据的检错重发等。
在这一层,数据单位称为帧(frame)。我们再来了解下数据帧的概念。
数据帧是数据在网络上传输时的一个数据单元。以下是一个数据帧的可能组成部分:
->帧的起始点(SOF)
->发送帧的设备的地址(源地址)
->接收帧的设备的地址(目标地址)
->管理或通信控制信息。
->数据。
->差错检验信息
->报尾(或称帧的末端)标识符。
数据链路层包含两个重要的子层:逻辑链接控制(Logic Link Control,LLC )和介质访问控制(Media
Access Control,MAC )。LLC可对两个结点间的通信链接进行初始化,并防止链接的中断,从而确保
了可靠的通信。而MAC则用来检验包含在每一帧中的地址信息。例如,工作站上的MAC子层检验工作
站接收的每一个帧,如果帧的地址与工作站的地址相匹配,就将接收帧数据。
大多数网络设备都有自己唯一的地址,永久存在于设备的网络接口设备的芯片上。
该地址称为设备地址或物理地址,以16进制进行编码,如0004AC8428DE。地址的前半部分指示特
定的网络厂商;如果设备只有一个接口,那么后半部分对于接口或设备而言是唯一的。许多厂商在后
半部分中用一个编码来标识设备(如计算机、网桥、路由器或网关)的类型。
两种网络设备不能拥有同样的物理地址,这一点是很重要的。这是网络设备生产商们实施的一种保
护措施。如果两个以上的设备拥有同样的地址,在网络上传递帧时就会引起混淆。
在数据链路层发送方把输入数据封装在数据帧(data frame)里,按顺序发送各帧,并处理接收方回
送的确认帧(acknowledgement frame),由于物理层仅仅接收和传送比特流,并不关心它的意义和结
构,所以须依赖各链路层来产生和识别帧边界。
数据链路层需要解决众多问题,如:
帧的破坏、丢失或重复;
防止高速的发送方数据把低速的接收方“淹没”,需要流量调节控制;
如果线路用于双向传输,数据链路软件还必须解决新的麻烦,如从A到B数据确认帧与从B到A的
数据帧竞争线路使用权。
数据链路层常见协议有以太网协议,SDLC、HDLC、PPP、STP等。
读到这里需要理解网桥是什么。网桥工作在数据链路层,将两个局域网(LAN)连起来,根据MAC
地址(物理地址)来转发帧,可以看作是一个“低层的路由器”(路由器工作在网络层,根据网络地址如
IP地址进行转发)。它可以有效地连接两个LAN,使本地通信限制在本网段内,并转发相应的信号至
另一网段,网桥通常用于联接数量不多的、同一类型的网段。
交换机可以看成网桥,网桥仅关注以太网上的MAC地址。有关MAC地址、网卡、驱动程序和交换
机都属于数据链路层的范畴。集线器属于物理层,它只是电子设备,没有链路层的知识。
六、OSI/RM模型之网络层<Network Layer>
网络层<Network Layer>的产生是网络发展的结果。在早期联机系统和线路交换的环境中,网络
层功能没有多少意义。随着网络蓬勃发展,网络终端指数级增长,它们之间会有多个中继设备相连。
此时往往要求一台终端能访问多个其他终端的资源。
如何实现两台任意终端设备的可以链接,就需要解决路由(或者叫寻径)问题。
此外,一条物理信道建立之后,如果仅被一对用户使用,就会浪费大量的空闲时间,人们自然会
希望可以由多用户共用一条链路,为解决这一问题又出现了逻辑信道技术和虚拟电路技术。
网络层<Network Layer>是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据
链路层提供的两个终端设备之间的数据帧传送功能上,进一步管理网络中的数据通信、将数据设法
从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建
立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。
所有的网络都由物理路由 (电缆路径)和逻辑路由(软件路径)组成。网络层读取包协议地址信息并将
每一个包沿最优路径 (包括物理的和逻辑的)转发以进行有效传输。这一层允许包通过路由器从一个网
络发送到另一个网络。网络层控制包的通路,有些象交通控制器,沿几条不同路径中最有效的那一条
来路由包。为确定最优路径,网络层需要持续地收集有关各个网络和节点地址的信息,这一过程称为
发现。
网络层可以通过创建虚拟(逻辑)电路在不同的路径上路由数据。虚拟电路是用来发送和接收数据的
逻辑通信路径。虚拟电路只针对于网络层。既然网络层沿着多个虚拟电路管理数据, 那么数据到达时
就有可能出现错误的顺序。网络层在将包传输给下一层前检查数据的顺序, 如有必要就对其进行改正。
网络层还要对帧编址并调整它们的大小使之符合接收网络协议的需要,并保证帧传输的速度不高于接
收层接收的速度。
在网络层,数据的单位称为数据包(packet),数据包是包含在数据帧里的。可以理解数据包在数据
帧基础上加入网络层协议的相关信息,如“目的IP地址”、“源IP地址”等。
代表协议有:IP、IPX、RIP、OSPF等。
七、OSI/RM模型之传输层<Transport Layer>
传输层<Transport Layer>是分层网络体系结构的重心部分。它的重要任务就是直接给运行在不同
主机上的应用程序提供通信服务。
传输层协议为不同主机上的应用程序进程提供逻辑通信。逻辑通信的意思就是尽管通信的应用进
程之间不是物理连接的(实际上,它们可能是在众多网络的不同位置,通过各种各样的路由器和各种
链接类型连在一起),而从应用程序的角度来看,它们就像是物理连接的一样。应用程序通过使用传
输层提供的逻辑通信互相传输信息,而不用考虑用来传送这些信息的物理基础设施。
传输层在两个应用程序之间提供了逻辑的而不是物理的通信。
一个计算机网络可以为网络应用程序制定多个传输层协议。例如,因特网(Internet)有两个协议:
TCP和UDP。每一个协议都为调用应用程序提供一套不同的服务。
所有的传输层协议都为应用程序提供多路复用多路分解服务。除了多路复用移路分解服务之外,
传输层协议还可以给应用进程提供其他服务,包括可靠数据传输、带宽保证和传输延迟保证。
与数据链路层和网络层一样,传输层功能也包括保证数据可靠地从发送节点传输到目标节点。例
如,传输层确保数据以相同的顺序发送和接收,并且传输后接收节点会做出响应。当在网络中采用
虚拟电路时,传输层还要负责跟踪指定给每一电路的唯一标识值。这一标识值称为端口、连接标识
或套接字,是由上层指定的。传输层还要确定包错误校验的级别,最高的级别可以确保包在可以接
受的时间内无差错地从节点发送到节点。
传输层负责连接的实际技术细节,同时对数据提供可靠和不可靠的传输。对于可靠的连接,传输层
负责差错侦测和差错校正:当发现差错时,传输层将重新发送这个数据,从而提供了差错的校正。对
于不可靠的连接,传输层仅仅提供差错侦测,差错校正留给了较高层中的一层(通常是应用层)。在
这种意义上,不可靠的连接试图提供尽力传送。如果数据到达目的地,那非常好,而如果数据没有到
达目的地,也是令人满意的。
可靠传输协议的实例有TCP/IP的传输控制协议(Transmission Control Protocol,TCP)和IPX的
SPX(Sequenced Packet Exchange,顺序分组交换)协议。TCP/IP的用户数据报协议
(User Datagram Protocol,UDP)是使用不可靠连接协议的实例。实际上,IPX和IP本身就是提供
不可靠连接的协议实例。即使他们在网络层工作,而不是传输层。对于IPX,如果需要可靠的连接,
那么会使用SPX。对于IP,如果需要可靠的连接,那么会在传输层使用TCP。
TCP的数据单元称为段(segments)而UDP协议的数据单元称为数据报(datagrams)。
传输层协议的代表有:TCP、UDP、SPX等。
<待续>