как сайт загружается в нашем браузере - PullRequest
0 голосов
/ 16 июля 2010

Когда я набираю www.google.com в адресной строке браузера, что конкретно происходит технически и как загружается весь материал.Учитывая, что загружается та же HTTP-страница ...

какова роль DNS-сервера, IP-адрес, MAC-адрес, маска подсети, настройка прокси-сервера, шлюз по умолчанию в этом случае.

сделать что-то другое, если я нахожусь в другом классе сети?

Ответы [ 3 ]

4 голосов
/ 20 июля 2010

Вы спрашиваете обо всех вещах одновременно, это большая концепция. Все еще вкратце.

  • Когда вы вводите www.google.com (или любое другое имя сайта), запрос отправляется на DNS-сервер, который преобразует URL-адрес в IP-адрес.

Подробнее читайте здесь: http://en.wikipedia.org/wiki/Domain_Name_System

  • Затем запрос отправляется на сервер, на котором размещается веб-сайт, на сервере, который предоставляет услуги хостинга для веб-сайта, содержатся материалы, которые должны быть показаны миру.

Читать о сервере Apache: http://en.wikipedia.org/wiki/Apache_HTTP_Server

Подсеть: http://en.wikipedia.org/wiki/Subnetwork

это что-то меняет, если я нахожусь в другом классе сети?

Нет, это не имеет значения, если вы находитесь в другом классе сети.

(Исследование про роутеры: http://en.wikipedia.org/wiki/Routers)

1 голос
/ 22 августа 2011

Очки, чтобы помочь вам:

  • Каждый компьютер, принадлежащий сети, включая ваш, имеет IP-адрес.
  • В каждой сети есть хосты. Сеть может быть разделена на подсети
  • IP-адресация является иерархической. Это помогает при маршрутизации
  • IP-адреса могут быть назначены вручную или сервером DHCP Ручная настройка IP DHCP- Протокол динамической конфигурации хоста
  • Все пакеты, отправляемые на ваш IP-адрес, поступают через вашу ISP-сеть - это включает в себя коммутаторы и маршрутизаторы
  • Пакеты из других сетей пересылаются по этому IP-адресу. Как только они достигают ближайшего переключателя. Коммутаторы используют ваш MAC-адрес для отправки пакетов на ваш компьютер. MAC-адрес получен ARP
  • Адрес шлюза - это путь, по которому пакеты отправляются из вашей сети или вашего провайдера
  • Прокси-серверы - это серверы, которые разрешают соединения через них

Чтобы узнать больше о том, как это работает, загрузите Wireshark: Запустите сниффер и загрузите google.com в свой браузер.

Вы заметите следующее

  1. Браузер сначала отправляет DNS-запрос с именем хоста на DNS-сервер вашего интернет-провайдера (или вашей сети, если таковые имеются) - DNS определяет IP-адрес по имени хоста.
  2. DNS-сервер отвечает с IP-адресом сервера
  3. Затем браузер отправляет HTTP-запрос Это в форме, например GET /index.html HTTP / 1.1
  4. Сервер отвечает в формате
  5. Данные отправляются пользователю
  6. Обычно, если веб-страница запрашивается, она имеет формат HTML (с javascript, css и т. Д.). Затем он анализируется и обрабатывается браузером для получения веб-страницы, которую мы видим.

Чтобы проверить это:

ON LINUX , тип

telnet stackoverflow.com 80

в терминале. Как только он подключится, введите следующее (быстро, прежде чем он отключится):

GET /index.html HTTP/1.1 (enter)
Host: stackoverflow.com  (enter)(enter)

чтобы увидеть ответ

НА ОКНАХ

Загрузите клиент для замазки и укажите хост как stackoverflow.com, порт как 80 и выберите тип подключения как Telnet.

Как только он подключится, повторите шаги, описанные выше, чтобы увидеть ответ.

0 голосов
/ 24 апреля 2014

Приведенные выше примеры иллюстрируют, как все работает на уровне 7, но не на уровне 3+ с точки зрения вашего устройства. Я хотел бы взглянуть на использование tcpdump / wireshark, чтобы попытаться сбросить все сетевые пакеты, если вы заинтересованы в получении таких низкоуровневых деталей. Пример приведен ниже (работает на FreeBSD).

Примечания : - Обязательно запустите wireshark / tcpdump перед вашим веб-браузером / клиентом, чтобы пакеты были перехвачены. - Укажите правильный порт при запуске wireshark / tcpdump; фильтрация соединения по DNS-адресу может работать не во всех случаях, если на удаленном веб-сервере настроена балансировка нагрузки / отработка отказа.

Окно с tcpdump:

# tcpdump -A tcp port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on em0, link-type EN10MB (Ethernet), capture size 65535 bytes
capability mode sandbox enabled
01:48:17.917640 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [P.], seq 1631738201:1631738227, ack 30720002, win 65535, length 26
E..BP.@.@...
...J}.t...PaBYY....P...F5..GET /index.html HTTP/1.1

01:48:17.918119 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [.], ack 26, win 65535, length 0
E..(.U..@..{J}.t
....P......aBYsP...'+........
01:48:18.072501 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [P.], seq 26:28, ack 1, win 65535, length 2
E..*P.@.@...
...J}.t...PaBYs....P...F...

01:48:18.072662 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [.], ack 28, win 65535, length 0
E..(.X..@..xJ}.t
....P......aBYuP...')........
01:48:18.074353 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [P.], seq 1:687, ack 28, win 65535, length 686
E....Y..@...J}.t
....P......aBYuP...Z...HTTP/1.0 400 Bad request: request header 'Host' missing
Content-type: text/html; charset="iso-8859-1"

<html>
<body>
<h3> Request denied by WatchGuard HTTP proxy. </h3>
<b> Reason: </b> request header 'Host' missing <br>
<hr size="1" noshade>
<b> Method: </b> GET <br>
<b> Host: </b> 74.125.239.116 <br>
<b> Path: </b> /index.html <br>
<hr size="1" noshade>
</body>
                                                                                                                                                                                                                                                                                              <!-- PAD --></html>

01:48:18.074512 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [F.], seq 687, ack 28, win 65535, length 0
E..(.Z..@..vJ}.t
....P......aBYuP...$z........
01:48:18.074683 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [.], ack 688, win 65014, length 0
E..(P.@.@...
...J}.t...PaBYu....P...F...
01:48:18.077023 IP 10.0.2.15.50636 > nuq05s01-in-f20.1e100.net.http: Flags [F.], seq 28, ack 688, win 65535, length 0
E..(P.@.@...
...J}.t...PaBYu....P...F...
01:48:18.077070 IP nuq05s01-in-f20.1e100.net.http > 10.0.2.15.50636: Flags [.], ack 29, win 65535, length 0
E..(.[..@..uJ}.t
....P......aBYvP...$y........

Окно с телнетом:

# telnet www.google.com 80
Trying 74.125.239.116...
Connected to www.google.com.
Escape character is '^]'.
GET /index.html HTTP/1.1

HTTP/1.0 400 Bad request: request header 'Host' missing
Content-type: text/html; charset="iso-8859-1"

<html>
<body>
<h3> Request denied by WatchGuard HTTP proxy. </h3>
<b> Reason: </b> request header 'Host' missing <br>
<hr size="1" noshade>
<b> Method: </b> GET <br>
<b> Host: </b> 74.125.239.116 <br>
<b> Path: </b> /index.html <br>
<hr size="1" noshade>
</body>
                                                                                                                                                                                                                                                                                              <!-- PAD --></html>
Connection closed by foreign host.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...