第一部分 TCP/IP核心协议
第一章 体系结构、历史、标准和发展趋势
今天,对世界上很多人来说,Internet和万维网都是一个很熟悉的术语。很多人都在利用基于Internet的应用,如电子邮件和web访问。另外,商业应用的普及已成为重点。传输控制协议和Internet协议组(TCP/IP)是Internet和网络世界的引擎。它的简单和强大功能已经使它成为现今网络协议的唯一选择。在这一章中,我们讨论Internet的形成、发展和将来的可能发展趋势。
1.1 TCP/IP 体系结构模型
TCP/IP协议组指定的2个重要的协议是:传输控制协议(TCP)和Internet协议(IP)。一个用得较少的名字是Internet协议组(Internet Protocol Suite),它一般出现在正式的Internet标准文档中。在这本书中,当涉及到整个协议组时,我们以用比较普遍的简称TCP/IP来表示。
1.1.1 交互网络(Interworking)
TCP/IP设计的主要目标是建立一个被称作interwork,或者是internet的交互性网络,它可以在不同的物理网络中提供通用的交流服务。这个通用的交互网络的明显的好处是加强了不同的网络中的主机(可能是在地理区域上相隔很大的距离)的相互通信。
interwork(交互网络) 和 internet这两个单词都是interconnected network(连接的网络)的缩写。然而,当字母I大写,Internet就意味着世界范围的连接的网络的集合。因此,Internet 是一个internet,但是反过来并不适用。Internet有时候被称作连接的网络(connected Internet)。
Internet包含一下几组网络:
•主干网络(Backbones):主要是连接其他网络的大型网络。现今的backbones是北美的NSFNET,欧洲的Europe 和大型的商业backbones。
•区域网连接,如大学和学院。
•给用户提供访问主干网络服务的商业网络,这些网络被商业组织作为国内连接Internet使用。
•居域网:例如校园网
在大多情况下,一个网络拥有的最大用户的数目受限于这个网络在地理范围内的距离,或这个网络在某种环境下的容量。例如,以太网固有的属性使其限制在一个地理范围里。因此, 在一些分等级的组织方式中互联大量网络的能力加强了Internet网络中两台主机的通信。图1 展示了Internet的两个例子,他们都是由两个或更多的物理网络组成。
图 1. Internet例子 – 2个连接的逻辑网络,可以看作一个网络
TCP网络协议的一个很重要的方面是为各种不同的网络的通信机制创建了标准抽象。每种物理网络都有依赖工艺的通信接口,这些通信接口以编程接口的方式提供基本(简单的)通信功能。TCP/IP为不同的物理网络和用户应用之间提供通信服务。它为这些不依赖底层物理网络的应用提供一个共通的接口。所以对于用户和应用程序的开发者而言,物理网络结构和操作平台是透明的。
图1也表明,为了联接两个网络,我们需要一台连通着这两个网络的计算机,它可以从一个网络向另一个网络转运数据包,这样的一台机器称之为路由器。术语IP路由器也被使用,这是因为路功能仅仅是TCP/IP协议组(参见第5页1.1.2的“IP协议层”)的IP部分。
为了能够鉴别网络中得一台主机,每台主机都分配了一个地址,即IP地址。当一台主机有多个网络适配器(接口),例如联接着一台路由器,每个接口都有唯一的IP地址。IP地址包括两部分:
IP地址 = <网络编号> <主机编号>
IP地址的<网络编号>部分用来唯一识别Internet中的网络,它是由一个中央权威机构分配并且在整个网络中是唯一的。<网络编号>唯一识别了一个网络,而IP地址<主机编号>部分的就是由控制这个网络的组织来分配的。这部分的详细讲解请参见65页的3.3.1“IP地址”。
1.1.2 TCP/IP协议层
像大多数网络软件一样,TCP/IP是以层建模的。这种分层的表示引申出了一个新的术语协议栈,这个术语涉及到协议组中的层的堆栈。它能用来使TCP/IP协议组与其他的模型区别定位(而不是基本功能比较),如系统网络结构(SNA)和开放系统互联(OSI)参考模型。从这并不能够简单的抽取出功能比较,因为它们不同的协议组使用的模型有根本的不同。
把通信软件以层进行划分,协议栈允许区分分工、每个实现和代码测试和开发可选择的层实现。层经过简单的接口与其上一层和下一层进行通信。这样,一个层提供了直接为它上面的层提供服务,并且充分的利用它下面的曾给它提供的服务。例如,IP层提供从一台主机到另一台主机传输数据的能力,但并不保证数据的可靠性和完整性。传输协议例如TCP充分利用这个服务提供可靠的、有序的、数据流传输应用。图2展示了TCP/IP协议是怎样进行四层建模的。
这些层包括:
应用层:
应用层提供给利用TCP/IP协议进行通讯的程序。应用指的是一台主机上的用户进程与另一台主机上的进行协作(仅仅在一台主机上通信也有好处)。应用的例子包括Telnet和文件传输协议(FTP)。在应用层和传输层之间的接口是以端口号和套接字来定义,这个将在5.1的“端口和套接字”作详细的阐述。
传输层:
传输层从一个应用程序向它的远程端传输数据以提供首位相接的数据传输。可以同时支持多个应用。用得最多的传输层协议是传输控制协议(TCP),它提供面向连接的可靠的、完整性检查的数据传输、拥塞控制河流控制。这个讲在5.3“传输控制协议(TCP)”206页做进一步的详解。
还有一个数据传输协议是用户数据报协议(UDP,在204页的5.2“用户数据报协议(UDP)”讨论)。它提供无连接的、不可靠的传输。结果,当应用使用UDP协议时,如果他们非常希望的话,不得不自己提供首尾连接的完整性、流控制和拥塞控制。通常,UDP应用于一些需要快速的传输机制和允许一些数据丢失的场合。
网络层:
网络层(internetwork layer)也称作Internet layer或network layer,它提供“虚拟”的网络(这个层把更高的层与比它地得物理网络结构隔开)。IP协议是这层最重要的协议。它是一个无连接的协议,它并不保证比它低的层的可靠性。IP协议并没有提供可靠性、流控制、或错误恢复。这些功能必须由更高的层来提供。IP协议提供了路由功能,它负责传送需要传送的信息到它的目的地。IP将在65页的3.1“IP协议(IP)”进行讨论。在一个IP网络中的信息单元称之为IP数据报。这是通过TCP/IP网络传输信息的基本单元。其他的网络层协议有IP,ICMP,IGMP,ARP和RARP。
网络接口层:
网络接口层也被称为连接层(link layer)或数据连接层(data-link layer),它是真正的网络迎接的借口。这个接口可能提供可靠的数据传输,也可能不提供,它可能是面向数据流的或者数据包的。事实上,TCP/IP在这里并没有制定任何协议,但是可以利用几乎所有的可用的网络接口,它加强IP层的适应性。例如,IEEE 802.2,X.25(它自身是可靠的),ATM,FDDI,甚至还有SNA。29页的第二章“网络接口”将讨论协议一些物理网络和接口。
TCP/IP规范中并没有强制性的为网络层描述或定制一个标准;它们紧紧是定制了一个从网络接口层访问这些协议的方式。
图3包含了一个更加详细的层的模型。
1.1.3 TCP/IP应用
在TCP/IP协议栈中最高级别的协议是应用协议。他们与Internet上的其他主机通信,是TCP/IP协议组中用户可见的接口。
应用协议有如下共同的特征:
•它们可以是用户写的应用,或者是随TCP/IP产品附带的标准应用。的确,TCP/IP协议组包括一些应用,例如:
--TELNET 为交互式的终端访问远程主机。
--FTP(文件传输协议)为了高速的磁盘到磁盘的文件传输。
--SMTP(简单邮件传输协议)作为一个internet邮件系统。
这些都是些最广泛的实现的应用协议,但也有很多其它的。每个TCP/IP实现的细节都或多或少包括一些应用协议。
•它们用UDP或TCP作为一个传输机制。记住UDP是不可靠的,而且它不提供流控制,在这种情况下,应用不得不提供自己的错误恢复、流控制和拥塞控制功能。在TCP的基础上创建应用程序更容易,因为它是可靠的流,面向连接的,拥塞友好的,流可控制的协议。结果,大多数应用协议使用TCP,但是也有应用创建于UDP的基础上通过减少协议头以获得更好的性能。
•大多数应用使用客户端/服务端交互模型。
1.1.3.1 客户端/服务端模型
TCP是一个点对点的、面向连接的协议。并没有主/从关系。但是,又代表性的应用是使用客户端/服务端(Client/Server,简称C/S)模型通信。
服务端是向Internet用户提供服务的应用;客户机是服务请求者。一个应用既包括服务器,也包括客户机部分,它们可以在相同或不同的系统上运行。用户通常调用客户机的应用部分,它创建一个特殊的服务请求,并以TCP/IP为传输手段把它发送到应用的服务部分。
服务端是一个接收请求的程序,它执行请求服务并且答复回传的结果。一个服务端通常同时可以处理多个请求和多个请求客户端。
大多数服务端在一个已知的端口等待请求,这样它们的客户端知道他们必须向哪个端口(顺序、哪个应用)请求服务。客户端通常使用称作短暂端口(ephemeral port)的任意端口进行通信。客户如果希望与一个它并不知道端口的服务端通信,它必须有一个机制找到它的端口以定位它们的请求,这种机制可能是使用一种注册服务例如端口映像,它使用的是一个已知的端口。需要详细的TCP/IP应用协议的信息,请参照259页的第二部分“TCP/IP应用协议”。
1.1.4 网桥、路由器和网关
(翻译中)