介绍 OSI 模型
我们已经知道 TCP/IP 能够应用在不同的网路╋这就必须要有一套大家都遵守的的标准才能保证彼此能够沟通。因为数据通讯领域的专用属于和技术实在太广泛了╋没有任何一位电脑专家能够熟悉全部的内容。因此必须有一套公认而且通用的参考架构以供厘清各项标准。在我们了解 TCP/IP 协定之前╋有一个公认的网路模型我们必须要先了解的╋它就是由 International Standardization Organisation (ISO) 于1978年开始开发的一套标准架构?Reference Model for Open System Interconnection (OSI) 模型。OSI 常被引用来说明数据通讯协定的结构及功能╋成为讨论通讯时代共同依据╋已经被通讯界广泛实用且有一致的认知了。
OSI 把数据通讯的各种功能分为七个层级╋各司其职╋但有相互依存?合作。但在功能上╋它们又可以被划分为两组?
?网路群组?由实体层?资料连接层?和网路层组成。
?使用者群组?由传送层?会谈层?表现层?和应用层组成。
您可以从下图看各个协定层的排列关系?
应用层 (Application)
表现层 (Presentation)
会谈层 (Session)
传送层 (Transport)
网路层 (Network)
资料连接层 (Data Link)
实体层 (Physical)
OSI 参考模型
OSI 提供了一个很有用的模式去解释各个不同层面的网路协定╋这些协定就像堆积木一样╋层层叠上去╋因此此一架构常被称为堆叠(stack)╋或是协定堆叠。每一个协定都只和与之对应的协定沟通╋然后将结构向相邻的协定解释。彼此之间如何传送资料都有必然的协定╋而且层层相扣╋共同协力完成任务。各层无需知道其他层是如何工作的╋只关心相同层级的协定就行?但层与层之间却有一套既定协议相互交换处理结果。这样有一个很明显的好处是?这留给各层都有自己的设计与发展空间╋当某一层要进行协定更新╋其他层无需同时被修改。
下面分别对各个曾经做一个简单的描述?
实体层(Physical Layer)
在这层里面您必须作出一些机械和电子方面的决定╋也就是要定义出在终端和网络之间要使用的设备。同时╋采用何种布线也要在这里决定出来这层实际是定义了应用在网路传输中的各种设备规格╋以及如何将硬体所携载的信号转换成电脑可以理解的电子信号( 0 和 1 )╋这通常都是设备上面之韧体(Firmware)的功能。这些规格一般是由硬体的生产厂商制定的╋比如?数据线的接脚?电压?波长?相位?等等。
例如网线?网路卡?电话线╋等等╋都是属于实体层的范畴╋也就是用来连接两台电脑的可以携带数据的媒体?可以是铜线?也可以是红外线?也可以是光学纤维。我们常见的实体层是用来连接办公室网路的 Ethernet 和 Token Ring 线路╋或者是连接 modem 的电话线。而机器上的网路卡╋或是连接远端的 modem ╋都能够将物理媒体上面的电子脉冲转换成电脑所能读得懂的 0 和 1。
资料连接层(Data Link Layer)
在这层指定了要采用的信息单元 (message unit╋通常在 LAN上面的信息单元被称为 frame╋翻译为“讯框”或“框包”)╋还有它们的格式?以及如何通过网络。每一个 frame 都会被赋予一个 MAC 位址码和侦错监测值(checksum)。
Ethernet 的 Data Link Layer Frame 看起来如下图?
Data Link Layer Frame 结构
数据在实体层是以bit为单位来传输的╋资料连接层要制定不同网路形态的资料框包格式╋确保数据能够在不同的网路实体(比如?同轴电缆?双绞线?光纤?电话数据线?等等)上进行资料传送。有一个 Binary Synchronous Communications 协定╋会判定出一个框包如果在丢失的情况下╋要等待多久会被重新发送╋以及如何处理重发的框包和封包确认。这个协定也是在这层里面定义。我们通常用来拨接上网的 PPP 协定就是在这层里面定义的?同时╋一般给 Mainframe 使用的 xDLC 协定也属于这里的范围。
资料连接层通常会管辖以下的功能?
?网路卡的实体位址(Physical Address)╋也被称为MAC(Media Access Control) Address
?虚拟电路(Virtual Circuit)连接和逻辑连结(Logical Link)的建立和结束
?控制框包的传送和错误检测方式
?框包的传送及接收顺序和传递方式
?判定框包的建立及重组分界
?检测框包的确认╋以及在得不到回应或重复发送的情形下进行修复的程序
?处理实体层的转换和管理
?对接收框包进行检错和确认
?检查发送框包的实体位址以确保资料能正确的被送抵目的地之网路层
在 IEEE802 标准里面╋还将资料连接层再划分为两层?Media Access Control 和 Logical Link Control ╋请参阅下表?
IEEE 802 / 803.x 标准
总体来说╋这层的工作就是保证一个无错误的物理上的数据传输。
网路层(Network Layer)
这层就好比是一个中间人界乎于网络功能和使用者功能之间。它会定义出封包在网路中移动的路由和其处理过程╋这层还决定了网路是如何进行管理功能的╋比如╋发送状态信息给接点和规范封包的流动等。
网路层的主要功能是让封包(packet)在不同的网路之间成功地进行传递。它规定了网路的定址方式╋及处理资料在不同网路之间的传递方式?处理子网路之间的传递?决定路由路径?网路环境?资料处理顺序?等等工作。
发送端电脑在封包被传送出去之前╋都会先为其建立 header ╋作为在网路或子网间进行路由的依据。网路层在辨认和处理资料的时候╋会忽略由高层协定制定的定义╋只负责为数据在一个或多个网路间建立?维护?和终止连接。
网路层通常都有如下的这些功能?
?如果封包不是属于同一个网路的时候╋会将之交由 router 处理
?控制数据流量╋当 router 的缓冲区饱和的时候╋会通知数据传输设备使用其它路径或暂停发送封包
?当封包体积超过 router 的 MTU (Maximum Transmission Unit) 数值的时候╋允许 router 对封包进行重组后再进行传送。(一些所谓的增加 modem上网速度的软体╋就是因为可以对电脑的 MTU 数值进行最佳化╋尽量减少 router 的封包重组╋以达到最高的数据传输效率。)
?负责 MAC 位址和网路位址(如 IP 位址?IPX 位址)之间的解释和转换
一个有趣的事情是╋网路层还能将底层协定(网路功能)对上层协定(使用者功能)躲起来。这样╋在网路的使用者就可以使用不同种类的硬体了。这是非常好的事情╋假如您用来建网的材料都不尽相同的话。
传送层(Transport Layer)
在这层╋将会设定如何控制节点之间的资料传递╋还有错误检测和修正的方法。
由于大多数网路╋如 Ethernet 和 Token Ring等╋由于物理上面的限制╋一次所通过的数据流通常只有数千 byte 而已(IP 封包最大体积为 65536 bytes)╋然而许多需要在网路中传输的资料都会超过这个数值。传送层的主要功能是确保电脑资料正确的传送到目的地。它的工作就是“打包”╋也就是将电脑资料变成封包的形态╋再赋以一定的检测手段╋将资料正确的传到目的电脑╋然后再将封包重组回资料。封包如果残缺则进行重发╋也能够将重复的封包剔除。
传送层可以等资料收集到足够大的数量的时候才发送出去,并非应用程式每次产生一个数据就进行一次传送,也就能减少了不必要的传输次数╋以保证高效率的传输?反之,当应用程式产生大资料量数据时,则将之分拆成较小的封包再进行传送。
传送层的主要功能有?
?接管由上层协定传来的资料╋并进行“分拆”和“打包”等工作。
?利用点对点的方式进行资料传送和回应的确认。
?在得到接收端之资料缓冲区饱和信息之后╋暂时停止资料发送。
?能在单一位址上处理不同的程式协定(如ftp?http?telnet等)╋并分别进行追踪及转换。
会谈层(Session Layer)
这层定义了如何连接和挂断连接╋和在网路上面的数据如何交换。
这层所负责的是建立和管理电脑与电脑之间的沟通模式╋也就是在资料真正进行传送之前设定并建立好连线。这里定义了连线的请求和结束?传送和接收状态的设定?等等动作。
当节点 A 要建立和节点 B 的连线的时候╋ 会先发出“连线请求”讯息, 若对方接受连线,则回应“建立请求”讯息╋然后双方就建立好一个会谈了?当会谈结束的时候╋也是先由节点 A 送出一个“结束请求”信息╋等对方确认这个请求之后╋那么会谈也就真正结束了。
会谈层的功能主要有这些?
?允许程式以电脑名称注册成为网路上唯一的位址。
?在电脑之间建立?监测?和结束虚拟电路(Virtual Circuit)。
?负责电脑之间的信息同步╋监测资料沟通状态╋并对错误信息做出处理。
会谈层为不同的程式以及与之对应的位于另一台电脑的程式╋提供了可靠的沟通渠道。在某些沟通渠道中使用的是 half-duplex(半双工╋即单向) 的模式╋有些则使用 full-duplex(全双工╋即双向) 的模式╋为程式之间协定好共同认可的模式╋并进行同步和管理等责任╋都是会谈层所肩负起的。
表现层(Presentation Layer)
在这层╋定义了数据的语法(syntax)?变更?和格式。当应用程式的语法和格式都不同的时候╋这层还将定义了如何翻译这些不同。
如果您想将您的 PC 通过网路连接 mainframe 电脑╋那您就必须使用合适的 mainframe 文字串╋通常会是 EBCDIS(External Binary Coded Decimal for Interchange Code)╋然而您的 PC 使用的却是 ASCII 码(American Standard Code for Information Interchange)╋这两种编码格式是截然不同的。表现层则是主要负责在不同机器之间进行编码转换。当应用