Как происходит связь между браузером и веб-сервером?

Может ли кто-нибудь объяснить, как происходит связь между браузером и веб-сервером? Я хочу узнать, как

  • GET, POST-глаголы (среди прочих)
  • печенье
  • сессии
  • строки запроса

работают за сценой.

Ответ 1

Протокол передачи гипертекста (HTTP) - это протокол, используемый для передачи веб-страниц (например, тот, который вы сейчас читаете). Протокол - это не что иное, как стандартный способ делать вещи. Если бы вы встретились с президентом Соединенных Штатов или королем страны, были бы конкретные процедуры, за которыми вам следовало бы следовать. Вы не могли просто подняться и сказать "эй чувак". Был бы особый способ ходить, разговаривать, стандартное приветствие и стандартный способ прекратить разговор. Протоколы в стеке TCP/IP выполняют одну и ту же цель.

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

Уровень приложения

... состоит из всех приложений, которые используют сеть для передачи данных. Он не заботится о том, как данные попадают между двумя точками, и он очень мало знает о состоянии сети. Приложения передают данные на следующий уровень в стеке TCP/IP, а затем продолжают выполнять другие функции до получения ответа. На уровне приложений используются имена хостов (например, www.dalantech.com) для адресации. Примеры протоколов уровня приложения: протокол передачи гипертекста (HTTP-просмотр в Интернете), простой протокол передачи почты (SMTP-электронная почта), службы доменных имен (DNS -разделение имени хоста на IP-адрес), чтобы назвать лишь некоторые из них.

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

Транспортный уровень

... отвечает за назначение номеров портов источника и адресата приложениям. Номера портов используются транспортным слоем для адресации, и они варьируются от 1 до 65535. Номера портов от 0 до 1023 называются "хорошо известными портами". Номера ниже 256 зарезервированы для общедоступных (стандартных) служб, которые выполняются на уровне приложения. Вот несколько: 25 для SMTP, 53 для DNS (udp для разрешения домена и tcp для передачи зоны) и 80 для HTTP. Номера портов от 256 до 1023 присваиваются IANA компаниям для приложений, которые они продают.

Номера портов от 1024 до 65535 используются для клиентских приложений - например, веб-браузер, который вы используете для чтения этой страницы. Windows будет назначать только номера портов до 5000 - более чем достаточно номеров портов для ПК на базе Windows. Каждое приложение имеет уникальный номер порта, назначенный ему транспортным уровнем, так что, когда данные получены транспортным слоем, он знает, какое приложение должно предоставить данные. Например, когда у вас работает более одного окна браузера. Каждое окно представляет собой отдельный экземпляр программы, которую вы используете для работы в Интернете, и каждый из них имеет другой номер порта, назначенный ему, поэтому вы можете перейти на www.dalantech.com в одном окне браузера, и этот сайт не загружается в другой браузера. Приложения, такие как FireFox, которые используют окна с вкладками, просто имеют уникальный номер порта, назначенный каждой вкладке

Уровень Интернета

... является "клеем", который объединяет сети. Он позволяет отправлять, получать и маршрутизировать данные.

Сетевой уровень

... состоит из вашей сетевой интерфейсной платы (NIC) и подключенного к ней кабеля. Это физический носитель, который используется для передачи и приема данных. На уровне сети используются адреса управления доступом к среде передачи (MAC), которые обсуждались ранее, для адресации. MAC-адрес фиксируется во время создания интерфейса и не может быть изменен. Есть несколько исключений, таких как маршрутизаторы DSL, которые позволяют клонировать MAC-адрес сетевого адаптера на вашем ПК.

Для получения дополнительной информации:

Ответ 2

Сначала ваш браузер разрешает имя сервера через DNS для IP-адреса. Затем он открывает TCP-соединение с веб-сервером и пытается связываться через HTTP. Обычно это TCP-порт 80, но вы можете указать другой (http://server:portnumber).

HTTP выглядит так:

Как только он подключен, он отправляет запрос, который выглядит следующим образом:

GET /site HTTP/1.0
Header1: bla
Header2: blub
{emptyline}

Например, заголовок может быть Authorization или Range. Подробнее см. здесь.

Затем сервер отвечает следующим образом:

200 OK
Header3: foo
Header4: bar

content following here...

Например, заголовок может быть Date или Content-Type. Подробнее см. здесь.

Посмотрите Wikipedia для HTTP для получения дополнительной информации об этом протоколе.

Ответ 3

Связи для спецификаций каждого аспекта вопроса:

  • GET, POST-глаголы (среди прочих). Спецификация HTTP исчерпывающе обсуждает все аспекты HTTP связь (протокол для связи между веб-сервером и браузером). В нем объясняются протоколы сообщения "Запрос" и "Ответ".

  • Cookies - устанавливаются путем присоединения HTTP-заголовка Set-Cookie к HTTP-ответу.

  • QueryStrings - являются частью URL-адреса в HTTP-запросе, которые следуют за первым вхождением "?" персонаж. Связанная спецификация относится к разделу 3.4 спецификации URI.

  • Сеансы. HTTP - это синхронный протокол без учета состояния. Сессии или иллюзия состояния могут быть созданы посредством (1) использования файлов cookie для хранения данных состояния в виде обычного текста на клиентском компьютере, (2) передачи данных в URL-адрес и запроса запроса, (3) отправки POST запросы с набором значений, которые могут указывать состояние, и (4) сохранение информации о состоянии с помощью механизма сохранения на стороне сервера, который извлекается ключом сеанса (ключ сеанса разрешен либо из файла cookie, URL/Querystring или POST коллекция.

Объяснение HTTP может продолжаться в течение нескольких дней, но я попытался предоставить краткий, но концептуально полный ответ, и включить соответствующие ссылки для дальнейшего ознакомления с официальными спецификациями.

Ответ 4

Ваш браузер сидит поверх TCP/IP, так как сеть основана на стандартах, обычно на порту 80, что происходит, когда вы вводите адрес, например google.com, свой компьютер, на котором работает браузер, создает пакеты данных, инкапсулированные на каждом уровне соответственно стандартам OSI (думайте о конвертах разных размеров, упакованных в каждый конверт следующего размера), OSI определяет 7 уровней, в одном из конвертов содержится адрес источника и адрес назначения ( это веб-сайт), закодированный в двоичном формате.

По мере того как он достигает 1-го уровня, в терминах OSI он передается через медиа-передатчик (например, кабель, DSL).

Если вы подключены через Интернет-провайдер, пакетный пакет конвертов передается в интернет-провайдер, сетевая система ISP, просматривает многоуровневый пакет конвертов путем декодирования в обратном порядке, чтобы узнать адрес, затем интернет-провайдер проверяет свой домен Назовите Системную базу данных, чтобы узнать, есть ли у них маршрут к этому адресу (кэшируется в памяти, если он это делает, он пересылает его через интернет-сеть - снова многоуровневый пакет конвертов).

Если это не так, интернет-провайдер допрашивает DNS-сервер верхнего уровня, чтобы сказать: "Эй, введите мне маршрут по указанному вами адресу, т.е. браузер", DNS-сервер верхнего уровня затем передает маршрут провайдеру, который затем сохраняется в памяти сервера ISP.

Многоуровневая упаковка конвертов передается и принимается сервером веб-сайта после успешной маршрутизации пакетов (подумайте о маршрутизации в качестве указателей для направления на сервер), который, в свою очередь, распаковывает многоуровневый пакет конвертов, извлекает адрес источника и говорит: "Ага, это для меня, правильно, я знаю адрес назначения (это вы, браузер), затем сервер пакетирует веб-страницы в упакованные слоистые конверты и отправляет их обратно (обычно в обратном маршруте, но не всегда случай).

Ваш браузер, чем получает упакованные конверты и распаковывает каждый из них. Затем ваш компьютер дешифрует данные, и ваш браузер отображает страницы на экране.

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

Ответ 6

Это зависит от веб-сервера, но если вам интересно, как это выглядит с клиентской стороны, просто установите Live Headers и Firebug для Firefox. Когда открыта вкладка net в firebug и live headers, должно быть ясно, как они взаимодействуют.

Для более глубокого изучения фактических данных, идущих туда и обратно, используйте wireshark.

Ответ 7

Существует коммерческий продукт с интересным логотипом, который позволяет видеть все виды трафика между сервером и клиентом с именем charles.

Другие инструменты с открытым исходным кодом: Live HttpHeaders, Wireshark или Firebug.

Ответ 8

Связь между браузером и веб-сервером происходит на стольких уровнях, что почти невозможно ответить на этот вопрос. HTTP играет роль, но HTTP не имеет смысла без TCP, что бессмысленно без IP, что бессмысленно без физической сети, на которую оно отправлено. Затем есть запросы POST vs GET, которые являются похожими, но достаточно разными, чтобы гарантировать особую важность. Иногда HTTP-запрос должен быть аутентифицирован, иногда ему это не нужно. Следует упомянуть типы Mime. Затем браузер отправляет другой запрос, если есть прокси. А потом также кодировки играют роль. Итак, я думаю, самый краткий ответ на этот вопрос: браузер запрашивает сервер для данных, а сервер дает запрашиваемые данные в браузере.