Cykl Życia Żądania Http

Ostatnio zacząłem pracę jako web application backend developer. Trochę utknąłem w zrozumieniu cyklu życia żądania Http.

To co zrozumiałem to

  • każde żądanie Http najpierw kontaktuje się z serwerem DNS, który rozwiązuje domenę URL żądania na adres IP.
  • Po pobraniu adresu IP serwera jest do niego przekazywane żądanie (poprzez żądanie PUT). Serwer WWW, taki jak apache, obsługuje to żądanie i przekazuje je do aplikacji, która musi obsłużyć to.

After this I am lost with

  • Jak odpowiedź jest wysyłana przez aplikację do użytkownika, który o nią poprosił i czy apcache będzie w to zaangażowany?
  • Czy Mogę zobaczyć cały przepływ w przeglądarce za pomocą niektórych narzędzi do debugowania?
  • Czy ktoś może skierować jakieś linki, aby to dogłębnie zrozumieć?
Author: Poorna, 2011-01-27

3 answers

Myślę, że trochę się mylisz co do tego, co rozumiesz.

Jeśli pójdziesz do www.google.com (nie używając żadnych formularzy, po prostu chcąc stronę), tak się dzieje:

  1. najpierw przeglądarka musi przetłumaczyć www.google.com na adres IP, Jeśli jeszcze go nie zna. Jeśli to wie, nic się nie dzieje w tym momencie. Jeśli nie wie o tym, kontaktuje się z serwerem DNS, aby rozwiązać nazwę.
  2. wtedy przeglądarka otworzy połączenie TCP z adresem IP www.google.com oraz wyślij żądanie HTTP GET over. W tym przykładzie będzie to
    GET / HTTP/1.1
    Host: www.google.com
  3. oprogramowanie serwera otrzyma to żądanie HTTP. W jakiś sposób wygeneruje odpowiedź HTTP i wyśle ją z powrotem poprzez połączenie TCP. Sposób działania serwera jest zależny od oprogramowania serwera. Możesz na przykład podłączyć kod aplikacji w Apache, lub po prostu sprawić, że Apache zwróci Plik z systemu plików. PHP jest aplikacją wywoływaną przez niektóre oprogramowanie, które następnie generuje odpowiedź wysyłaną do przeglądarki. Gdy odpowiedź jest wysyłane, w wersji HTTP 1.0 połączenie jest zamknięte. HTTP 1.1 może jednak mieć trwałe połączenia.
  4. gdy przeglądarka otrzymuje odpowiedź, zazwyczaj renderuje ją na ekranie. Żądanie HTTP zostało wykonane. Kliknięcie na "szukaj" spowoduje wysłanie nowego żądania do serwera.

GET, PUT, POST, DELETE i inne to metody żądania HTTP. Mają one specjalne znaczenie, które można zobaczyć w RFC.

Pliki cookie są powszechnie używane do identyfikacji tego samego użytkownika w wielu żądaniach HTTP, zwanych sesjami. Dlatego te pliki cookie nazywane są plikami sesyjnymi

Można debugować komunikację za pomocą narzędzia network sniffer, na przykład Wireshark. Firefox posiada wtyczkę strony trzeciej o nazwie Tamper Data , która może zmienić żądanie, zanim zostanie wysłane na serwer.

HTTP RFC jest dobrym źródłem tego, jak to wszystko działa.

Mam nadzieję, że to pomoże.
 74
Author: foens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-27 09:47:08

Jest to jedno z popularnych pytań wywiadowych zadawanych w różnych firmach opartych na produktach.

HTTP jest protokołem typu request-response. Na przykład agent użytkownika inicjuje żądanie do serwera, zazwyczaj otwierając połączenie TCP/IP do określonego portu na hoście (domyślnie port 80). Samo żądanie składa się z:

A request line,

Zestaw nagłówków żądań oraz byt.

Serwer HTTP nasłuchujący na tym porcie czeka na wysłanie żądania przez Klienta wiadomość. Po otrzymaniu żądania serwer wysyła odpowiedź, która zawiera:

Linia statusu, zestaw nagłówków odpowiedzi oraz byt. Encja w żądaniu lub odpowiedzi może być traktowana po prostu jako ładunek, który może być danymi binarnymi. Pozostałe elementy są czytelnymi znakami ASCII. Po zakończeniu odpowiedzi przeglądarka lub serwer może przerwać połączenie TCP / IP lub może wysłać kolejne żądanie.

 2
Author: Shivam Verma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-28 04:45:36

Podczas gdy serwer otrzymuje żądanie z przeglądarki, przeglądarka zostanie powiązana z jakimś portem na hoście , adres ip i numer portu przeglądarki zostanie dołączony do żądania, które wysyła do serwera. serwer wysyła odpowiedź na adres ip i numer portu

 1
Author: Sakkeer Hussain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-20 05:12:13