最近實作Socket Client與Socket Server互連的範例後,腦中浮現出一個問題,既然Socket連線這麼簡單為什麼網路不用Socket構成而用HTTP呢?
Socket是傳輸層協議(例如TCP或UDP)的介面;HTTP是應用層協議,決定資料內容的格式。換句話說,Socket僅負責傳輸資料,但雙方並無法理解資料內容是什麼,所以需要HTTP協議作為網路中互相溝通的"共同語言"。也就是說Google收到查詢時,知道送來的請求內容是什麼,然後也會以客戶端看得懂的方式回應查詢結果。
網際網路實際上很少是直接連線,通常中間會通過許多節點,例如查詢Google時,會從個人電腦連到社區的網路機房,中華電信的地區機房,Google台灣的代理,最後才連到Google的伺服器,而不是從個人的電腦直接連線到Google的伺服器,因此Socket直連並不實際。
Socket一旦建立會佔用port直到斷線,但網際網路應用很少需要持續性地互相傳輸資料,如果每個port都被佔用,那 Server能處理的請求數量會嚴重受限。而HTTP是Client請求發送出去Server才須回應,能處理更多請求,符合網際網路的應用需求。
以上是我上網查到的結論。
沒有留言:
張貼留言