2011-01-27 60 views
27

我最近開始了我作爲web應用程序後端開發人員的工作。我有點卡在瞭解Http請求的生命週期。http請求生命週期

我明白了什麼是

  • 每個HTTP請求第一次接觸它解決請求的URL域名到IP地址的DNS服務器。
  • 獲取Web服務器IP地址請求後,轉發給它(通過PUT請求)。像apache這樣的web服務器處理這個請求並將其轉發給必須處理這個請求的應用程序。

在此之後,我與

  • 丟失如何響應應用程序發送給誰要求,並會Apcache參與這個用戶?
  • 我可以通過一些調試工具在瀏覽器中看到整個流程嗎?
  • 有人可以參考一些鏈接深入瞭解這一點嗎?
+0

添加一個鏈接:[2.2萬維網:HTTP](http://jpkc.ncwu.edu.cn/jsjwl/net/kurose/apps/http.htm) – 2013-09-29 09:21:35

+0

上面的樣子現在已經死了,增加了新的一個我發現[Web協議](https://www3.ntu.edu.sg/home/ehchua/programming/#webapp) – 2016-01-02 07:31:02

回答

67

我想你對你的理解有點不對。

如果你到www.google.com(不使用任何形式的,只是想該網站),這是發生了什麼:

  1. 首先,瀏覽器需要翻譯www.google.com到一個IP地址如果它不知道它。如果知道的話,在這一點上什麼都不會發生。如果它不知道它,它會聯繫DNS服務器來解析名稱。
  2. 然後瀏覽器將打開一個到www.google.com的IP地址的TCP連接併發送一個HTTP GET請求。在這個例子中,它將是
    GET/HTTP/1.1
    Host: www.google.com
  3. 服務器軟件將得到這個HTTP請求。它會以某種方式生成一個HTTP響應,並通過TCP連接發回它。服務器如何做到這一點是服務器軟件的依賴。例如,您可以在Apache中插入應用程序代碼,或者僅使Apache從文件系統返回一個文件。 PHP是由一些軟件調用的應用程序,然後生成發送給瀏覽器的響應。當發送響應時,在HTTP版本1.0中,連接關閉。雖然HTTP 1.1可以有持久連接。
  4. 當瀏覽器得到響應時,它通常會在屏幕上呈現它。 HTTP請求現在完成。點擊「搜索」將向服務器發送新的請求。

GET,PUT,POST,DELETE等是HTTP request methods。它們具有您可以在RFC中看到的特殊含義。

Cookies通常用於跨多個HTTP請求標識同一用戶,稱爲會話。因此,這些cookie被稱爲會話cookie

您可以使用網絡嗅探器工具調試通信,例如Wireshark。 Firefox有一個名爲Tamper Data的第三方插件,可以在將請求發送到服務器之前更改該請求。

HTTP RFC是它如何工作的一個很好的來源。

希望它有幫助。

+0

如何在客戶端響應被適當地發送到正確的窗口/標籤/應用,其具有提出請求 – Poorna 2012-01-02 17:27:42

1

而服務器接收來自瀏覽器的請求時,瀏覽器將被綁定到在瀏覽器的主機,IP地址和端口號一些端口將與發送到服務器的請求被附接。服務器發送的性反應的IP地址和端口號

2

這是在不同的產品基於公司詢問流行的面試問題之一。

HTTP是一種請求 - 響應協議。例如,用戶代理通常通過打開與主機上特定端口(默認爲端口80)的TCP/IP連接來向服務器發起請求。請求本身包含:

的請求線,

一組請求頭的,並 的實體。

的HTTP服務器偵聽該端口等待客戶端發送的請求消息。在收到請求後,服務器發送的響應包括:

狀態行, 一組響應標頭,以及 一個實體。 在請求或響應中的實體可以被認爲是簡單地作爲有效載荷,其可以是二進制數據。其他項目是可讀的ASCII字符。響應完成後,瀏覽器或服務器可能會終止TCP/IP連接,或者瀏覽器可能會發送另一個請求。