回首頁
修改
Mail
FTP

中




2007年11月3日 星期六

[Port]什麼是Port 埠口? for Linux

通常server/client 需要一組 Socket pair 來建立連線
要連線到主機端,那麼主機勢必得要啟動一個大家都知道的 port 來監聽

主機端的監聽 (Listen):
『主機所啟用的 port 其實是由某些網路服務 (program) 所啟動的』。而為了連接上的方便,因此很多服務所開啟的 port 是固定的,例如 WWW 開啟在 port 80 ,mail 開啟在 port 25 等等;
用戶端的 port:
用戶端啟動的 port 是隨機產生的, 主要是開啟在大於 1024 以上的埠口,這個 port 也是由某些軟體所產生的,例如上面提到的例子, 我們的瀏覽器想要連接到 Yahoo 的 WWW 主機,那麼瀏覽器就得要啟用一個 port 來與主機進行連線, 以組成一組 Socket pair 來傳輸資料嘛!
所謂的『監聽』是某個服務程式會一直常駐在記憶體當中,所以該程式啟動的 port 就會一直存在。 至於 port 在傳輸過程中的判斷,那就由 TCP/UDP 等通訊協定的表頭資料來記錄的啊, 我們的主機透過分析 TCP/UDP 的表頭資料就能夠瞭解到該連線所需要連接的軟體是那個, 而給予正確的資料回應。所以,一部主機上面當然可以同時啟動很多不同的服務啊! ^_^。

共 65536 個 port:
預設的情況下,我們的主機會有 65536 個 port,而這些 port 又分成兩個部分,以 port 1024 作區隔:


只有 root 才能啟動的保留的 port:
在小於 1023 (連同 1023) 的埠口,都是需要以 root 的身份才能啟動的, 這些 port 主要是用於一些常見的通訊服務,在 Linux 系統下,常見的協定與 port 的對應是記錄在 /etc/services 裡面的。 一般來說,這些 port 最好保留給一些預設的服務來使用,不要自己隨意使用到這些 port, 因為這些 port 是目前 Internet 上面所慣用的,所以一些程式開發者在進行軟體的開發時, 就能夠針對這些 well know 的埠口直接來開發,大家也比較容易使用伺服器的功能啊!


大於 1024 用於 client 端的 port:
在大於 1024 以上的 port 主要是作為 client 端的軟體啟動的 port 。這些 port 幾乎都是依序隨機使用的, 例如前面談到的瀏覽器,就是使用大於 1024 以上的 port。那如果用到 port 65535 後, 系統會主動再由前面沒有使用到的埠口 (如 1024) 再重新依序使用。


是否需要三向交握:
建立可靠的連線服務需要使用到 TCP 協定,也就需要所謂的 三向交握了, 如果是非可靠的連線服務,例如 DNS ,那只要使用 UDP 協定即可。


通訊協定啟用在非正規的 port:
我們知道瀏覽器預設會連接到 WWW 主機的 port 80,那麼你的 WWW 是否可以啟動在非 80 的其他埠口? 當然可以啊!你可以透過 WWW 軟體的設定功能將該軟體使用的 port 啟動在非正規的埠口, 只是如此一來,您的用戶端要連接到你的主機時,就得要在瀏覽器的地方額外指定你所啟用的非正規的埠口才行。 這個啟動在非正規的埠口功能,常常被用在一些所謂的地下網站啦!^_^。另外, 某些軟體預設就啟動在大於 1024 以上的埠口,如 MySQL 資料庫軟體就啟動在 3306。


所謂的 port 的安全性:
事實上,沒有所謂的 port 的安全性!因為『Port 的啟用是由服務軟體所造成的』, 也就是說,真正影響網路安全的並不是 port ,而是啟動 port 的那個軟體 (程式)! 或許你偶而會聽到:『沒有修補過漏洞的 bind 8.x 版,很容易被黑客所入侵,請盡快升級到 bind 9.x 以後版本』,所以囉,對安全真正有危害的是『某些不安全的服務』 而不是『開了哪些 port 』才是!因此,沒有必要的服務就將他關閉吧! 尤其某些網路服務還會啟動一些 port 哩!另外,那些已啟動的軟體也需要持續的保持更新喔!
觀察 port

好了,我們現在知道這個 port 是什麼鬼東西了,再來就是要去『看他到底在幹啥?』沒錯! 再來就是要來瞭解一下,我們的主機到底是開了多少的 port 呢?如同我們前面說的, 您得要先瞭解一下,我們的『服務』跟『 port 』對應的檔案是哪一個?再提醒一次呦!是『 /etc/services 』啦! 而常用來觀察 port 的則有底下兩個程式:

netstat:在本機上面以自己的程式監測自己的 port;
nmap:透過網路的偵測軟體輔助,可偵測非本機上的其他網路主機,但有違法之虞。
見他的大頭王!怎麼使用 nmap 會違法?呵呵!由於 nmap 的功能太強大了,所以很多 cracker (怪客,網路上面的閒人) 會直接以他來偵測別人的主機,這個時候就可能造成違法啦! 只要您使用底下我們分別來說一說這兩個寶貝吧!
列出在監聽的網路服務:
列出網路服務的方式簡單,如下所示:
netstat -tunl
列出已連線的網路連線狀態:
netstat -tun

0 回應: