有些時候,一個IP地址并不足以完整標識一個服務器。這是由于在一臺物理性的機器中,往往運行著多個服務器(程序)。由IP表達的每臺機器也包含了“端口”(Port)。我們設置一個客戶機或者服務器的時候,必須選擇一個無論客戶機還是服務器都認可連接的端口。就象我們去拜會某人時,IP地址是他居住的房子,而端口是他在的那個房間。注意端口并不是機器上一個物理上存在的場所,而是一種軟件抽象(主要是為了表述的方便)。客戶程序知道如何通過機器的IP地址同它連接,但怎樣才能同自己真正需要的那種服務連接呢(一般每個端口都運行著一種服務,一臺機器可能提供了多種服務,比如HTTP和FTP等等)?端口編號在這里扮演了重要的角色,它是必需的一種二級定址措施。也就是說,我們請求一個特定的端口,便相當于請求與那個端口編號關聯的服務。“報時”便是服務的一個典型例子。通常,每個服務都同一臺特定服務器機器上的一個獨一無二的端口編號關聯在一起。客戶程序必須事先知道自己要求的那項服務的運行端口號。
系統服務保留了使用端口1到端口1024的權力,所以不應讓自己設計的服務占用這些以及其他任何已知正在使用的端口。本書的第一個例子將使用端口8080(為追憶我的第一臺機器使用的老式8位Intel 8080芯片,那是一部使用CP/M操作系統的機子)。