為什麼大家都用 3000?一文搞懂 Port 的用途與選擇

為什麼大家都用 3000?一文搞懂 Port 的用途與選擇

前言

最近有不少學生問我:「Port 是什麼?為什麼大家都用 3000?」與其一個個解釋,不如一次寫清楚:什麼是 Port、怎麼選、怎麼查,用對了不再踩雷。

Port 是什麼?

Port 中文是通訊埠,如果你是一名開發者,應該會很常看到以下的訊息

1
2
3
4
5
6
7
Server is running at http://localhost:3000

Server is running at http://localhost:8000

Server is running at http://localhost:8080

Server is running at http://localhost:5000

在這邊我們所指的 Port 就是 3000800080805000 這些數字。

那麼為什麼要有這些 Port 呢?我們都知道一台電腦對外提供服務時,都會有一組 IP 位址,但是單純持有這個 IP 位址就可以知道這個電腦提供了哪些服務嗎?答案是不能的,畢竟一台電腦上你可能有多個服務在運行,例如:

  • Web Server
  • Database Server
  • Game Server
  • FTP Server

這些服務如果都透過同一個 IP 位址來提供服務的話,使用者就無法知道要連接到哪個服務,所以就需要 Port 來區分這些服務,也因此衍生出「Port」這個概念。

舉例來講:

  • Web Server 通常會使用 80 Port(HTTP)或 443 Port(HTTPS)
  • Database Server 通常會使用 3306 Port
  • Game Server 通常會使用 25565 Port
  • FTP Server 通常會使用 21 Port

當你的 IP 位址假設是 192.168.1.1,那麼這些服務的完整連接方式就會是:

  • Web Server: http://192.168.1.1:80https://192.168.1.1:443
  • Database Server: mysql://192.168.1.1:3306
  • Game Server: tcp://192.168.1.1:25565
  • FTP Server: ftp://192.168.1.1:21

所以我們的 Port 就是用來區分這些服務的。

Port 的選擇

那麼接下來另一個問題是…

「我怎麼知道我該選擇哪個 Port?」

首先我們要先了解,Port 的範圍是從 0 到 65535,而這些 Port 實際上依用途可以分成以下三類:

Port 範圍 類型 建議用途
0–1023 公認埠口 系統或標準協定(避免使用)
1024–49151 註冊埠口 常見服務,如 MySQL、Redis
49152–65535 動態/私有埠 本地測試、臨時用途

這些 Port 是隨便定義的嗎?

當然不是,這些 Port 都是 Internet Assigned Numbers Authority(IANA)所定義的,這些 Port 都有其特定的用途,當你不確定時,你可以到 IANA 的官方網站 查看這些你要使用的 Port 是否已經被使用。

例如…你可以查詢一下 Vite 的 Port,Vite 預設使用 5173 Port

port

又或者你可以試著查詢 3000 Port,這是一個許多 Web Server 預設使用的 Port

port

我們可以看到 3000 Port 是有被登記一套軟體叫做「RemoteWare Client RemoteWare」使用的,但是後面我們還可以看到一句話「This entry records an unassigned but widespread use」,這就代表著雖然 3000 Port 是被登記了,但是並沒有被廣泛的使用,所以我們還是可以使用 3000 Port。

所以當你不確定你的 Port 該設置為多少時,你可以先查詢一下 IANA 的官方網站,看看你要使用的 Port 是否已經被使用,若查詢後這個 Port 並沒有被廣泛使用,那麼你就可以安心使用它,不用擔心踩到標準服務的地雷。

如何檢查 Port 是否被佔用?

最後也分享一下我們開發上常常遇到的一個雷點

1
Port already in use

這個錯誤通常代表你的 Port 已經被其他程式佔用了。

那麼我們該如何檢查這個 Port 是否被佔用呢?

假設你目前要使用的 Port 是 3000,那麼你可以使用以下指令來檢查:

1
2
# MacOS / Linux
lsof -i :3000

如果是 Windows 的話,你可以使用以下指令:

1
2
# Windows
netstat -aon | findstr :3000

如果你發現被佔用了,你可以考慮兩種方式:

那麼以上就是關於 Port 的基本知識與使用方式,希望對你有所幫助哩~

Liker 讚賞

這篇文章如果對你有幫助,你可以花 30 秒登入 LikeCoin 並點擊下方拍手按鈕(最多五下)免費支持與牡蠣鼓勵我。
或者你可以也可以請我「喝一杯咖啡(Donate)」。

Buy Me A Coffee Buy Me A Coffee

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ