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