重温OSI和TCP/IP网络分层
1 OSI参考模型
谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考。在现实网络世界里,TCP/IP协议栈获得了更为广泛的应用。
1.1 OSI参考模型的分层结构
OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它是由国际标准化组织(International Standard Organization,ISO)提出的一个网络系统互连模型。
OSI参考模型采用分层结构,如图1-1所示。
在这个OSI七层模型中,每一层都为其上一层提供服务、并为其上一层提供一个访问接口或界面。
不同主机之间的相同层次称为对等层。如主机A中的表示层和主机B中的表示层互为对等层、主机A中的会话层和主机B中的会话层互为对等层等。
对等层之间互相通信需要遵守一定的规则,如通信的内容、通信的方式,我们将其称为协议(Protocol)。
我们将某个主机上运行的某种协议的集合称为协议栈。主机正是利用这个协议栈来接收和发送数据的。
OSI参考模型通过将协议栈划分为不同的层次,可以简化问题的分析、处理过程以及网络系统设计的复杂性。
OSI参考模型的提出是为了解决不同厂商、不同结构的网络产品之间互连时遇到的不兼容性问题。但是该模型的复杂性阻碍了其在计算机网络领域的实际应用。与此对照,后面我们将要学习的TCP/IP参考模型,获得了非常广泛的应用。实际上,也是目前因特网范围内运行的唯一一种协议。
1.2 OSI参考模型中各层的作用
在OSI参考模型中,从下至上,每一层完成不同的、目标明确的功能。
1、物理层(Physical Layer)
物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。
在这一层,数据的单位称为比特(bit)。
属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
2、数据链路层(Data Link Layer)
数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
在这一层,数据的单位称为帧(frame)。
数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
3、网络层(Network Layer)
网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能。
在这一层,数据的单位称为数据包(packet)。
网络层协议的代表包括:IP、IPX、RIP、OSPF等。
4、传输层(Transport Layer)
传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
在这一层,数据的单位称为数据段(segment)。
传输层协议的代表包括:TCP、UDP、SPX等。
5、会话层(Session Layer)
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
会话层协议的代表包括:NetBIOS、ZIP(AppleTalk区域信息协议)等。
6、表示层(Presentation Layer)
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
表示层协议的代表包括:ASCII、ASN.1、JPEG、MPEG等。
7、应用层(Application Layer)
应用层为操作系统或网络应用程序提供访问网络服务的接口。
应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。
1.3 OSI参考模型中的数据封装过程
2.1 TCP/IP参考模型的层次结构
TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network,ARPANET)和其后继因特网使用的参考模型。ARPANET是由美国国防部(U.S.Department of Defense,DoD)赞助的研究网络。最初,它只连接了美国境内的四所大学。随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。最终 ARPANET发展成为全球规模最大的互连网络-因特网。最初的ARPANET于1990年永久性地关闭。
TCP/IP参考模型分为四个层次:应用层、传输层、网络互连层和主机到网络层。如图2-2所示。
在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。下面,分别介绍各层的主要功能。
1、主机到网络层
实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。
2、网络互连层
网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。
网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。
网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。
3、传输层
在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议 TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。
TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。
UDP协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。
4、应用层
TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。
应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的,如简
传输层和网络层之间的关系
在协议栈中,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信。这个区别很微妙,但是却非常重要。让我们用一家人作为类比来说明一下这个区别。
设想一下有两所房子,一个位于东海岸而另一个位于西海岸,每所房子里都住着12个小孩。东海岸的房子里的小孩和西海岸房子里的小孩是堂兄妹。两 所房子里的孩子喜欢互相通信——每个孩子每周都给每一个堂兄妹写一封信,每一封信都由老式的邮局分别用信封来寄。这样,每一家每周就都有144封信要送到 另一家(这些孩子如果可以用电子邮件的话就可以省掉很多钱了!)在每一家里面.都由一个孩子——西海岸的房子里的Ann和东海岸房子里的BilI——负责 邮件的收集和分发。每周Ann都从她的兄弟姐妹那里收集起来信件,并将这些信件送到每天都来的邮递服务员那里。当信件到达西海岸的房子,Ann又将这些信 件分发给她的兄弟姐妹。BilI在东海岸有着同样的工作。
在这个例于中,邮递服务提供着两所房子之间的逻辑通信——邮递服务在两所房子之间传递邮件,而不是针对每个人的服务。另一方面,Ann和 BilI提供堂兄妹之间的逻辑通信——Ann和BilI从他们的兄弟姐妹那里收集邮件并将邮件递送给他们。注意,从这些堂兄妹的角度看,Ann和BilI 是邮件的服务人,尽管他们俩只是端到端寄送服务的一部分(终端系统部分)。这个例子是传输层和网络层之间的关系的一个形象比喻:
主机(也称为终端系统)=房子 |
继续我们的这个例子,Ann和Bill各自在他们的家中做所有的工作:他们不负责各个邮递中心的邮件分类工作以及将邮件从一个中心送到另一个中 心的工作。这正与传输层协议在终端系统中的作用一样。在一个终端系统中,传输层协议将应用进程的消息传送到网络边缘(也就是网络层),反之亦然:但是它并不涉及消息是如何在网络层之间传送的工作。事实上,正如图1中所说的,中间路由器对于传输层加在应用程序消息上的信息不能做任何识别和处理。
继续我们的例子,假设Ann和Bill都去度假了,另外一对堂兄妹——Susan和Harvey代替——他们来提供家庭内部的邮件收取和分发工作。不幸的是,Susan和Harvey所提供的收集和分发工作与Ann和Bill所提供的不完全相同。对于年龄更小的Susan和Harvey来说,他 们收集和分发邮件的频率比较少,而且偶尔会发生丢失信件的事情(这些信件偶尔被家里的狗吃掉了)。这样,这一对堂兄妹Susan和Harvey提供了一套 不同于Ann和Bill的服务(也就是说,服务模型不同)。打比方来说,正如一个计算机网络可以接受不同的传输层协议一样,每一个协议为应用程序提供不同 的服务模型。
Ann和Bill所可能提供服务明显地受限于邮递服务所提供的服务。例如,如果邮递服务并不提供在两所房子之间传递邮件所需要的最大时限(如3 天),那么Ann和Bill也就不能保证各个堂兄妹之间的邮件的最大延迟。同样,传输层协议所提供的服务也通常受限于位于其下方的网络层协议。如果网络层协议不能提供主机之间传送的4—PDU的延迟和带宽保证,那么传输层协议也不能提供进程之间传送的消息的延迟和带宽保证。
然而,即使当下面的网络层协议使得网络层并不能提供某些相应服务时,传输层协议仍然可以提供某些特定服务。例如,即使下面的网络层协议并不是可靠的,也就是说,即使网络层协议丢失、篡改或者复制了传送的数据包,传输层协议也可以提供可靠的数据传输服务。另一个例子是,即使网络层不能保证4— PDU的保密性,传输层协议也可以通过加密的方式来保证应用程序消息不被入侵吝读取。我们会在以后的文章里逐渐接触到这些问题。
因特网中传输层
回忆一下因特网,通常是TCP/IP网络,应用层可以得到两种不同的传输层协议。其中—·种协议是UDP(User Datagram Protocol),它为调用应用进程提供了一种不可靠的、无连接的服务。第二种协议是TCP(Tansmission Control Protocol),它为调用应用进程提供了一种可靠的、面向连接的服务。当设计一个网络应用程序时,应用程序外发者必须指定这两种传输协议中的一种。
在进行UDP和TCP的简单介绍之前,我们有必要先简介—下因特网的网络层。因特网的网络层协议有——个名字——IP,也就是iNTERNET Protocol。IP提供了主机之间的逻辑通信。IP服务模型是一个尽力传送服务。这就意味着IP尽它最大的努力在通信主机之间传送数据段,但是却不提 供任何保障。特别是,它不能保证数据段传输的安全性,不能保证数据段的顺序传输,不能保证数据段传输的数据完整性。基于这些原因,IP被称为不可靠服务。每一个主机都要有一个IP地址。
在对IP服务模型进行了简要介绍之后,让我们来总结—下TCP和UDP的服务模型。UDP和TCP的基本职责就是将IP的两个终端系统之间的传 送服务扩展为终端系统上运行的两个进程之间的传送服务。主机—主机的传送到进程—进程传送的扩展被称为应用程序的多路复用和多路分解。UDP和TCP还通 过在头部中加入纠错字段来提供完整性检测。这两个最小的传输层服务——进程—进程数据传送和错误检测——是UDP所提供的惟一的两个服务!特别是,正如 IP一样,UDP是一种不可靠的服务,它不能保证由一个进程送出的数据可以完整地到达目标进程。
另一方面,TCP为应用进程提供了几种额外的服务。首先,也是最重要的,它提供可靠的数据传输。通过使用数据流控制、序列编号、确认和计时器 (我们会在以后的文章介绍这些技术),TCP保证了数据正确有序地从发送方进程传送到接收方进程。这样,TCP就将IP的终端系统之间的不可靠传送服务转 换成了进程之间的可靠的数据传输服务。TCP还使用了拥塞控制机制。与其说拥塞控制是提供给调用进程的服务,不如说它是提供给整个因特网的服务,为了公共 利益的服务。泛泛地说,TCP拥塞控制阻止了任何一个TCP连接在超大量数据传输时链路和交换机被淹没的问题。确切地说,TCP允许TCP连接通过一个拥挤的网络链路平等地分享该链接的带宽。这是通过调整发送方TCP可以传送到网络的流量米实现的。而UDP的通信流量是无法进行控制的。一个使用UDP传输协议的应用程序可以用其需要的任意速度发送数据。
在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。下面,分别介绍各层的主要功能。