1.2 OSI模型和TCP/IP模型
码1-2 OSI模型和TCP/IP模型
1.2.1 OSI参考模型
在网络发展的早期时代,网络技术的发展变化非常快,计算机网络变得越来越复杂,新的协议和应用不断产生,而网络设备大部分都是按厂商自己的标准生产的,不能兼容,很难相互间进行通信。
为了解决网络之间的兼容性问题,实现网络设备间的相互通信,ISO(国际标准化组织)于1984年提出了OSI参考模型(Open System Interconnection Reference Model,开放系统互联参考模型)。OSI参考模型很快成为计算机网络通信的基础模型。OSI参考模型是应用在局域网和广域网上的一套普遍适用的规范集合,它使得全球范围的计算机平台可进行开放式通信。OSI 参考模型说明了网络的架构体系和标准,并描述了网络中的信息是如何传输的。多年以来,OSI模型极大地促进了网络通信的发展,也充分体现了为网络软件和硬件实施标准化做出的努力。
1.OSI参考模型的产生
OSI模型是对发生在网络设备间的信息传输过程的一种理论化描述,它仅仅是一种理论模型,并没有定义如何通过硬件和软件实现每一层功能,与实际使用的协议(如TCP/IP)是有一定区别的。虽然OSI仅是一种理论化的模型,但它是所有网络学习的基础,因此除了应了解各层的名称外,还应深入了解它们的功能及各层之间是如何工作的。
OSI 参考模型很重要的一个特性是分层体系结构。分层设计方法可以将庞大而复杂的问题转化为若干较小且易于处理的子问题。
可以设想在两台设备之间进行通信时,两台设备必须要高度地协调工作,包括从物理的传输介质到应用程序的接口等方方面面,这种“协调”是相当复杂的。为了降低网络设计的复杂性,OSI 参考模型采用了层次化的结构模型,以实现网络的分层设计,从而将庞大而复杂的问题转化为若干较小且易于处理的子问题。这与编写程序的思想非常相似。在编写一个功能复杂的程序时,为了方便编写和代码调试,不可能在主程序里将所有代码一气呵成,而是将问题划分为若干个子功能,由不同的函数分别去完成。主程序通过调用函数实现整个程序的功能,从而有效地简化了程序的设计和编写。一旦出现错误,也可以很容易地将问题定位到相应的功能函数。
分层体系结构将复杂的网络通信过程分解到各个功能层次,各个层次的设计和测试相对独立,并不依赖于操作系统或其他因素,层次间也无须了解其他层是如何实现的,从而简化了设备间的互通性和互操作性。采用统一的标准的层次化模型后,各个设备生产厂商遵循标准进行产品的设计开发,有效地保证了产品间的兼容性。就像建造房屋的建筑商可以使用其他厂商提供的原材料,而不必自己从头开始制作一砖一瓦一样,一个厂商可以将其他厂商提供的模块作为基础,只专注于某一层软件或硬件的开发,使得开发周期大大缩短,费用大为降低。
总之,OSI参考模型具有以下优点。
(1)开放的标准化接口
通过规范各个层次之间的标准化接口,各个厂商可以自由地生产出网络产品,这种开放给网络产业的发展注入了活力。
(2)多厂商兼容性
采用统一的标准的层次化模型后,各个设备生产厂商遵循标准进行产品的设计开发,有效地保证了产品间的兼容性。
(3)易于理解、学习和更新协议标准
由于各层次之间相对独立,使得讨论、制定和学习协议标准变得比较容易,某一层次协议标准的改变不会影响其他层次的协议。
(4)实现模块化工程,降低了开发实现的复杂度
每个厂商都可以专注于某一个层次或某一模块,独立开发自己的产品,这样的模块化开发降低了单一产品或模块的复杂度,提高了开发效率,降低了开发费用。
(5)便于故障排除
一旦发生网络故障,就可以比较容易地将故障定位于某一层次,进而快速找出故障的原因。
2.OSI参考模型的层次结构
OSI参考模型采用了层次结构,将整个网络的通信功能划分成7个层次,每个层次完成不同的功能。这7层由低层到高层分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如图1-2所示。
图1-2 OSI参考模型
OSI 参考模型的每一层都负责完成某些特定的通信任务,并只与紧邻的上层和下层进行数据的交换。
(1)物理层
物理层是OSI参考模型的最底层或称为第一层,其功能是在终端设备间传输比特流。
物理层并不是指物理设备或物理媒介,而是有关物理设备通过物理媒体进行互连的描述和规定。物理层协议定义了通信传输介质的以下4方面特性。
1)机械特性:用于说明接口所用接线器的形状和尺寸、引线数目和排列等,如人们见到的各种规格的电源插头的尺寸都有严格的规定。
2)电气特性:说明在接口电缆的每根线上出现的电压、电流范围。
3)功能特性:说明某根线上出现的某一电平的电压表示何种意义。
4)规程特性:说明不同功能的各种可能事件的出现顺序。
物理层以比特流的方式传送来自数据链路层的数据,而不理会数据的含义或格式。同样,它接收数据后直接传给数据链路层。也就是说,物理层只能看到0和1,它不能理解所处理的比特流的具体意义。
(2)数据链路层
数据链路层负责在某一特定的介质或链路上传递数据。因此,数据链路层协议与链路介质有较强的相关性,不同的传输介质需要不同的数据链路层协议给予支持。数据链路层的主要功能如下。
1)帧同步:即编成帧和识别帧。物理层只发送和接收比特流,而并不关心这些比特的次序、结构和含义;在数据链路层,数据以帧为单位传送。因此,发送方需要数据链路层将比特编成帧,接收方需要数据链路层能从接收到的比特流中明确地区分出数据帧起始与终止的地方。帧同步的方法包括字节计数法、使用字符或比特填充的首尾定界符法,以及违法编码法等。
2)数据链路的建立、维持和释放:当网络中的设备要进行通信时,通信双方有时必须先建立一条数据链路,在建立链路时需要保证安全性,在传输过程中要维持数据链路,而在通信结束后要释放数据链路。
3)传输资源控制:在一些共享介质上,多个终端设备可能同时需要发送数据,此时必须由数据链路层协议对资源的分配加以裁决。
4)流量控制:为了确保正常地收发数据,防止发送数据过快,导致接收方的缓存空间溢出,网络出现拥塞,就必须及时控制发送方发送数据的速率。数据链路层控制的是相邻两结点之间数据链路上的流量。
5)差错控制:由于比特流传输时可能产生差错,而物理层无法辨别错误,因此数据链路层协议需要以帧为单位实施差错检测。最常用的差错检测方法是FCS(Frame Check Sequence,帧校验序列)。发送方在发送一个帧时,根据其内容,通过诸如CRC(Cyclic Redundancy Check,循环冗余校验)这样的算法计算出校验和(Checksum),并将其加入此帧的FCS字段中并发送给接收方。接收方通过对校验和进行检查,检测收到的帧在传输过程中是否发生差错。一旦发现差错,就丢弃此帧。
6)寻址:数据链路层协议应该能够标识介质上的所有结点,并且能寻找到目的结点,以便将数据发送到正确的目的地。
7)标识上层数据:数据链路层采用透明传输的方法传送网络层包,它对网络层提供无差错的数据链路。为了在同一链路上支持多种网络层协议,发送方必须在帧的控制信息中标识载荷(即包)所属的网络层协议,这样接收方才能将载荷提交给正确的上层协议来处理。
(3)网络层
在网络层,数据的传送单位是包。网络层的任务就是选择合适的路径并转发数据包,使数据包能够正确无误地从发送方传递到接收方。网络层的主要功能如下。
1)编址:网络层为每个结点分配标识,这就是网络层的地址。地址的分配为从源到目的的路径选择提供了基础。
2)路由选择:网络层的一个关键作用是要确定从源到目的的数据传递应该如何选择路由,网络层设备在计算路由之后,按照路由信息对数据包进行转发。执行网络层路由选择的设备称为路由器(Router)。
3)拥塞控制:如果网络同时传送过多的数据包,则可能会产生拥塞,导致数据丢失或延迟。网络层也负责对网络上的拥塞进行控制。
4)异种网络互联:通信链路和介质类型是多种多样的,每一种链路都有其特殊的通信规定,网络层必须能够工作在多种多样的链路和介质类型上,以便能够跨越多个网段提供通信服务。
网络层处于传输层和数据链路层之间,它负责向传输层提供服务,同时负责将网络地址翻译成对应的物理地址。网络层协议还能协调发送、传输及接收设备的处理能力的不平衡性,如网络层可以对数据进行分段和重组,以使得数据包的长度能够满足该链路的数据链路层协议所支持的最大数据帧长度。
(4)传输层
传输层传送的数据单位是段。传输层从会话层接收数据,并传递给网络层。如果会话层数据过大,则传输层将其切割成较小的数据单元(段)进行传送。
传输层负责创建端到端的透明的通信连接。通过这一层,通信双方主机上的应用程序之间通过对方的地址信息直接进行对话,而不用考虑它们之间的网络上有多少个中间结点。
传输层既可以为每个会话层请求建立一个单独的连接,也可以根据连接的使用情况为多个会话层请求建立一个单独的连接,这称为多路复用(Multiplexing)。
传输层的另一个重要工作是差错校验和重传。传输层为会话层提供无差错的传送链路,保证两台设备间传递信息正确无误。数据包在网络传输中可能出现错误,也可能出现乱序、丢失等情况,传输层必须能检测并更正这些错误。一个数据流中的包在网络中传递时,如果通过不同的路径到达目的地,就可能造成到达顺序的改变。接收方的传输层应该可以识别出包的顺序,并且在将这些包的内容传递给会话层之前将它们恢复成发送时的顺序。接收方的传输层不仅要对数据包重新排序,还需验证所有的包是否都已收到。如果出现错误和丢失,则接收方必须请求对方重新传送丢失的包。
为了避免发送速度超出网络或接收方的处理能力,传输层还负责执行流量控制(Flow Control),在资源不足时降低流量,而在资源充足时提高流量。
(5)会话层、表示层和应用层
1)会话层:会话层向传输层提供端到端服务,向表示层或会话用户提供会话服务。就像它的名字一样,会话层建立会话关系,并保持会话过程的畅通,决定通信是否被中断及下次通信从何处重新开始发送。例如,某个用户登录到一个远程系统,并与之交换信息,会话层管理这一进程,控制哪一方有权发送信息,哪一方必须接收信息,这其实是一种同步机制。
会话层也处理差错恢复。例如,若一个用户正在网络上发送一个大文件的内容,而网络突然发生故障,当网络恢复工作时,用户是否必须从该文件的起始处开始重传呢?回答是否定的,因为会话层允许用户在一个长的信息流中插入检查点,只需将最后一个检查点以后丢弃的数据重传即可。
如果传输在低层偶尔中断,则会话层将努力重新建立通信。例如,当用户通过拨号向 ISP(因特网服务提供商)请求连接到因特网时,ISP服务器上的会话层向用户的PC上的会话层进行协商连接。若用户的电话线偶然从墙上插孔脱落,则终端机上的会话层会检测到连接中断并重新发起连接。
2)表示层:表示层负责将应用层的信息“表示”成一种格式,让对端设备能够正确识别,它主要关注传输信息的语义和语法。在表示层,数据将按照某种一致同意的方法对数据进行编码,以便使用相同表示层协议的计算机能互相识别数据。例如,一幅图像可以表示为JPEG格式,也可以表示为BMP格式,如果对方程序不识别本方的表示方法,就无法正确显示这幅图片。
表示层还负责数据的加密和压缩。加密(Encryption)是对数据编码进行一定的转换,让未授权的用户不能截取或阅读的过程。如果有人未授权时就截取了数据,看到的将是加过密的数据。压缩(Compression)是指在保持数据原意的基础上减少信息的比特数。如果传输很昂贵,则压缩可显著地降低费用,并提高单位时间发送的信息量。
3)应用层:应用层是OSI的最高层,它直接与用户和应用程序打交道,负责对软件提供接口以使程序能使用网络服务。这里的网络服务包括文件传输、文件管理、电子邮件的消息处理等。必须强调的是,应用层并不等同于一个应用程序。例如,在网络上发送电子邮件,用户的请求就是通过应用层传输到网络的。
1.2.2 TCP/IP参考模型
1.TCP/IP参考模型的产生
OSI 参考模型的诞生为清晰地理解互联网络、开发网络产品和设计网络等带来了极大的方便。但是OSI参考模型过于复杂,难以完全实现;OSI 参考模型的各层功能具有一定的重复性,效率较低;再加上OSI参考模型提出时,TCP/IP已逐渐占据主导地位,因此OSI 参考模型并没有流行开来,也从来没有存在一种完全遵守OSI参考模型的协议族。
TCP/IP起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,20世纪90年代已发展成为计算机之间最常用的网络协议。它是一个真正的开放系统,因为协议族的定义及其多种实现可以免费或花很少的钱。它已成为“全球互联网”或“因特网”的基础协议族。
TCP/IP的特点:开放的协议标准,可以免费使用,并且独立于特定的计算机硬件与操作系统;独立于特定的网络硬件,可以运作在局域网、广域网及互联网中;统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址;标准化的高层协议,可以提供多种可靠的用户服务。
2.TCP/IP参考模型的层次
与OSI参考模型一样,TCP/IP也采用层次化结构,每一层负责不同的通信功能。TCP/IP简化了层次设计,将网络划分为4层,分别是应用层、传输层、网络层和网络接口层。实际上,TCP/IP参考模型与OSI参考模型是有一定对应关系的,如图1-3所示。
图1-3 OSI参考模型与TCP/IP模型对应的层次结构
(1)网络接口层
TCP/IP本身对网络层之下并没有严格的描述,但是TCP/IP主机必须使用某种下层协议连接到网络,以便进行通信。TCP/IP必须能运行在多种下层协议上,以便实现端到端、与链路无关的网络通信。TCP/IP的网络接口层正是负责处理与传输介质相关的细节,为上层提供一致的网络接口。因此,TCP/IP模型的网络接口层大体对应于OSI参考模型的数据链路层和物理层,通常包括计算机和网络设备的接口驱动程序与网络接口卡等。
TCP/IP可以基于大部分局域网或广域网技术运行,这些协议可以划分到网络接口层中。
典型的网络接口层技术包括常见的以太网、FDDI(Fiber Distributed Data Interface,光纤分布式数据接口)和令牌环(Token Ring)等局域网技术,用于串行连接的SLIP(Serial Line IP,串行线路IP)、HDLC(High-level Data Link Control,高级数据链路控制)和PPP (Point-to-Point Protocol,点到点协议)等技术,以及常见的X.25、帧中继(Frame Relay)和ATM(Asynchronous Transfer Mode,异步传输模式)等分组交换技术。
(2)网络层
网络层是TCP/IP体系的关键部分。它的主要功能是使主机能够将信息发往任何网络并传送到正确的目的主机。
基于这些要求,网络层定义了包格式及其协议——IP(Internet Protocol,网际协议)。网络层使用IP地址(IP address)标识网络结点;使用路由协议生成路由信息,并且根据这些路由信息实现包的转发,使包能够准确地传送到目的地;使用ICMP(Internet Control Message Protocol,互联网控制消息协议)、IGMP(Internet Group Management Protocal,互联网组管理协议)这样的协议协助管理网络。TCP/IP 网络层在功能上与OSI网络层极为相似。
ICMP通常也被当作一个网络层协议。ICMP通过一套预定义的消息在互联网上传递 IP的相关信息,从而对IP网络提供管理控制功能。ICMP的一个典型应用是探测 IP网络的可达性。
(3)传输层
TCP/IP的传输层位于应用层和网络层之间,主要负责为两台主机上的应用程序提供端到端的连续,使源、目的端主机上的对等实体可以进行会话。TCP/IP的传输层协议主要包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)。TCP/IP的主要作用如下。
1)提供面向连接或无连接的服务。传输层协议定义了通信两端点之间是否需要建立可靠的连接关系。TCP是面向连接的,而UDP是无连接的。
2)维护连接状态。TCP在通信前建立连接关系,传输层协议必须在其数据库中记录这种连接关系,并且通过某种机制维护连接关系,及时发现连接故障等。
3)对应用层数据进行分段和封装。应用层数据往往是大块的或持续的数据流,而网络只能发送长度有限的数据包,传输层协议必须在传输应用层数据之前将其划分成合适尺寸的段,再交给IP发送。
4)实现多路复用。一个IP地址可以标识一个主机,一对“源-目的”IP地址可以标识一对主机的通信关系,而一个主机上却可能同时有多个程序访问网络,因此TCP/UDP采用端口号(Port Number)来标识这些上层的应用程序,从而使这些程序可以复用网络通道。
5)可靠地传输数据。数据在跨网络的传输过程中可能出现错误、丢失、乱序等种种问题,传输层协议必须能够检测并更正这些问题。TCP 通过序列号与校验和等机制检查数据传输中发生的错误,并可以重新传递出错的数据。而 UDP提供非可靠性数据传输,数据传输的可靠性由应用层保证。
6)执行流量控制。当发送方的发送速率超过接收方的接收速率时,或者当资源不足以支持数据的处理时,传输层负责将流量控制在合理的水平;反之,当资源允许时,传输层可以放开流量,使其增加到适当的水平。通过流量控制可防止网络拥塞造成数据包的丢失。TCP 通过滑动窗口机制对端到端流量进行控制。
(4)应用层
TCP/IP模型没有单独的会话层和表示层,其功能融合在TCP/IP应用层中。应用层直接与用户和应用程序打交道,负责对软件提供接口以便程序能使用网络服务。这里的网络服务包括文件传输、文件管理、电子邮件的消息处理等。典型的应用层协议包括 Telnet、FTP、SMTP、SNMP等。
Telnet 的名字具有双重含义,既指这种应用,也指协议自身。Telnet 给用户提供了一种通过联网的终端登录远程服务器的方式。
FTP(File Transfer Protocol,文件传输协议)是用于文件传输的 Internet 标准。FTP支持文本文件(如ASCII、二进制等)和面向字节流的文件结构。FTP使用传输层协议TCP在支持FTP的终端系统间执行文件传输,因此FTP被认为提供了可靠的面向连接的文件传输能力,适合于远距离、可靠性较差的线路上的文件传输。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)也用于文件传输。使用UDP提供服务,被认为是不可靠的、无连接的。TFTP 通常用于可靠的局域网内部的文件传输。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)支持文本邮件的 Internet传输。所有的操作系统都具有使用SMTP收发电子邮件的客户端程序,绝大多数Internet服务提供者使用SMTP作为其输出邮件服务的协议。SMTP可在各种网络环境下进行电子邮件信息的传输,实际上,SMTP 真正关心的不是邮件如何被传送,而是邮件是否顺利到达目的地。SMTP具有健壮的邮件处理特性,这种特性允许邮件依据一定标准自动路由。SMTP具有当邮件地址不存在时立即通知用户的功能,并且具有把在一定时间内不可传输的邮件返回发送方的特点。
SNMP(Simple Network Management Protocol,简单网络管理协议)负责网络设备监控和维护,支持安全管理、性能管理等。
HTTP(HyperText Transfer Protocol,超文本传输协议)是WWW的基础,Internet上的数据主要通过HTTP进行传输。