Http Запрос жизненного цикла - PullRequest
33 голосов
/ 27 января 2011

Я недавно начал работать разработчиком бэкэнда веб-приложения. Я немного застрял в понимании жизненного цикла запроса Http.

Что я понял, это

  • Каждый запрос Http сначала связывается с DNS-сервером, который разрешает домен URL запроса в IP-адрес.
  • После выборки запрос IP-адреса веб-сервера перенаправляется на него (через запрос PUT). Веб-сервер, такой как apache, обрабатывает этот запрос и передает его приложению, которое должно это обработать.

После этого я теряюсь с

  • Каким образом приложение отправляет ответ пользователю, который его запросил, и будет ли Apcache участвовать в этом?
  • Могу ли я увидеть весь поток в моем браузере с помощью некоторых инструментов отладки?
  • Может кто-нибудь ссылаться на некоторые ссылки, чтобы глубже понять это?

Ответы [ 3 ]

82 голосов
/ 27 января 2011

Я думаю, что вы немного ошибаетесь в своем понимании этого.

Если вы заходите на сайт www.google.com (не пользуетесь никакими формами, просто хотите получить сайт), вот что происходит:

  1. Сначала браузер должен перевести www.google.com на IP-адрес, если он его еще не знает.Если он это знает, на этом этапе ничего не происходит.Если он не знает об этом, он связывается с DNS-сервером для определения имени.
  2. Затем браузер откроет TCP-соединение с IP-адресом www.google.com и отправит HTTP-запрос GET.В этом примере это будет
    GET / HTTP/1.1<br> Host: www.google.com
  3. Серверное программное обеспечение получит этот HTTP-запрос.Он каким-то образом сгенерирует HTTP-ответ и отправит его через TCP-соединение.Как сервер это делает, зависит от серверного программного обеспечения.Например, вы можете подключить код приложения в Apache или просто заставить Apache возвращать файл из файловой системы.PHP - это приложение, вызываемое некоторым программным обеспечением, которое затем генерирует ответ, отправленный в браузер.Когда ответ отправлен, в HTTP версии 1.0 соединение закрывается.HTTP 1.1 может иметь постоянные соединения.
  4. Когда браузер получает ответ, он обычно отображает его на экране.HTTP-запрос завершен.Нажатие на «поиск» отправит новый запрос на сервер.

GET, PUT, POST, DELETE и другие методы HTTP-запроса .Они имеют особое значение, которое вы можете увидеть в RFC.

Cookies обычно используются для идентификации одного и того же пользователя в нескольких HTTP-запросах, называемых сессиями.Поэтому эти cookie-файлы называются сеансовыми cookie-файлами

. Вы можете отлаживать связь, используя инструмент сетевого анализатора, например, Wireshark .Firefox имеет сторонний плагин под названием Tamper Data , который может изменить запрос перед отправкой на сервер.

HTTP RFC - хороший источник того, каквсе работает.

Надеюсь, это поможет.

2 голосов
/ 28 июля 2014

Это один из популярных вопросов для интервью, задаваемых в различных компаниях, работающих с продуктами.

HTTP - протокол запроса-ответа.Например, пользовательский агент инициирует запрос к серверу, обычно открывая соединение TCP / IP с конкретным портом на хосте (порт 80 по умолчанию).Сам запрос содержит:

строку запроса,

набор заголовков запроса и объект.

HTTP-сервер, прослушивающий этот порт, ожидает отправки клиентомсообщение запроса.После получения запроса сервер отправляет ответ, который содержит:

строку состояния, набор заголовков ответа и объект.Сущность в запросе или ответе может рассматриваться просто как полезная нагрузка, которая может быть двоичными данными.Другие элементы являются читаемыми символами ASCII.По завершении ответа браузер или сервер могут разорвать соединение TCP / IP или браузер может отправить другой запрос.

2 голосов
/ 20 декабря 2013

пока сервер получает запрос от браузера, браузер будет привязан к какому-либо порту на хосте, ip-адрес и номер порта браузера будут привязаны к запросу, отправляемому на сервер.Сервер отправляет ответ на IP-адрес и номер порта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...