2010-11-05 174 views
1

一旦用戶點擊一個URL,本地機器在主機文件上查找是否有任何條目,如果不是本地機器ping某些DNS(如何?在哪裏?)來解析URL並獲取關聯的IP地址...一旦獲得IP,它會在該IP地址上打開套接字通道並與服務器交互...客戶端(瀏覽器)如何生成發送到服務器的請求?

這是準確的嗎?

我想了解一步一步詳細地瞭解如何生成請求並將其發送到服務器。

感謝您的輸入!

+0

如果你想詳細瞭解我不認爲你應該問stackoverflow。你應該開始一些嚴肅的閱讀(包括RFC)。 – 2010-11-05 20:26:46

+1

*(如何?哪裏?)*您的互聯網連接有一個DNS服務器關聯。查找從那裏開始並從服務器跳到服務器,直到找到正確的IP。 http://en.wikipedia.org/wiki/File:An_example_of_theoretical_DNS_recursion.svg – 2010-11-05 20:27:17

+0

相信我我讀過很多文檔,包括Apache 2.2文檔。有時候會有人指出你的重要部分,因爲我無法消化所有這一切 – qodeninja 2010-11-05 20:30:04

回答

2

我假設你在談論TCP連接。如您所說,客戶端將在其hosts文件中進行查找;如果沒有條目,它將查找其第一個配置的DNS服務器(基於手動配置或DHCP設置)並啓動到該服務器的連接。一旦客戶端具有所需服務器的地址,它就會向該服務器發送一個SYN數據包,該SYN數據包將用SYN/ACK進行回覆,客戶端將用ACK數據包進行回覆以建立連接。這是TCP handshake。建立連接後,客戶端和服務器通過各自的套接字進行通信,通過TCP協議層傳遞數據,併發送糾錯和元數據包以相互協調。該信息包含請求的類型,通常取決於協議。對於HTTP,這通常是一個GET或POST請求,由服務器進行適當的響應。如果你想獲得更具體的信息,你可以發佈你感興趣的協議嗎?

+0

DHCP設置 - 我看到...感謝您分享這個詳細的網絡信息。我只對tcp/ip有一個寬鬆的理解,但是我通常對理解http請求的內容感興趣。到目前爲止,這是很棒的! – qodeninja 2010-11-05 20:36:07

4

有關DNS工作方式的詳細概述,請參閱RFC 1035以及HTTP的工作方式請參閱RFC 2616

這些是規範文檔。他們會得到非常詳細的信息,但是如果您堅持整體運營部分並查找需要說明的部分,這些部分會非常有幫助。

基本上對於任何需要解釋的協議(在更深層次上,您可能想看到TCP),獲取信息最詳細的地方就是RFC。

+0

謝謝。我喜歡規範中的ascii圖表lol – qodeninja 2010-11-05 20:33:46

+0

爲什麼不發佈IETF的直接鏈接? – 2010-11-05 20:35:05

+0

改變了,我只是一種與谷歌的第一擊。 – 2010-11-05 20:37:36

1

是的。你ae越來越不正確。

它看起來在主機文件,然後在DNS中。在linux機器上,您可以更改etc/resolv.conf文件中的順序。

您的主DNS服務器配置在您的tcp/ip設置。 DNS正在使用端口UDP/53進行請求。如果您的DNS無法解析主機名稱,它會將其轉發給父DNS,但這是另一個話題。 獲取IP地址後,它將使用地址(IP +端口)打開服務器的套接字。

希望它有幫助。

1

http://betterexplained.com/wp-content/uploads/compression/HTTP_request.png

+1

雖然是一幅美麗的圖畫,但我不認爲這真的能夠在所需的深度和技術意義上回答這個問題。 – 2010-11-05 21:15:20

相關問題