2011-11-26 70 views
1

我開始學習套接字,我試圖弄清楚爲什麼你需要在請求中指定主機名。如果我已連接到「www.google.com」,那麼請求中的「主機:www.google.com \ r \ n」有什麼意義?服務器不知道自己的名字嗎?HTTP:你爲什麼需要指定主機名?

+1

這實際上是關於HTTP協議,而不是winsock。 –

回答

4

有時服務器確實知道它的主機名,但它並不總是1:1的關係。許多DNS主機名都可以指向相同的IP,因此,1個IP可以有許多DNS主機名。 (另外,一個DNS主機名可以映射到很多IP地址,但這個問題在這個問題上不太重要。)

HTTP請求中的Host:行允許Web服務器知道您請求哪個主機名,並基於那。這允許一臺IP地址的計算機爲多個域提供服務。

例如,如果網絡服務器看到Host: foo.com,它可能服務於一個網站,但Host: bar.com可能會導致返回完全不同的結果。 Web服務器沒有其他數據可以使用這些信息,並且它依賴於Web客戶端來通知它。

2

給定的服務器可以有許多不同的DNS名稱。例如,認爲共享託管網站。