1、第第2章章 计算机网络体系与协议计算机网络体系与协议 2.1 计算机网络体系概述 2.2 OSI体系结构模型 2.3 TCP/IP体系结构模型 2.4 其他网络协议 本章小结 练习与思考 2.1 计算机网络体系概述计算机网络体系概述计算机网络通过不同的通信介质和通信设备将处在不同地理位置的计算机系统连起来,使人们不管在何时何地都能通过网络实现资源的共享和信息的交换,它已逐渐成为人们日常生活和工作中的重要组成部分。计算机网络起源于20世纪60年代,最初为美国军方研究所用,随着高等院校以及各个科研机构的介入,人们开始认识到计算机网络对科学研究的重要价值,从而计算机网络技术也得到了发展和完善,现在已
2、被广泛应用于各个领域。为了将地理位置分布各异的计算机通信结点连接起来,首先要有实际的连通信道,然后才能进行数据的传输。但是仅有物理上的连接是不够的,因为计算机网络是一个非常庞大和复杂的系统。在这个庞大的系统下,物理信道的连接方式各不相同,它们可以是不同的传输介质、不同厂商的通信设备,以及不同的数据传输技术。如果没有一种被大家所共同遵循的约定或规则,数据在计算机网络上的传输将会非常混乱,而通信双方将无法正确获取和理解通信数据的正确含义。另外,计算机网络还必须为计算机之间的通信提供各种公平、健全、高性能以及低成本的服务。以上因素都决定了计算机网络需要网络软件(网络协议)系统的支持,并且这些网络软件
3、也应具有很高的复杂性。也正是有了网络软件,这些不同的异构通信系统才真正实现了互联。网络软件系统无疑是一个功能庞大而又极其复杂的软件系统。为了实现这样的软件系统,网络设计者研究并制定了网络体系结构(Network Architecture)。网络的体系结构用于指导网络软件的设计和实现,当网络体系结构被设计出来后,就使得某个公司所生产的网络设备和开发的网络软件很容易形成特定结构的网络。如果网络体系结构具有通用性和标准性,那么各个公司的网络设备根据这样的网络体系就能很容易地实现互联。事实上,OSI(Open System Interconnection)参考模型和TCP/IP(Transfer Co
4、ntrol Protocol/Internet Protocol)参考模型正是这样的两个被广泛使用的网络体系模型。2.2 OSI体系结构模型体系结构模型OSI即开放系统互连,其基本参考模型是1981年在国际标准化组织(ISO)的建议下,为了解决不同网络系统的互联而提出的模型。在1984年,形成了ISO 7498国际标准(称为OSI/RM),对应于我国的国标GB 9387。“开放系统”的含义是指任何异构的网络系统,只要共同遵守OSI的协议标准,就能够实现通信。OSI参考模型对网络进行了分层,并对各层的协议进行了标准化规范,其中所包含的详细信息用于帮助将不同厂商的网络硬件设备和网络软件连接起来。2
5、.2.1 OSI参考模型的表示参考模型的表示OSI参考模型是网络体系结构的一种描述模型,它属于逻辑层面上的参考模型。实际上,OSI参考模型并不构成网络体系结构的全部,因为它并没有对协议层间的接口和其所提供的服务进行完整的描述。OSI参考模型将计算机网络按功能划分为七层,每一层都代表了同层的对等实体的通信协议结构,如图2-1所示。图2-1 OSI参考模型将OSI参考模型划分为七层协议主要基于以下原则:(1)各层层次划分抽象,每层协议应该在逻辑上具备明显的区分度;(2)各协议层功能定义明确,而且应该有助于制定网络协议的标准化;(3)各协议层边界的划分应尽量减少层间通信量;(4)各协议层次的划分应该
6、适中,以避免层次划分太多而增加复杂性,而且各层的功能应尽量单一。在OSI参考模型中,各层协议之间并不是孤立的,它们在功能和实现上都存在着相互依存的关系,这和在网络体系结构中是一致的。邻接的协议层之间是紧密地联系在一起的,下一层的服务提供者所能提供的服务,将直接作用和影响上一层服务使用者所能完成的通信功能,在具体实现上更是要完成数据在邻接层间的传输。2.2.2 OSI参考模型的协议层分析参考模型的协议层分析1物理层物理层物理层处于OSI参考模型的最下层,它主要涉及对实际比特数据流的传输。物理层解决包括传输介质接口、数据信号编码、电压表示、接头尺寸以及和比特数据流传输相关的各种内容。物理层有四个基
7、本的特性:机械特性、电气特性、功能特性和过程特性。机械特性规定电缆与网络接口卡的接头类型、形状、几何尺寸、插脚个数、引线排列方式以及引脚的连接方法等特征。电气特性规定传输过程中的信号电平、传输速率、电缆长度和匹配阻抗等内容。功能特性规定信道连接双方每对连线的具体作用和用法,比如数据线、控制线、接地线。过程特性则对通信双方的通信步骤或通信时序进行规定。物理层的各种协议规范是为了让通信发送设备实现将0/1的数据串通过物理传输介质传送到接收方。同样,也要让数据接收设备能从物理传输介质上获得这些数据串。在物理层上,比特数据流进行的是“透明”的传输过程。在比特流的传输过程中,物理层的设备并不关心也不知道
8、这些比特流实际所代表的数据意义(比如代表控制信息还是数据信息)。设备唯一需要做的就是完成这些比特流的传输,甚至不负责数据是否被正确传输到目的地。2数据链路层数据链路层数据链路层的功能是在物理层的比特流传输的基础上,加强数据传输的可靠性,也就是要在不可靠的物理链路之上建立可靠的数据传输。数据链路层负责实现在通信结点之间建立起数据链路的连接,比单纯的物理层传输增加了差错控制和比特数据流的处理功能。数据链路层将比特数据流组合成数据块,这种数据块在数据链路层中称为数据帧(Data Frame)。数据帧是数据链路层所处理的基本数据单位,数据发送方将要传输的数据进行分装,形成多个数据帧,一个数据帧往往包含
9、了几百或几千字节。这些数据帧在数据链路层的控制之下进行传输。数据链路层分为两个子层:MAC(Media Access Control,介质访问控制)层和LLC(Logical Link Control,逻辑链路控制)层。MAC层控制所有与传输介质有关的内容,并为LLC层提供接口服务。这样即使物理介质发生改变,也不会影响其上的高层协议。LLC层则向更高层的协议提供逻辑接口服务,比如为网络层提供数据报、虚电路控制以及多路复用技术等。3网络层网络层在OSI参考模型中,最底下的三层也被称为通信子网,主要实现数据通信的功能。网络层(Network Layer)是这三层中最为复杂和关键的一层。网络层处于数
10、据链路层和传输层之间,它的功能是实现通信结点之间端到端的数据传输。正是在网络层上,异构的物理网络设备可以实现互联。路由选择、拥塞控制以及流量控制是网络层中的重要技术。网络层所实现的通信结点之间端到端传输的含义不同于数据链路层上的帧传输。通信结点的源发送端到目的接收端之间会经过许多中间结点,网络层实现把这些数据分组独立地通过中间结点向目的地传输的功能。4传输层传输层传输层是用户资源子网和通信子网之间的桥梁。传输层彻底屏蔽了通信子网中的传输细节,实现了用户资源子网中通信结点间逻辑层面的通信。传输层负责管理发送端和接收端之间端口到端口的数据交换,保证数据被完整无误地传输。传输层从更上一层的会话层接收
11、用户数据,完成传输地址到网络地址的映射,并将数据转换为通信数据子网进行传输的数据格式,然后交给通信子网进行发送。传输层同时还提供序列控制、流控制和错误的检测恢复等功能。5会话层会话层会话层提供会话管理的功能,并允许在计算机上的不同用户之间建立会话关系。会话层建立在下层,即传输层提供的服务基础上,负责打开或者关闭会话。会话层在连接出现错误时试图进行恢复。如果会话层检测到一个连接长时间没有被使用,它即会关闭连接并在需要使用时再重新打开连接。这个连接的控制过程对于更上层的协议是完全透明的。6表示层表示层表示层负责对面向连接或无连接传输中的数据信息进行处理。这一点和其他各层的协议很不相同,表示层关心的
12、是数据信息的语法和语义,而其他各层协议关心的是对数据的传输控制。表示层中的一个典型示例就是标准的数据编码。传输的数据是有其内在意义的,它要表示一定的逻辑信息。不同通信结点对于数据的组织方式有可能并不相同,这就像中国人把姓放在前面,而西方人把姓放在后面一样。不同的计算机可能使用不同的代码来表示字符串,比如ASCII码和Unicode码。标准的数据编码就是把这些不同的编码表示统一起来,将机器的内部编码转换成标准的网络编码在网络上传输。这样,接收端的机器就能理解对方数据编码的含义,而只需再将标准的网络编码转换成自己的编码格式就可以进行内部的处理了。表示层实际上就是对数据进行抽象的处理,制定出数据的语
13、法表示和语义的转换。对于两个数据交换实体来说,它们之间要正确通信就必须对它们所使用的抽象语法集合进行商定。协商使用的抽象语法规则将确定数据的含义和表示的数据值,而在抽象语法规则商定之后的传输过程中将不再关心对数据的表示。在传输过程中对数据的表示和数据值含义的保持将由表示层负责,它会控制通信协议的转换、数据的翻译以及字符的转换等各种工作。另外,在表示层上还有两个比较重要的功能:数据的加密(用以解决数据安全问题)和对数据的冗余压缩(减少网络数据传输数据量)。7应用层应用层 应用层位于OSI参考模型的顶层,其主要功能是通过网络应用程序直接为用户提供网络服务。在OSI参考模型中,应用层的逻辑抽象性最高
14、,在这一层上开发了大量的常用协议,这些协议被各种网络应用程序实现以完成不同的网络服务功能。如文件的传输FTP、TFTP,远程访问控制TELNET,超文本传输服务HTTP等,电子邮件服务SMTP等。2.2.3 OSI参考模型的特点参考模型的特点从上面的分层描述中可以看出,OSI参考模型是一个设计详尽和完整的体系结构,每一层协议功能的划分和相关的服务都有很细致的定义,是一个结构化非常好的网络体系结构模型。因此,OSI参考模型主要具有以下特点:(1)标准化程度高。OSI参考模型是由国际化标准组织制定的,目的是为了提供异构网络的开放互联标准,以促进不同结构网络的互联,因此标准化程度很高。(2)层次划分
15、细致,结构化程度高。OSI参考模型的七层架构将每层协议的组织和实现功能都划分得很独立,层间耦合程度低,因此结构化程度很高,即使某层协议发生改动,对整个体系结构的影响也很小。(3)兼容性好。OSI参考模型支持开放互联,能实现多种平台和网路标准的异构系统的互联。(4)扩充性强。OSI参考系统采用了可变长地址的定义,能够支持大型的网络架构而不会有网络地址耗尽的问题。2.3 TCP/IP体系结构模型体系结构模型在网络体系结构模型中,TCP/IP是另外一个非常重要的体系结构模型,也是我们实际生活中接触最多的应用模型。TCP/IP协议是互联网实现的技术基础。最初的TCP/IP协议的研究由美国国防部DOD在
16、1967年发起,目的是为了发展军用计算机通信网络技术,1969年形成了ARPANET,到1978年开始正式使用TCP/IP这一名称。随着IAB(Internet Architecture Board)下的非盈利组织IETF(Internet Engineering Task Force)的介入,开发出了现在正在使用的大部分协议,也使得TCP/IP协议成为网络结点接入Internet的网络协议。TCP/IP协议在RFC(Reconstruction Finance Corporation)中经过设计、讨论和使用后,被IETF确认为最终的标准文档,这些所有的文档都在网上公开并可以免费获取。2.3.
17、1 TCP/IP参考模型的表示参考模型的表示TCP/IP参考模型的体系结构和OSI参考模型并不是完全匹配,并且对于TCP/IP层状模型的描述也不是非常统一。因为和OSI参考模型不一样,TCP/IP的模型实际上并不存在,但由于其协议被广泛使用,因而形成了事实上的标准。将这些协议按功能层进行组织,就形成了与OSI参考模型类似的TCP/IP层状参考模型。TCP/IP参考模型的一种划分是将网络体系结构分为五层,每一层结构都代表了同层的对等实体间的通信协议结构。TCP/IP参考模型中没有对协议层间的接口进行详细设定。图2-2是按五层体系结构模型对TCP/IP的一种划分方式。图2-2 TCP/IP参考模型
18、2.3.2 TCP/IP参考模型的协议层分析参考模型的协议层分析参照图2-2给出的TCP/IP参考模型,以下将按由低到高的次序对各层的功能和含义进行详细的介绍。1物理层物理层物理层主要是指网络接口设备,它是TCP/IP模型中的最底层,主要负责将上层协议的数据帧通过网络设备发送到网络,或者接收从网络到达的数据帧,再转交给上一层协议进行处理。2数据链路层数据链路层TCP/IP模型中的数据链路层也称为网络接口层(Network Interface),它结合了OSI参考模型中的物理层和数据链路层的功能,定义了各种介质的物理连接特性,及其在不同介质上的信息帧格式。数据链路层涵盖了各种物理介质层网络技术,
19、可以支持任何一种数据链路技术,如以太网、令牌环、ATM、FDDI、帧中继等。3网络层网络层网络层是TCP/IP参考模型中非常重要的协议层,承担了路由和地址处理等核心的功能。在这一层,将实现主机之间的分组数据独立传送。在网络层上正式地对分组的格式和协议进行了定义,也就是我们常说的IP协议。在IP协议的基础上能够实现将IP分组发送到任何它所期望去的地方。网络层负责提供信息,使得网络访问能够把帧发送到本地的目的主机或路由器。它包括了地址解析协议(ARP)和反向地址解析协议(RARP)。网络层具有路由能力,使得数据可以经过互联网到达目的网络,故这层包括路由选择协议(RIP),RIP协议可以决定如何把数
20、据包发送到目的地。网络层还可以让主机交换网络本身的信息,实现这种功能的协议叫做网际控制报文协议(ICMP)。本层还有支持组播的网际组管理协议(IGMP)。4传输层传输层传输层是计算机网络体系结构中很重要的一层,它的重要性主要体现在其基本功能是为信源结点和目的结点间的通信提供端到端的数据传输,而通信子网只能提供相邻结点之间的点到点传输。在这里,通信子网在TCP/IP体系结构中是指IP以下的各层。这种从“点到点”传输到“端到端”传输体现了服务质量的一个飞跃。TCP/IP的传输层对应于OSI的会话层和传输层。它的功能包括:格式化信息流(将数据流分段)和提供可靠传输。它主要有两个协议:传输控制协议(T
21、CP)和用户数据报协议(UDP)。TCP协议是一个面向连接的协议,它提供有序、无差错的字节流传输服务。因为是面向连接的方式,因此,TCP传输也要经过连接建立、数据传输和拆除连接的过程。UDP协议则是一个无连接的协议。UDP由IP数据报直接进行传输,UDP协议在接收端不对接收的报文进行错误检查,也不反馈报文的确认信息,发送方也没有数据重传的机制。因此,它是一种无连接、不可靠的数据传输服务。但是UDP传输数据时,不用创建连接或对连接进行维护,因此有较好的处理速度,比较适合一次性的快速数据传输的场合,特别是在多媒体传输中,适用于声音、图像等要求较小的延迟而可靠性相对较低的应用。5应用层应用层应用层位
22、于TCP/IP参考模型的最上层,它在传输层提供的服务基础上开发了大量的协议和应用程序。几乎各种不同的TCP/IP模型的实现都会提供下面这些大家所熟知的网络应用程序:HTTP:超文本传输协议;FTP/TFTP:文件/小文件传输协议;SMTP:简单邮件传输协议;TELNET:远程登录协议;SNMP:简单网络管理协议。2.3.3 TCP/IP协议簇协议簇TCP/IP实际上是指作用于计算机通信的一组协议,这组协议通常被称为TCP/IP协议簇。TCP/IP协议簇包括了地址解析协议(ARP)、反向地址解析协议(RARP)、Internet协议(IP)、网际控制报文协议(ICMP)、用户数据报协议(UDP)
23、、传输控制协议(TCP)、超文本传输协议(HTTP)、文件传输协议(FTP)、简单邮件传输协议(SMTP)、域名服务协议(DNS)、远程登录协议(TELNET)等众多的协议。协议簇的实现是以协议报文格式为基础,完成对数据的交换和传输的。图2-3是对TCP/IP协议簇层次结构的简单描述。1IP协议协议在TCP/IP协议簇中,最重要的协议层就是网络层。从图2-3可以看出,在TCP/IP模型的网络层上,可以实现对各种不同物理网络的支持。网络层上对等实体之间的数据交换是以IP数据报文为基础,当不同物理网络的通信结点进行通信时,它们在网络层实现了对数据分组的统一IP协议格式,因此可以实现数据信息的交换。
24、网络层的重要功能是实现IP分组报文的存储转发,IP分组报文是独立的被处理单位,网络层通过对IP分组报文的报头信息进行分析,可以得到IP报文分组的目的地址信息。因此,中间路由结点可以通过查找IP分组报文目标地址路由实现IP分组报文的下站传输线路的选择,通过这种方式最终将IP分组报文投递到目标地址。图2-3 TCP/IP协议簇IP协议在TCP/IP协议簇中占有非常重要的地位,正是在IP协议的基础上才能够实现Internet的互联。IP分组报文由报头信息部分和正文部分组成,图2-4是IP分组报文的格式信息。图2-4 IP报文格式(1)版本:表示此报文采用哪种版本的协议进行解析,这里只有Ipv4和Ip
25、v6两种。(2)首部长度:指的是首部占32比特的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为64个字节。普通IP数据报(没有任何选择项)字段的值是5。(3)服务类型(TOS):包括一个3比特的优先权子字段(现在已被忽略)、4比特的TOS子字段和1比特未用位(此位必须置0)。4比特的TOS分别代表最小时延、最大吞吐量、最高可靠性和最小费用。这4比特中通常只有一位置1,如果这4比特均为0,那么就意味着是一般服务。(4)总长度:指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达
26、65535字节。(5)标识:唯一标识一个数据报。如果数据报需要分段,则每个分段的标识符都一样。当目的主机收到具有相同标识符的数据报分段时,认为它们来自同一个完整的数据报,并据此对其进行重组工作。(6)标志:其长度为3位,其中最高位未定义,设定为0,其余两位分别是“不可分段位”(DF)和“更多分段位”(MF),用来控制IP数据报的分段情况,其位的具体含义为:未定义位设定为0;DF位,0:可分段,1:不可分段;MF位,0:最后分段,1:更多分段。(7)偏移量:其长度为13位,当数据报进行分段时,以8个字节为单位,指出该分段的第一个数据字在原始数据报中的偏移位置。(8)生存时间:用于设置数据报可以经
27、过的最多路由器数,它指定了数据报的生存时间。生存时间字段的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。(9)传输层协议类型:其长度为8位,指明接收该数据报的高层协议,例如,1表示ICMP报文,6表示TCP报文,17表示UDP报文。(10)IP头校验和:其长度为16位,用于报头的校验,以保证IP报头的完整性。(11)源IP地址和目的IP地址:其长度均为32位,指明发送该数据报的源主机的IP地址和接收该数据报的目的主机的IP地址。(12)任选项:是数据报中的一个可变长的可选信息。目前,这些任选
28、项定义如下:安全和处理限制(用于军事领域,详细内容参见RFC 1108)。记录路径(让每个路由器都记下它的IP地址)。时间戳(让每个路由器都记下它的IP地址和时间)。宽松的源站选路(为数据报指定一系列必须经过的IP地址)。严格的源站选路(与宽松的源站选路类似,但是要求只能经过这些指定的地址,不能经过其他的地址)。IP地址可以将不同的物理地址统一起来,但这只是一种现象,其真正的工作是在各种物理网络技术上覆盖了一层软件(IP协议及下面要谈到的ARP、RARP协议),将物理地址隐藏起来。IP层以上各层使用的都是统一的IP地址格式,但事实上对于各种物理地址并不做任何改动,在物理层内部,依然要使用各自原
29、来的物理地址。这样,Internet中存在两种地址(IP和物理地址),二者之间必须建立映射关系,从而达到相互转换的目的。2TCP协议协议在对上述的IP协议进行分析时,我们所讲的网络层是为更上层协议提供数据传输服务的。网络层可以为上层的传输层提供两种不同的服务类型:无连接的用户数据报服务UDP和面向连接的传输控制服务TCP。其中,TCP是网络层提供的有效的和可靠的面向连接服务。在IP分组报文中,提供TCP服务报文的协议字段标记为TCP协议。1)TCP数据格式TCP数据格式如图2-5所示。(1)源端口号和目的端口号:标识接收端和发送端的应用进程。这两个值加上IP首部中的源IP地址和目的IP地址唯一
30、地确定一个TCP连接。(2)序号:所发送的数据的第一个字节的序号,用以标识从TCP发端向TCP收端发送的数据字节流。(3)确认序号:期望收到的下一个消息第一个字节的序号,即确认端所期望接收的下一个序号。只有在标识字段中的确认位设置为1时,此序号才有效。(4)首部长度:以32比特为计算单位的TCP段首部的长度。图2-5 TCP数据格式(5)标识位:有以下六个标识(下面说明的含义是指设置为1时的意义,为0时的意义相反)。紧急位(URG):紧急指针有效。确认位(ACK):表示确认序号字段有意义。急迫位(PSH):表示请求接收端的传输实体尽快将报文字段交付应用层。重建位(RST):表示出现严重差错,必
31、须重建连接。同步位(SYN):SYN=1,ACK=0,表示连接请求消息;SYN=1,ACK=1,表示同意建立连接消息。终止位(FIN):表示数据已发送完,要求释放连接。(6)窗口大小:滑动窗口协议中的窗口大小。(7)校验和:对整个TCP首部和TCP数据部分的校验。(8)紧急指针:紧急指针是一个正的偏移量,与序号字段的值相加等于该数据的最后一个字节的序号。我们已经知道,IP协议以存储转发方式传输数据,这样的传输是不可靠的,那么,TCP协议是怎样实现提供可靠的面向连接的服务的呢?从前面介绍的知识大家一定都想到了,网络层为TCP服务做了更多的工作,包括建立虚连接,对IP数据分组进行编号传输,以及分组
32、的接收确认和差错控制等。2)TCP三次握手机制TCP协议在实现端到端的连接时使用了三次握手机制。按一般的想法,连接的建立只需要经过客户端请求(T-CONNECT Request)、服务器端指示(T-CONNECT Indication)、服务器端响应(T-CONNECT Response)、客户端确认(T-CONNECT Confirm)两次握手四个步骤,如图2-6所示。图2-6 两次握手四个步骤假如分组丢失将如何处理呢?通常的做法是使用超时重传机制,客户端发出一连接请求,同时启动一个定时器。一旦定时器超时,客户再次发出连接请求并再启动定时器。直到成功建立连接,或重传次数到达一定限度时认为连接
33、不可建立而放弃。最难解决的问题是请求根本没有丢失,而是在子网中存储起来了,过一段时间后又突然出现在服务器端,即所谓的延迟重复问题。延迟重复会导致重复连接和重复处理,这在很多应用系统(如订票、银行系统)中是绝对不能出现的。三次握手的机制就是为了消除重复连接的问题。三次握手方法首先要求对本次连接的所有报文进行编号,取一个随机值作为初始序号。由于序号域足够长,可以保证序号循环一周时使用同一序号的旧报文早已传输完毕,网络上也就不会出现关于同一连接、同一序号的两个不同报文。在三次握手法的第一次中,A机向B机发出连接请求(简称CR),其中包含A机端的初始报文序号(比如X)。第二次,B机收到CR后,发回连接
34、确认(CC),其中包含B机端的初始报文序号(比如Y),以及B机对A机的确认。第三次,A机向B机发送X序号数据,其中包含对B机初始序号Y的确认。三次握手机制如图2-7所示。图2-7 三次握手机制示意图由于A机在本端对报文进行编号,因此它知道哪些序号是过时的。假如B机收到一个过时连接请求CR(初始序号=X1),并确认之。A机则会判断出CC(确认=X1)是过时的,将发送一个拒绝报文REJ(确认=Y),表示对来自B机的CC(初始序号=Y,确认=X1)的拒绝。于是便不会在旧的连接请求上建立错误连接了。3)TCP的滑动窗口与流控在面向连接的传输过程中,发送方每发出一个分组都需要得到接收方的确认。面向连接数
35、据传输的最简单协议是:每发一个分组,等待确认;收到确认后再发下一个分组。这就是简单停止等待协议,其最大的缺点是效率太低。与上述简单停止等待协议相对的另一个极端是无确认数据报传输。发送方可以一味地向网络注入数据,而不管网络是否拥塞,对方是否收到。当然这种方式的可靠性很难保证。TCP采用的滑动窗口协议是对上述两者的折中处理,它既能充分利用连接所提供的网络能力,又能保证连接的可靠性。滑动窗口内含一组顺序排列的报文序号。在发送端,窗口内的报文序号对应的报文是可以连续发送的,各报文按序发送出去,但确认不一定按序返回。一旦窗口前面部分报文得到确认,则窗口向前滑动相应位置,落入窗口的后续报文又可连续发送。一
36、个窗口大小为4的发送滑动窗口如图2-8所示。其中,报文1、2、3已发送且确认;报文4、5已发送,但至少4未确认。假如5先确认,4后确认,以后报文未确认,则窗口一次向前滑动两个位置。4确认之前,窗口是不能滑动的,4确认后窗口立即滑动。图2-8 发送滑动窗口示意图在接收端,窗口内的序号对应于允许接收的帧。窗口前的帧是已收到且发回确认的帧,是不允许接收的,窗口后的帧要等待窗口滑动后才能接收。滑动窗口协议的一个重要用途是流量控制(流控),网关和接收端可以通过某种方式(比如ICMP)通知发送方改变其窗口大小,以限制发送方报文注入网络的速度,达到流控的目的。4)TCP的确认与超时重传TCP协议保证数据有效
37、性的重要措施是确认与重传机制。TCP流的特点是无结构的字节流,流中的数据是一个个字节构成的序列,而无任何可供解释的结构,这一特点在TCP的基本传输单元段(segment)格式中体现为段不定长。可变长TCP段给确认与超时重传机制带来的结果是所谓的“累计确认”。TCP确认针对流中的字节,而不是段。接收方确认已正确收到的、最长的、连续的流前部,每个确认指出下一个希望接收的字节(比流前部字节数大1的位置)。影响确认超时重传最关键的因素是定时时间片的大小。网间网环境中,要确定合适的定时时间片是一件相当困难的事情。从发出数据到收到确认所需的往返时间(Round Trip Time,RTT)呈动态变化,很难
38、把握。为适应上述情况,TCP采用一种适应性重传算法,其大致思想是:TCP监视每一条连接的性能,由此推算出合适的时间片,当连接性能发生变化时,TCP随即改变时间片值。3UDP协议协议1)UDP协议数据格式UDP协议数据格式如图2-9所示。图2-9 UDP协议数据格式源端口号和目的端口号:用于标识接收端和发送端的应用进程。报文长度:包括UDP报头和数据在内的报文长度值,以字节为单位,最小为8。校验和:计算对象包括伪协议头、UDP报头和数据。校验和为可选字段,如果该字段设置为0,则表示发送者没有为该UDP数据报提供校验和。伪协议头主要包含源IP地址、目的IP地址、协议号和UDP报长等来自IP报头的字
39、段,对其进行校验主要用于检验UDP数据报是否正确传送到了目的地。2)UDP的应用UDP协议建立在IP协议之上,同IP协议一样提供无连接数据报传输。相对于IP协议,它唯一增加的功能是提供协议端口,以保证进程通信。许多基于UDP的应用程序在高可靠性、低延迟的局域网上运行的很好,而一旦到了通信子网QOS很低的网间网环境下,就可能根本不能运行。原因就在于UDP不可靠,而这些程序本身又没有做可靠性处理。因此,基于UDP的应用程序在不可靠子网上必须自己解决可靠性(诸如报文丢失、重复、失序和流控等)问题。既然UDP如此不可靠,为何TCP/IP还要采纳它?最主要的原因在于UDP的高效率。在实际应用中,UDP往
40、往面向只需少量报文交互的应用,假如为此而建立连接和撤除连接,开销是相当大的。4ARP和和RARP协议协议1)ARP协议ARP(Address Resolution Protocol)是一种动态联编的标准,用于从IP地址到物理地址的映射。其原理是:主机A不知道主机B的MAC地址,发出一个含有主机B的IP地址的ARP请求。网内所有主机均收到ARP请求,将其中的IP地址与自己的比较,只有主机B的相同,向主机A发出一个含有自己MAC地址的ARP响应,这就是所谓的动态联编。主机A将主机B的IP及MAC地址对写入ARP Cache,即可通过LAN向主机B发数据包。Cache是在使用ARP的主机中保留的一个
41、专用的高速缓存,存放最近获得的IP-MAC地址联编。欲发送报文时,首先在Cache中查找IP-MAC地址联编,找不到再用ARP进行地址解析,从而大大地提高了ARP的效率。为进一步提高效率,ARP还采用了如下措施:在ARP请求报文中放入信源机的IP-MAC地址联编,以防止信宿机紧接着为解析信源机的物理地址再进行一次动态联编。信源机在广播自己的地址联编时,网上的所有主机都可以将它存入自己的高速缓存。新机入网时,令其主动广播地址联编,以免其他主机对它运行ARP。在Windows系统下,可使用arp a命令观察主机的ARP缓存表。注意,此表是动态的,可以使用ping命令多ping几台局域网中的其他主机
42、,再使用arp a命令观察。2)RARP协议RARP(Reverse Address Resolution Protocol),用于从物理地址到IP地址的映射。在网络中有一类站点叫无盘机,就是不带硬盘的计算机。RARP协议使无盘机或没有IP地址的主机能从服务器上获得自己的IP地址。RARP运作需要服务器上有一个很大的物理地址IP地址映射数据库,并能够响应客户端的请求。当一个RARP server收到一个客户端的请求后,它会在自己的硬件地址IP地址映射数据库中查找,如果找到了,就向客户端发出响应,响应中包含有客户端的IP地址;如果找不到,则摒弃请求。3)ARP/RARP帧格式ARP只用于解析对方
43、的MAC地址;RARP除用于解析本机的IP地址外,还可用于解析第三方的IP地址。两者的帧格式完全相同,如图2-10所示。图2-10 ARP/RARP帧格式图2-10中的数据以字节为单位,其各域的意义如下:(1)硬件类型:指明硬件接口类型,若为以太网,则该值为1。(2)协议类型:指明发送者使用ARP获取物理地址的高层协议类型(0X0800代表IP协议)。(3)硬件地址长度和协议地址长度:分别指出以后各相应域的长度。(4)操作:指明本报文的类型(“1”为ARP请求,“2”为ARP响应,“3”为RARP请求,“4”为RARP响应)。ARP/RARP报文是作为一般数据放入数据链路帧数据区中来传输的。5
44、ICMP协议协议网际控制报文协议(Internet Control Message Protocol,ICMP)是用来提供差错报告服务的协议。ICMP报文要通过IP协议发出去,且只向数据报的初始源主机发送错误报告报文。每个ICMP报文都是作为IP数据报的数据部分在网络中进行传输的。其报文格式如图2-11所示。图2-11 ICMP报文格式“ICMP报文类型”为1字节,其取值含义如表2-1所示。6路由选择协议路由选择协议网络中的路由器在收到IP数据报时是通过路由表来决定如何向前传输各个数据报的。一旦在路由器系统中建立起全部正确并一致的路由表,寻径问题就迎刃而解了,而且该路由表也应当是动态的,这样能
45、够及时反映网络拓扑的变化。Internet的自动路径获取机制由一组协议来实现,这组协议主要描述网关之间的路径信息交换及获取路径信息后如何据此进行路径更新的机制,包括用于自治域(Autonomous System)(互联网由大量自治域组成)内部的内部网关协议(Interior Gateway Protocol,IGP)和用于自治域之间的外部网关协议(Exterior Gateway Protocol,EGP)。IGP协议用于自治域内部的路径信息交换,常用的有RIP协议和OSPF协议。RIP协议是使用最广泛的IGP协议之一,是V-D(Vector-Distance,向量-距离算法)算法的实现。OS
46、PF协议是S-L(链接-状态)算法的实现,它解决了RIP协议的一些不足。EGP协议用于两个自治域之间路由信息的交换,常用的EGP协议是边界网关协议(Border Gateway Protocol,BGP)。7应用层协议应用层协议应用层协议如前所述,它工作在ICP/IP协议簇的最高层,表现为应用程序。1)超文本传输协议(HTTP)HTTP是一种在客户端与服务器(Web浏览器与Web服务器)之间进行交流的协议。HTTP是一种无连接协议,意味着Web浏览器和Web服务器彼此之间不需要建立连接,它们只来回发送独立的消息。HTTP遵循请求/应答模型。Web浏览器向Web服务器发送请求,服务器处理该请求并
47、回送适当的应答,所有的HTTP连接都被构造为一套请求和应答。2)文件传输协议(FTP)FTP用于把文件传输到运行FTP服务器的主机上,或相反方向的传输。FTP是基于客户/服务器模型而设计的,客户和服务器之间利用TCP建立连接。与其他客户/服务器模型不同的是,FTP客户与服务器之间要建立双重连接,一是控制连接,另一是数据连接。建立双重连接的原因在于:FTP是一个交互式会话系统,客户每次调用FTP,都将与服务器建立一个会话,会话以控制连接来维持,直至退出FTP。控制连接负责传输控制信息,尤其是客户命令。利用控制命令,客户可以向服务器提出多次请求(一个请求就是一个客户命令)。客户每提出一个请求,服务
48、器就与客户建立一个数据连接,进行实际的数据传输。一旦数据传输结束,数据连接相继撤销,但控制连接依然存在,客户可以继续发出命令,直到客户键入close命令撤销控制连接。在一个FTP会话中需要建立一个控制连接和若干数据连接。建立控制连接的过程大家比较熟悉,FTP服务器的公认端口是21,客户控制进程申请一个随机分配的本地端口后可以与服务器端口21建立一个相关。数据连接的建立就不是那么简单了。在建立数据连接的过程中,客户控制进程反客为主,成为连接的接收者,而服务器数据传输进程成了连接的请求者。作为一个新的子进程,服务器传输进程可以申请一个新的端口号建立自己的半相关连接(一般是利用FTP保留端口20),
49、而它向哪个客户端口发送连接请求呢?要知道客户是没有公认端口的。这时就要用到控制连接。客户控制进程通过控制连接告诉服务器控制进程它的数据连接端口,服务器控制将该端口转告自己的数据传输进程,服务器数据传输进程便可以利用它与客户建立数据连接。严格的FTP访问控制要求客户给出文件所在信宿服务器上的一个合法账号(包括注册名和口令)才能访问文件,这给使用者带来很大麻烦。于是FTP提供一种对公共文件的非严格访问控制,即所谓匿名FTP。3)远程登录协议(Telnet)Telnet使远程服务器提供终端仿真服务。远程登录的根本目的在于让用户访问远程系统的资源就像访问本地的一样。Telnet远程登录的服务过程分为三
50、个步骤:第一步,本地用户在本地终端上对远程系统进行远程登录。该远程登录实际上是一个TCP连接。第二步,将本地终端上的键盘输入逐键传到远程服务器。第三步,将远程服务器的输出送回本地终端。在以上过程中,输入/输出均对远程系统内核透明,远程登录服务本身对用户也透明,本地用户好像直接连入远程系统。这种透明性是Telnet的重要特点,也是Telnet内部机制的重要部分。4)域名服务(DNS)为便于记忆,在Internet网络上使用的是主机名而不是IP地址,它们之间的转换需要使用DNS域名服务。TCP/IP对于主机名采用的是一种层次型命名机制,它能够适应大量而且迅速变化的对象。层次命名是将名字空间分为若干