有一些标准的简单服务几乎每种实现都要提供。在本书中我们将使用其中的一些服务程序,而客户程序通常选择Telnet。图1 - 9描述了这些服务。从该图可以看出,当使用TCP和UDP提供相同的服务时,一般选择相同的端口号。
假如仔细检查这些标准的简单服务以及其他标准的TCP/ip服务(如Telnet、FTP、SMTP等)的端口号时,我们发现它们都是奇数。这是有历史原因的,因为这些端口号都是从NCP端口号派生出来的(NCP,即网络控制协议,是ARPANET的运输层协议,是TCP的前身)。NCP是单工的,不是全双工的,因此每个应用程序需要两个连接,需预留一对奇数和偶数端口号。当TCP和UDP成为标准的运输层协议时,每个应用程序只需要一个端口号,因此就使用了NCP中的奇数。
在图1 - 3中,我们列举了一个由两个网络组成的互联网—一个以太网和一个令牌环网。在1.4节和1.9节中,我们讨论了世界范围内的互联网—Internet,以及集中分配I P地址的需要(InterNIC),还讨论了知名端口号(IANA)。Internet这个词第一个字母是否大写决定了它具有不同的含义。
Internet意思是用一个共同的协议族把多个网络连接在一起。而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合(超过100万台)。Internet是一个Internet,但Internet不等于Internet。
既成事实标准的TCP/IP软件实现来自于位于伯克利的加利福尼亚大学的计算机系统研究小组。从历史上看,软件是随同4.x BSD系统(Berkeley Software Distribution)的网络版一起发布的。它的源代码是许多其他实现的基础。
图1 - 1 0列举了各种BSD版本发布的时间,并标注了重要的TCP/IP特性。列在左边的BSD网络版,其所有的网络源代码可以公开得到:包括协议本身以及许多应用程序和工具(如Telnet和FTP)。
在本书中,我们将使用“伯克利派生系统”来指SunOS 4.x 、SVR 4以及AIX 3.2等那些基于伯克利源代码开发的系统。这些系统有很多共同之处,经常包含相同的错误。
起初关于Internet的很多研究现在仍然在伯克利系统中应用—新的拥塞控制算法(21.7节)、多播(12.4节)、“长肥管道”修改(24.3节)以及其他类似的研究。