Как работает интернет? Действительно! Интернет стал неотъемлемой частью нашей жизни, для наиболее эффективного использования этого инструмента не помешает его понимание.
В этом цикле статей рассмотрим основную инфраструктуру и технологии, обеспечивающие работу Интернета. Не будем слишком углубляться и охватим все этапы работы Интернета для базового понимания задействованных концепций. Любые комментарии, предложения, вопросы и т. д. приветствуются.
С чего начать? Интернет-адрес
Поскольку Интернет - это глобальная сеть, каждое устройство, подключенное к Интернету, должно иметь уникальный адрес. Интернет-адреса представлены в виде nnn.nnn.nnn.nnn, где nnn - это число от 0 до 255. Этот адрес называется IP-адресом (IP расшифровывается как Интернет-протокол; подробнее об этом позже).
На рисунке ниже показаны два компьютера, подключенных к Интернету; ваш компьютер с IP-адресом 1.2.3.4 и другой компьютер с IP-адресом 5.6.7.8. Интернет представлен как абстрактный объект между ними. (В дальнейшем часть с Интернетом из Рисунка 1 будет рассмотрена подробнее и несколько раз перерисована по мере прояснения деталей.)
Если вы подключаетесь к Интернету через интернет-провайдера (Internet Service Provider - ISP), вам обычно присваивается временный IP-адрес на период соединения. Если вы подключаетесь к Интернету из локальной сети (local area network - LAN), у вашего устройства может быть постоянный IP-адрес или он может получить временный IP-адрес с сервера DHCP (Dynamic Host Configuration Protocol). В любом случае, при подключении к Интернету у вас всегда есть уникальный IP-адрес.
*Практика: программа Ping
Если вы используете Microsoft Windows и подключены к Интернету, есть удобная утилита для проверки, "жив" ли компьютер в сети. Программа называется "ping" (вероятно, в честь звука, издаваемого старыми гидролокаторами подводных лодок).
Перейдите в командную строку. Введите ping www.yandex.ru . Программа отправит "ping" (фактически сообщение с эхо-запросом ICMP (Internet Control Message Protocol)) на указанный компьютер. Проверенный компьютер ответит. Программа посчитает, сколько времени прошло до получения ответа (если он придет). Кроме того, если вы введете доменное имя (т.е. www.yandex.ru ) вместо IP-адреса, ping разрешит доменное имя и отобразит IP-адрес компьютера. Подробнее о доменных именах и разрешении адресов позже.
Стеки протоколов и пакеты
Итак, ваше устройство подключено к Интернету и имеет уникальный адрес. Как оно "разговаривает" с другими устройствами, подключенными к Интернету? Приведем пример: Допустим, ваш IP-адрес 1.2.3.4, и вы хотите отправить сообщение на компьютер 5.6.7.8. Сообщение, которое вы хотите отправить: "Привет, компьютер 5.6.7.8!". Очевидно, при проводном подключении к Интернету сообщение передастся по проводу. Выходит, сообщение необходимо перевести из буквенного текста в электронные сигналы, передать через Интернет, а затем перевести обратно в буквенный текст. Как же это сделать? С помощью стека протоколов. Каждому компьютеру нужен стек протоколов для связи в Интернете, обычно этот стек встроен в операционную систему компьютера. Он называется стеком протоколов TCP/IP из-за двух основных используемых протоколов связи. Стек TCP/IP выглядит следующим образом:
- Прикладной уровень
Протоколы, специфичные для таких приложений, как WWW, электронная почта, FTP и т.д.
- Уровень управления передачей данных
TCP (Transmission Control Protocol Layer) направляет пакеты к определенному приложению на компьютере, используя номер порта.
- Уровень Интернет-протокола
IP направляет пакеты на определенный компьютер, используя IP-адрес.
- Аппаратный уровень
Преобразует двоичные пакетные данные в сетевые сигналы и обратно.
(Например, сетевая карта ethernet, модем и т.д.)
Если бы мы проделали тот же путь, что и сообщение "Привет, компьютер 5.6.7.8!" с нашего компьютера на компьютер с IP-адресом 5.6.7.8, это выглядело бы примерно так:
1. Сообщение начинает свой путь из верхней части стека протоколов на вашем компьютере и продвигается вниз.
2. Если отправляемое сообщение длинное, каждый уровень стека, через который проходит сообщение, разбивает сообщение на более мелкие фрагменты данных. Это связано с тем, что через Интернет (и большинство компьютерных сетей) данные отправляются небольшими легкоуправляемыми фрагментами. В Интернете эти фрагменты данных известны как пакеты.
3. Пакеты проходят через прикладной уровень и переходить на уровень TCP. Каждому пакету присваивается номер порта. Порты мы рассмотрим позже, пока достаточно понимать, что многие программы могут использовать стек TCP/IP и отправлять сообщения. Нам нужно знать, какая программа на конечном компьютере должна получить сообщение, потому что она будет прослушивать определенный порт.
4. После прохождения уровня TCP пакеты переходят на уровень IP. Именно здесь каждый пакет получает свой адрес назначения, 5.6.7.8.
5. Теперь, когда у наших пакетов сообщений есть номер порта и IP-адрес, они готовы к отправке через Интернет. На аппаратном уровне наши пакеты, содержащих буквенный текст сообщения, преобразуются в электронные сигналы и передаются по кабелю.
6. На другом конце кабеля ваш интернет-провайдер имеет прямое подключение к Интернету. Маршрутизатор интернет-провайдера проверяет адрес назначения в каждом пакете и определяет, куда его отправить. Часто следующей остановкой пакета является другой маршрутизатор. Подробнее о маршрутизаторах и интернет-инфраструктуре позже.
7. В конечном итоге пакеты достигают компьютера 5.6.7.8. Здесь пакеты двигаются из нижней части стека TCP/IP целевого компьютера в верхнюю.
8. По мере продвижения пакетов вверх по стеку все данные маршрутизации, добавленные в стек отправляющего компьютера (например, IP-адрес и номер порта), удаляются из пакетов.
9. Когда данные достигают вершины стека, пакеты снова собираются в исходную форму: «Привет, компьютер 5.6.7.8!»
Сетевая инфраструктура
Итак, теперь вы знаете, как пакеты передаются с одного компьютера на другой через Интернет. Но что находится между ними? Из чего на самом деле состоит Интернет? Давайте посмотрим на другой рисунок:
Здесь мы видим Рисунок 1, представленный более подробно. О физическом подключении через кабель к интернет-провайдеру, возможно, было легко догадаться, но оно требует некоторого объяснения.
Интернет-провайдер поддерживает пул модемов для своих абонентов с коммутируемым доступом. Обычно пулом управляет какой-то специальный компьютер, который направляет поток данных из модемного пула на магистральный или специальный линейный маршрутизатор. Эту установку можно назвать портовым сервером, поскольку она "обслуживает" доступ к сети. Здесь же обычно собирается информация о потреблении трафика для выставления счетов.
После того, как ваши пакеты проходят через кабель и локальное оборудование интернет-провайдера, они направляются на магистраль интернет-провайдера или магистраль, у которой интернет-провайдер покупает трафик. Отсюда пакеты обычно проходят через несколько маршрутизаторов и по нескольким магистралям, выделенным линиям и другим сетям, пока не найдут своего адресата, компьютер с адресом 5.6.7.8. Но разве не хочется знать точный маршрут, по которому наши пакеты проходят через Интернет? Как оказалось, это возможно...
*Практика: программа Traceroute
Если вы используете Microsoft Windows и подключены к Интернету, есть еще одна утилита на заметку. Она называется "traceroute" и показывает путь, по которому ваши пакеты данных направляются к заданному Интернет-адресату. Как и ping, traceroute вызывается из командной строки. В Windows используйте команду tracert www.yandex.ru . Как и в случае с ping, можно вводить IP-адреса вместо доменных имен. Traceroute выведет список всех маршрутизаторов, компьютеров и любых других интернет-объектов, через которые проходят пакеты данных, чтобы добраться до места назначения.
Используя traceroute вы заметите, что пакеты проходят через множество препятствий. У некоторых из них длинные имена, типа sjc2-core1-h2-0-0.atlas.digex.net или fddi0-0.br4.SJC.globalcenter.net . Это интернет-маршрутизаторы, которые решают, куда направить данные. На Рисунке 3 показано несколько маршрутизаторов, но только несколько. Рисунок 3 демонстрирует упрощенную структуру сети. На самом деле Интернет гораздо сложнее.