前面已经指出过, 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) 来管理。
到1992年为止,知名端口号介于1~255之间。256~1023之间的端口号通常都是由 Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才 有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。
Internet扩展服务与Unix特定服务之间的一个差别就是Telnet和Rlogin。它们二者都 允许通过计算机网络登录到其他主机上。 Telnet是采用端口号为23的TCP/IP标准且几乎 可以在所有操作系统上进行实现。相反,Rlogin最开始时只是为Unix系统设计的(尽管 许多非Unix系统现在也提供该服务),因此在80年代初,它的有名端口号为513。
客户端通常对它所使用的端口号并不关心, 只需保证该端口号在本机上是唯一的就可以 了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该 客户程序时才存在,而服务器则只要主机开着的,其服务就运行。 大多数T C P / I P实现给临时端口分配 1 0 2 4~5 0 0 0之间的端口号。大于 5 0 0 0的端口号是为其他服务器预留的( Internet上并不常用的服务 )。我们可以在后面看见许多这样的给临时端口分 配端口号的例子。
Solaris 2.2是一个很有名的例外。通常TCP和UDP的缺省临时端口号从32768开始。 在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节)将它作为客户 与服务器之间身份认证的一部分。