一旦用戶點擊一個URL,本地機器在主機文件上查找是否有任何條目,如果不是本地機器ping某些DNS(如何?在哪裏?)來解析URL並獲取關聯的IP地址...一旦獲得IP,它會在該IP地址上打開套接字通道並與服務器交互...客戶端(瀏覽器)如何生成發送到服務器的請求?
這是準確的嗎?
我想了解一步一步詳細地瞭解如何生成請求並將其發送到服務器。
感謝您的輸入!
一旦用戶點擊一個URL,本地機器在主機文件上查找是否有任何條目,如果不是本地機器ping某些DNS(如何?在哪裏?)來解析URL並獲取關聯的IP地址...一旦獲得IP,它會在該IP地址上打開套接字通道並與服務器交互...客戶端(瀏覽器)如何生成發送到服務器的請求?
這是準確的嗎?
我想了解一步一步詳細地瞭解如何生成請求並將其發送到服務器。
感謝您的輸入!
我假設你在談論TCP連接。如您所說,客戶端將在其hosts文件中進行查找;如果沒有條目,它將查找其第一個配置的DNS服務器(基於手動配置或DHCP設置)並啓動到該服務器的連接。一旦客戶端具有所需服務器的地址,它就會向該服務器發送一個SYN數據包,該SYN數據包將用SYN/ACK進行回覆,客戶端將用ACK數據包進行回覆以建立連接。這是TCP handshake。建立連接後,客戶端和服務器通過各自的套接字進行通信,通過TCP協議層傳遞數據,併發送糾錯和元數據包以相互協調。該信息包含請求的類型,通常取決於協議。對於HTTP,這通常是一個GET或POST請求,由服務器進行適當的響應。如果你想獲得更具體的信息,你可以發佈你感興趣的協議嗎?
DHCP設置 - 我看到...感謝您分享這個詳細的網絡信息。我只對tcp/ip有一個寬鬆的理解,但是我通常對理解http請求的內容感興趣。到目前爲止,這是很棒的! – qodeninja 2010-11-05 20:36:07
是的。你ae越來越不正確。
它看起來在主機文件,然後在DNS中。在linux機器上,您可以更改etc/resolv.conf文件中的順序。
您的主DNS服務器配置在您的tcp/ip設置。 DNS正在使用端口UDP/53進行請求。如果您的DNS無法解析主機名稱,它會將其轉發給父DNS,但這是另一個話題。 獲取IP地址後,它將使用地址(IP +端口)打開服務器的套接字。
希望它有幫助。
雖然是一幅美麗的圖畫,但我不認爲這真的能夠在所需的深度和技術意義上回答這個問題。 – 2010-11-05 21:15:20
如果你想詳細瞭解我不認爲你應該問stackoverflow。你應該開始一些嚴肅的閱讀(包括RFC)。 – 2010-11-05 20:26:46
*(如何?哪裏?)*您的互聯網連接有一個DNS服務器關聯。查找從那裏開始並從服務器跳到服務器,直到找到正確的IP。 http://en.wikipedia.org/wiki/File:An_example_of_theoretical_DNS_recursion.svg – 2010-11-05 20:27:17
相信我我讀過很多文檔,包括Apache 2.2文檔。有時候會有人指出你的重要部分,因爲我無法消化所有這一切 – qodeninja 2010-11-05 20:30:04