從用戶瀏覽器輸入url到用戶看到頁面結果的過程,發生了什么事情?


題外話:最近經歷面試,被問到至少三次這個問題,想起來總結一下。其實這個問題可以換個問法:請描述一下一次完整的http請求過程。

 

1、域名解析

   域名解析的過程:

    1).查詢瀏覽器自身DNS緩存

        2).若上面沒有查找到,則搜索操作系統自身的dns緩存

        3).若上面沒有找到,則嘗試讀取hosts文件

        4).若上面沒有找到,向本地配置的首選DNS服務器發送請求

        5).win系統 如果上面沒有找到,操作系統查找NetBIOS name cache

        6).win系統 如果上面沒有找到,查詢wins服務器

        7).win系統 如果上面沒有找到,廣播查找

        8).win系統 如果上面沒有找到,讀取LMHOSTS文件

    若以上多沒有找到,解析失敗

2、 TCP三次握手

3、瀏覽器向服務器發送http請求

一旦建立了TCP連接,Web瀏覽器就會向Web服務器發送請求命令。例如:GET/sample/hello.jsp HTTP/1.1。

4、瀏覽器發送請求頭信息

瀏覽器發送其請求命令之后,還要以頭信息的形式向Web服務器發送一些別的信息,之后瀏覽器發送了一空白行來通知服務器,它已經結束了該頭信息的發送。 

5、服務器處理請求

服務器軟件收到http請求,確定執行什么(ASP.net PHP RUBY JAVA等)來處理他。讀取參數並進行邏輯操作后,生成指定的數據。

6、服務器做出應答

客戶機向服務器發出請求后,服務器會客戶機回送應答,HTTP/1.1 200 OK ,應答的第一部分是協議的版本號和應答狀態嗎

7、服務器發送應答頭信息

正如客戶端會隨同請求發送關於自身的信息一樣,服務器也會隨同應答向用戶發送關於它自己的數據及被請求的文檔。 

8、服務器發送數據

Web服務器向瀏覽器發送頭信息后,它會發送一個空白行來表示頭信息的發送到此為結束,接着,它就以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據。

9、tcp連接關閉

一般情況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP連接,然后如果瀏覽器或者服務器在其頭信息加入了這行代碼:
Connection:keep-alive 
TCP連接在發送后將仍然保持打開狀態,於是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了為每個請求建立新連接所需的時間,還節約了網絡帶寬

 

推薦閱讀:

一次完整的HTTP請求所經歷的7個步驟

從輸入URL到頁面加載完成的過程中都發生了什么

一次完整的Http請求過程

一次完整的HTTP事務是怎樣一個過程?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM