1、端口(port)
在TCP/IP協(xié)議中為標(biāo)識(shí)不同的應(yīng)用,給各個(gè)分組賦予稱作端口的代碼。在端口域中對(duì)不同的應(yīng)用使用不同的值,傳輸層協(xié)議可以利用該端口號(hào)來決定應(yīng)由哪個(gè)應(yīng)用程序來接收分組的數(shù)據(jù)。由此可見,端口號(hào)的作用與IP的下一個(gè)頭標(biāo)域相似。當(dāng)IP區(qū)分傳輸協(xié)議時(shí)利用下一個(gè)頭標(biāo),而傳輸協(xié)議區(qū)分應(yīng)用協(xié)議時(shí)要用端口號(hào)。
有兩種方法用來選取端口號(hào)。這兩種方法是指應(yīng)用在一個(gè)會(huì)話中所起的兩種作用,即客戶和服務(wù)器。客戶主動(dòng)發(fā)送請(qǐng)求信息來開始會(huì)話,服務(wù)器只是對(duì)客戶發(fā)來的請(qǐng)求報(bào)文進(jìn)行應(yīng)答。
當(dāng)客戶的應(yīng)用程序需要發(fā)送請(qǐng)求報(bào)文時(shí),必須知道將該請(qǐng)求報(bào)文發(fā)往服務(wù)器的方法。也就是說,客戶的應(yīng)用程序應(yīng)預(yù)先知道對(duì)于特定的應(yīng)用所使用的端口號(hào)。另一方面,服務(wù)器即使不知道在該應(yīng)答報(bào)文中使用的端口號(hào)也無妨,因?yàn)楫?dāng)服務(wù)器收到報(bào)文時(shí),只要查看請(qǐng)求報(bào)文就能知道客戶使用了哪個(gè)端口,于是,服務(wù)器就可向該端口回送報(bào)文。
為特定的應(yīng)用預(yù)先定義的端口稱作已知端口。表1示出了利用UDP/TCP協(xié)議時(shí)主要應(yīng)用的一些端口號(hào)。
表1:UDP/TCP主要應(yīng)用的已知端口號(hào)
2、套接口(socket)
TCP為了標(biāo)識(shí)各個(gè)連接,引入套接口的概念。套接口(socket)由IP地址和端口(port)組成。IP地址標(biāo)識(shí)一個(gè)系統(tǒng),端口號(hào)則用來區(qū)分該系統(tǒng)內(nèi)的各個(gè)應(yīng)用。TCP利用套接口來標(biāo)識(shí)連接的端點(diǎn)。因此,用套接口可以惟一的標(biāo)識(shí)一個(gè)連接。
端口只不過決定了應(yīng)用協(xié)議,換句話說,端口并不提供區(qū)分在計(jì)算機(jī)上實(shí)際運(yùn)行的應(yīng)用程序的功能。然而,一旦將端口號(hào)和網(wǎng)絡(luò)地址組合,就可用來區(qū)分應(yīng)用程序。這種組合稱作套接口(socket)。
圖1示出了某計(jì)算機(jī)網(wǎng)上的兩個(gè)不同的會(huì)話。圖中,上方的工作站和下方的兩個(gè)工作站交換管理信息,這兩個(gè)會(huì)話共使用了4個(gè)套接口。套接口1和套接口2形成了左方和上方工作站間的會(huì)話;套接口3和套接口4形成了右方和上方工作站間的會(huì)話。如該例所示,不同的套接口其端口號(hào)和網(wǎng)絡(luò)地址可以完全相同。例如,套接口2和套接口3可以具有相同的網(wǎng)絡(luò)地址(上方工作站的網(wǎng)絡(luò)地址)和相同的端口號(hào)(管理業(yè)務(wù)量的端口號(hào))。