iT邦幫忙

0

請問IIS或APACHE的80 PORT, 為何可服務這麼多的連線?

今天突然有人問我, 80 PORT為何可以同時服務這麼多人? 例如1台電腦, 使用80 PORT去架IIS或APACHE, 但不管是IIS或APACHE占了80 PORT後, 這個80 PORT為何可提供這麼多人使用? 請問他是如何同時處理那麼多的連線呢? 謝謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

14
wiseguy
iT邦超人 1 級 ‧ 2013-07-29 22:53:37
最佳解答

小雨大講得已經很接近了,不過有一點稍微補充,系統沒有再開新的Port喔,只會由新的 process/thread 來接手客戶端的服務。所以觀看系統連線時,會發現在 server 這邊所用的 Port 都會是 80。

其實 Port 有點像是<門>的意思。這麼多連過來的連線,藉由 Port 號,告訴系統說它們要通過這個<門>進去,而門後則是 IIS/Apache 這個 daemon 在房間裡等著接待。當然啦!IIS/Apache 是媽媽桑,只負責迎接,接下來就由 process/thread 負責按捺了。所以為什麼可以服務這麼多人就是醬。以上是成人版回答。噴鼻血

14
一級屠豬士
iT邦大師 1 級 ‧ 2013-07-29 18:46:35

其實這個Port只是Server Process(後文用主Process)用來聽的,當有連線要求進來時,
主Process會向作業系統要求開啟新的Port,然後透過此Port(在這案例是80),
將新的Port傳給要求連線的Client,主Process會Fork新的Process(子Process/ Child Process)(或是新的Thread,或是Process/Thread 混合型態,在此先不細究),
由Fork出來的子Process接手新的Port,與Client交互動作,直到有一方停止連線,
主Process持續聽原本的Port,繼續重複剛剛的動作,直到收到終止訊號(由作業系統傳給主Process,例如要關機,或是接受到指令).

以上是概略描述一下.

我要發表回答

立即登入回答