分类: 系统运维
2008-05-30 22:39:40
TCP/IP与OSI的比较
通过前面的讨论,大家已经看到TCP/IP 模型和ISO/OSI模型有许多相似之处。例如,两种模型中都包含能提供可靠的进程之间端到端传输服务的传输层,而在传输层之上是面向用户应用的传输服务。尽管ISO/OSI模型和TCP/IP模型基本类似,但是它们还是有许多不同之处。接下来我们将讨论两种模型的不同之处。有一点需要特别指出:我们是比较两种参考模型的差异,并不对两个模型中所使用的协议进行比较。
在ISO/OSI参考模型中,有3个基本概念:服务、接口和协议。也许ISO/OSI模型的最重要的贡献是将这3个概念区分清楚了。每一层都为其上层提供服务,服务的概念描述了该层所做的工作,并不涉及服务的实现以及上层实体如何访问的问题。层间接口描述了高层实体如何访问低层实体提供的服务。接口定义了服务访问所需的参数和期望的结果。接口仍然不涉及到某层实体的内部机制,而只有不同机器同层实体使用的对等进程才涉及层实体的实现问题。只要能够完成它必须提供的功能,对等层之间可以采用任何协议。如果愿意,对等层实体可以任意更换协议而不影响高层软件。
上述思想也非常符合现代的面向对象的程序设计思想。一个对象(如模型中的某一层),有一组它的外部进程可以使用的操作。这些操作的语义定义了对象所能提供的服务的集合。对象的内部编码和协议对外是不可见的,也与对象的外部世界无关。TCP/IP模型并不十分清晰地区分服务、接口和协议这些概念。相比TCP/IP模型,ISO/OSI模型中的协议具有更好的隐蔽性并更容易被替换。
ISO/OS I参考模型是在其协议被开发之前设计出来的。这意味着ISO/OSI模型并不是基于某个特定的协议集而设计的,因而它更具有通用性。但另一方面,也意味着ISO/OSI模型在协议实现方面存在某些不足。而TCP/IP模型正好相反。先有协议,模型只是现有协议的描述,因而协议与模型非常吻合。
问题在于TCP/IP模型不适合其他协议栈。因此,它在描述其他非TCP/IP网络时用处不大。
下面我们来看看两种模型的具体差异。其中显而易见的差异是两种模型的层数不一样:
ISO/OSI模型有7层,而TCP/IP模型只有4层。两者都有网络层、传输层和应用层,但其他层是不同的。两者的另外一个差别是有关服务类型方面。ISO/OSI模型的网络层提供面向连接和无连接两种服务,而传输层只提供面向连接服务。TCP/IP模型在网络层只提供无连接服务,但在传输层却提供两种服务。
综上所述,使用ISO/OSI模型(去掉会话层和表示层)可以很好地讨论计算机网络,但是OSI协议并未流行。TCP/IP模型正好相反,其模型本身实际上并不存在,只是对现存协议的一个归纳和总结,但TCP/IP协议却被广泛使用。