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 |
郵局協議3(POP3) |
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主機獲得shell(rsh) |
續表
TCP 埠 |
服 務 名 |
功 能 |
515 |
printer |
遠端列印 |
1080 |
socks |
SOCKS應用代理服務 |
2049 |
NFS |
TCP之上的NFS(NFS 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服務和埠