1.9 端口号
前面已经指出过,T C P和U D P采用16 bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?
服务器一般都是通过知名端口号来识别的。例如,对于每个 T C P / I P实现来说,F T P服务器的T C P端口号都是2 1,每个Te l n e t服务器的T C P端口号都是2 3,每个T F T P (简单文件传送协议)服务器的U D P端口号都是6 9。任何T C P / I P实现所提供的服务都用知名的 1~1 0 2 3之间的端口号。这些知名端口号由 I n t e r n e t号分配机构(Internet Assigned Numbers Authority, IANA)来管理。
到1 9 9 2年为止,知名端口号介于1~2 5 5之间。2 5 6~1 0 2 3之间的端口号通常都是由U n i x系统占用,以提供一些特定的U n i x服务—也就是说,提供一些只有U n i x系统才有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。
Internet扩展服务与U n i x特定服务之间的一个差别就是Te l n e t和R l o g i n。它们二者都允许通过计算机网络登录到其他主机上。Te l n e t是采用端口号为2 3的T C P / I P标准且几乎可以在所有操作系统上进行实现。相反,R l o g i n最开始时只是为U n i x系统设计的(尽管许多非Unix系统现在也提供该服务),因此在80年代初,它的有名端口号为513。
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。大多数TCP/IP实现给临时端口分配 1 0 2 4~5 0 0 0之间的端口号。大于 5 0 0 0的端口号是为其他服务器预留的(I n t e r n e t上并不常用的服务)。我们可以在后面看见许多这样的给临时端口分配端口号的例子。
Solaris 2.2是一个很有名的例外。通常T C P和U D P的缺省临时端口号从3 2 7 6 8开始。在E.4节中,我们将详细描述系统管理员如何对配置选项进行修改以改变这些缺省项。大多数U n i x系统的文件/e t c / s e r v i c e s都包含了人们熟知的端口号。为了找到 Te l n e t服务器和域名系统的端口号,可以运行以下语句:
保留端口号 U n i x系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个 保留端口号。 这些端口号介于 1~1 0 2 3之间,一些应用程序(如有名的 R l o g i n,2 6 . 2节)将它作为客户与服务器之间身份认证的一部分。