1. 程式人生 > >linux 埠號分配

linux 埠號分配

 埠號分配

TCP和UDP採用16b的埠號來識別應用程式。那麼這些埠號是如何選擇的呢?

伺服器一般都是通過知名埠號來識別的。例如,對於TCP/IP實現來說,每個FTP伺服器的TCP埠號都是21,每個Telnet伺服器的TCP埠號都是23,每個TFTP(普通檔案傳輸協議)伺服器的UDP埠號都是69。任何TCP/IP實現所提供的服務都用知名的1~1 023之間的埠號。這些知名埠號由Internet號分配機構(Internet Assigned Numbers Authority, IANA)來管理。到1992年為止,知名埠號介於1~255之間。256~1 023之間的埠號通常都是由UNIX系統佔用,以提供一些特定的UNIX服務,也就是說,提供一些只有UNIX系統才有的,而其他作業系統可能不提供的服務。現在IANA管理1~1 023之間所有的埠號。

Internet擴充套件服務與UNIX特定服務之間的一個差別就是telnet和rlogin,它們二者都允許通過計算機網路登入到其他主機上。telnet是採用埠號為23的TCP/IP標準,且幾乎可以在所有作業系統上進行實現。相反,rlogin最開始時只是為UNIX系統設計的(儘管許多非UNIX系統現在也提供該服務),因此在20世紀80年代初,它的埠號為513,客戶端通常對它所使用的埠號並不關心,只須保證該埠號在本機上是唯一的即可。客戶埠號又稱做臨時埠號(即存在時間很短暫),這是因為它通常只是在使用者執行該客戶程式時才存在,而伺服器則只要主機開著,其服務就執行。

大多數TCP/IP實現給臨時埠分配1 024~5 000之間的埠號。大於5 000的埠號是為其他伺服器預留的(Internet上並不常用的服務)。我們可以在後面看見許多給臨時埠分配埠號的例子。大多數Linux系統的檔案/etc/services都包含了人們熟知的埠號。為了找到telnet服務,可以執行以下語句:“grep telnet /etc/services”。表1-3是一些常用TCP服務和埠。

表1-3  常用TCP服務和埠

TCP 

    

    

7

echo

echo字元(用於測試)

9

discard

丟棄字串(用於測試)

13

daytime

日期服務

19

chargen

字元生成器

21

ftp

檔案傳輸協議(FTP

22

ssh

安全shell(虛擬終端或檔案傳輸)

23

telnet

遠端登入

25

smtp

電子��件

37

time

時間服務

42

nameserve

TCP名字服務

43

whois

NIC whois服務

53

domain

域名服務(DNS

79

finger

使用者資訊

80

http

WWW(全球資訊網)

110

pop3

郵局協議3POP3

111

sunrpc

SUN的遠端過程呼叫(RPC

113

auth

遠端使用者名稱認證服務

119

nntp

網路新聞傳輸協議(NNTP

143

imap

互動式郵件訪問協議

443

https

SSL加密的HTTP

512

exec

在遠端UNIX主機上執行命令

513

login

登入到遠端UNIX主機(rlogin

514

shell

從遠端UNIX主機獲得shellrsh

續表 

TCP 

    

    

515

printer

遠端列印

1080

socks

SOCKS應用代理服務

2049

NFS

TCP之上的NFSNFS over TCP

6000~6001

X

X Window系統

UDP為運行於同一臺或不同機器之上的兩個或多個程式之間傳輸資料包提供了簡單的、不可靠的連線。“不可靠”意味著作業系統不保證每個發出的包都能到達,也不保證包能夠按序到達。不過UDP是盡力傳輸的,在LAN中UDP通常能達到100%的可靠性。UDP的優點在於它比TCP的開銷少,較少的開銷使得基於UDP的服務可以用TCP 10倍的吞吐量傳輸資料。

UDP主要用於SUN的NFS、NIS、主機名解析和傳輸路由資訊。對於有些服務而言,偶然丟失一個包並不會帶來太大的負面影響,因為它們會週期性地請求一個新包,或者那些包本身並不是很重要。這些服務包括who、talk和一些時間服務。表1-4是一些常用UDP服務和埠。

表1-4  常見UDP服務和埠