小雨大講得已經很接近了,不過有一點稍微補充,系統沒有再開新的Port喔,只會由新的 process/thread 來接手客戶端的服務。所以觀看系統連線時,會發現在 server 這邊所用的 Port 都會是 80。
其實 Port 有點像是<門>的意思。這麼多連過來的連線,藉由 Port 號,告訴系統說它們要通過這個<門>進去,而門後則是 IIS/Apache 這個 daemon 在房間裡等著接待。當然啦!IIS/Apache 是媽媽桑,只負責迎接,接下來就由 process/thread 負責按捺了。所以為什麼可以服務這麼多人就是醬。以上是成人版回答。
其實這個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,例如要關機,或是接受到指令).
以上是概略描述一下.