2012-11-22 90 views
0

我在寫本地代理服務器。它已經適用於大多數請求。但是,當我想要解析主機名時,有時候我遇到問題。這是我做的:如何在本地代理服務器中執行DNS請求?

當收到請求的標題時,我過濾出第一行。然後,我將Request-URL(位於兩個空格之間)從該行中取出並存儲到Uri對象中。在那之後我提取與主機名:string host= uri.host; 至少我做DNS-電話:IPAddress[] ips = Dns.GetHostAddresses(host)[0]; (我怎麼知道這裏,該陣列我應該採取的IP請告訴我之間的那些IP的區別。)

就像我說,對於大多數請求工作正常。但有一些地址不能解決。這裏舉一個例子:當我想打開www.gmx.net,我首先得到HTML文件(這工作正常)。之後,瀏覽器重新加載一些網頁對象,如圖片,JavaScript等。那些對象當然有一些URL。其中一個網址無法解析:ipv4-cout.gmx.net。 嘗試解析此URL會導致警告:聲明的主機不明

我需要知道的另一件事是:如何處理別名主機名?例如:當我將主機名gmx.de輸入瀏覽器時,它會自動將其解析爲www.gmx.net。我知道,在CNAME類型的DNS服務器上有Recource Reccords,但我不知道如何實現這一點。

回答

0

我會說,他們回來的順序,DNS服務器發送他們,我不能找到任何特定的順序沒有參考。

Dns.GetHostAddresses Method

在大多數情況下,只會有一個IP地址。在www.gmx.net的情況下,他們確實有2個,理論上這意味着你會循環請求。

www.gmx.net has address 212.227.223.5 
www.gmx.net has address 212.227.223.4 

供參考。 pv4-cout.gmx.net在我的機器上無法解析,並且在以任何其他方式訪問時將導致404錯誤。

gmx.de沒有解析到www.gmx.net,Web服務器上存在URL重定向。

Connecting to www.gmx.de|212.227.223.10|:80... connected. 
HTTP request sent, awaiting response... 301 Moved Permanently 
Location: http://www.gmx.net/ [following] 
相關問題