天天看點

計算機端口詳解及常用預設端口清單

 轉載

計算機“端口”是英文port的義譯,可以認為是計算機與外界通訊交流的出口。其中硬體領域的端口又稱接口,如:USB端口、串行端口等。軟體領域的端口一般指網絡中面向連接配接服務和無連接配接服務的通信協定端口,是一種抽象的軟體結構,包括一些資料結構和I/O(基本輸入輸出)緩沖區。

面向連接配接和無連接配接協定(Connection-Oriented and Connectionless Protocols)

面向連接配接服務的主要特點是:面向連接配接服務要經過三個階段:資料傳數前,先建立連接配接,連接配接建立後再傳輸資料,資料傳送完後,釋放連接配接。面向連接配接服務,可確定資料傳送的次序和傳輸的可靠性。

    無連接配接服務的特點是:無連接配接服務隻有傳輸資料階段。消除了除資料通信外的其它開銷。隻要發送實體是活躍的,無須接收實體也是活躍的。它的優點是靈活友善、迅速,特别适合于傳送少量零星的封包,但無連接配接服務不能防止封包的丢失、重複或失序。

區分“面向連接配接服務”和“無連接配接服務”的概念

特别簡單、形象的例子是:打電話和寫信。兩個人如果要通電話,必須先建立連接配接——撥号,等待應答後才能互相傳遞資訊,最後還要釋放連接配接——挂電話。寫信就沒有那麼複雜了,位址姓名填好以後直接往郵筒一扔,收信人就能收到。TCP/IP協定在網絡層是無連接配接的(資料包隻管往網上發,如何傳輸和到達以及是否到達由網絡裝置來管理)。而“端口”,是傳輸層的内容,是面向連接配接的。協定裡面低于1024的端口都有确切的定義,它們對應着網際網路上常見的一些服務。這些常見的服務可以劃分為使用TCP端口(面向連接配接如打電話)和使用UDP端口(無連接配接如寫信)兩種。

端口

網絡中可以被命名和尋址的通信端口是作業系統的一種可配置設定資源。由網絡OSI(開放系統互聯參考模型,Open System Interconnection Reference Model)七層協定可知,傳輸層與網絡層最大的差別是傳輸層提供程序通信能力,網絡通信的最終位址不僅包括主機位址,還包括可描述程序的某種辨別。是以TCP/IP協定提出的協定端口,可以認為是網絡通信程序的一種辨別符。

程序

應用程式(調入記憶體運作後一般稱為:程序)通過系統調用與某端口建立連接配接(binding,綁定)後,傳輸層傳給該端口的資料都被相應的程序所接收,相應程序發給傳輸層的資料都從該端口輸出。在TCP/IP協定的實作中,端口操作類似于一般的I/O操作,程序擷取一個端口,相當于擷取本地唯一的I/O檔案,可以用一般的讀寫方式通路。

端口号

類似于檔案描述符,每個端口都擁有一個叫端口号的整數描述符,用來差別不同的端口。由于TCP/IP傳輸層的TCP和UDP兩個協定是兩個完全獨立的軟體子產品,是以各自的端口号也互相獨立。如TCP有一個255号端口,UDP也可以有一個255号端口,兩者并不沖突。

端口号的兩種基本配置設定方式

第一種叫全局配置設定這是一種集中配置設定方式,由一個公認權威的中央機構根據使用者需要進行統一配置設定,并将結果公布于衆。

第二種是本地配置設定,又稱動态連接配接,即程序需要通路傳輸層服務時,向本地作業系統提出申請,作業系統傳回本地唯一的端口号,程序再通過合适的系統調用,将自己和該端口連接配接起來(binding,綁定)。TCP/IP端口号的配置設定綜合了以上兩種方式,将端口号分為兩部分,少量的作為保留端口,以全局方式配置設定給服務程序。每一個标準伺服器都擁有一個全局公認的端口叫周知口,即使在不同的機器上,其端口号也相同。剩餘的為自由端口,以本地方式進行配置設定。TCP和UDP規定,小于256的端口才能作為保留端口。

端口号的分類

(1)公認端口(Well Known Ports):從0到1023,它們緊密綁定(binding)于一些服務。通常這些端口的通訊明确表明了某種服務的協定。例如:80端口實際上總是HTTP通訊。

(2)注冊端口(Registered Ports):從1024到49151。它們松散地綁定于一些服務。也就是說有許多服務綁定于這些端口,這些端口同樣用于許多其它目的。例如:許多系統處理動态端口從1024左右開始。

(3)動态和/或私有端口(Dynamic and/or Private Ports):從49152到65535。理論上,不應為服務配置設定這些端口。實際上,機器通常從1024起配置設定動态端口。但也有例外:SUN的RPC端口從32768開始。

系統管理者可以“重定向”端口

    一種常見的技術是把一個端口重定向到另一個位址。例如預設的HTTP端口是80,不少人将它重定向到另一個端口,如8080。如果是這樣改了,要通路本文就應改用這個位址http://wwd.3322.net:8080/net/port.htm(當然,這僅僅是理論上的舉例)。

    實作重定向是為了隐藏公認的預設端口,降低受破壞率。這樣如果有人要對一個公認的預設端口進行攻擊則必須先進行端口掃描。大多數端口重定向與原端口有相似之處,例如多數HTTP端口由80變化而來:81,88,8000,8080,8888。同樣POP的端口原來在110,也常被重定向到1100。也有不少情況是選取統計上有特别意義的數,象1234,23456,34567等。許多人有其它原因選擇奇怪的數,42,69,666,31337。近來,越來越多的遠端控制木馬( Remote Access Trojans, RATs )采用相同的預設端口。如NetBus的預設端口是12345。Blake R. Swopes指出使用重定向端口還有一個原因,在UNIX系統上,如果你想偵聽1024以下的端口需要有root權限。如果你沒有root權限而又想開web服務,你就需要将其安裝在較高的端口。此外,一些ISP的防火牆将阻擋低端口的通訊,這樣的話即使你擁有整個機器你還是得重定向端口。

以下提供端口名與端口号及相應的功能清單:

〖常用預設端口清單及功能中文注解〗

〖全體預設端口清單〗