Интернет: как это работает?

Александр Прохоров, Олег Горнев

Интернет как иерархия сетей

Как происходит передача информации в Интернете

   Маршрутизаторы

Протоколы Интернета

Адресация в Интернете

Доменные имена

Как работает DNS-сервер

 

Миллионы людей пользуются услугами Интернета и поражаются теми фантастическими возможностями, которые открывает это чудо XXI века. Но далеко не все представляют принципы работы данной технологии. В настоящей статье сделана попытка популярно объяснить концептуальные идеи, заложенные в основу Всемирной сети. Статья адресована широкому кругу читателей, преимущественно начинающим пользователям, желающим найти ответ на вопрос: как работает Интернет?

Интернет как иерархия сетей

Слово Интернет происходит от выражения interconnected networks1, то есть в узком смысле — это глобальное сообщество малых и больших сетей. В более широком смысле — это глобальное информационное пространство, хранящее огромное количество информации на миллионах компьютеров, которые обмениваются данными.

В 1969 году, когда был создан Интернет, эта сеть объединяла всего лишь четыре хост-компьютера, а сегодня их число измеряется десятками миллионов. Каждый компьютер, подключенный к Интернету, — это часть Сети.

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

В принципе, соединение с провайдером может идти по различным каналам: по телефонной линии, по выделенной линии, на основе беспроводной или спутниковой связи, по сети кабельного телевидения или даже по силовым линиям — все эти альтернативные варианты показаны на рис. 1.

Чаще всего это так называемое временное (сеансовое) соединение по телефонной линии. Вы набираете один из телефонных номеров, который предоставил вам провайдер, и дозваниваетесь на один из его модемов. На рис. 1 показан набор модемов провайдера, так называемый модемный пул. После того как вы соединились с вашим ISP (Internet Service Provider)-провайдером, вы становитесь частью сети данного ISP. Провайдер предоставляет своим пользователям различные сервисы, электронную почту, Usenet и т.д.

Каждый провайдер имеет свою магистральную сеть, или бэкбоун2. На рис. 1 мы условно изобразили магистральную сеть некоего провайдера ISP-A. Его магистральная сеть показана зеленым цветом.

Обычно ISP-провайдеры — это крупные компании, которые в ряде регионов имеют так называемые точки присутствия (POP, Point of Presence), где происходит подключение локальных пользователей.

Обычно крупный провайдер имеет точки присутствия (POP) в нескольких крупных городах. В каждом городе находятся аналогичные модемные пулы, на которые звонят локальные клиенты этого ISP в данном городе. Провайдер может арендовать волоконно-оптические линии у телефонной компании для соединения всех своих точек присутствия (POP), а может протянуть свои собственные волоконно-оптические линии. Крупнейшие коммуникационные компаний имеют собственные высокопропускные каналы. На рис. 1 мы показали опорные сети двух Интернет-провайдеров. Очевидно, что все клиенты провайдера ISP-А могут взаимодействовать между собой по собственной сети, а все клиенты компании ISP-В — по своей, но при отсутствии связи между сетями ISP-A и ISP-B клиенты компании «A» и клиенты компании «В» не могут связаться друг с другом. Для реализации данной услуги компании «A» и «B» договариваются подключиться к так называемым точкам доступа (NAP — Network Access Points) в разных городах, и трафик между двумя компаниями течет по сетям через NAP. На рис. 1 показаны магистральные сети только двух ISP-провайдеров. Аналогично организуется подключение к другим магистральным сетям, в результате чего образуется объединение множества сетей высокого уровня.

В Интернете действуют сотни крупных Интернет-провайдеров, их магистральные сети связаны через NAP в различных городах, и миллиарды байтов данных текут по разным сетям через NAP-узлы.

Если вы пользуетесь Интернетом в офисе, то, скорее всего, вы подключены к локальной сети (LAN — Local Area Network). В этом случае рассмотренная нами схема несколько видоизменяется (рис. 2). Сеть организации обычно отделена от внешнего мира определенной службой защиты информации, которая на нашей схеме условно показана в виде кирпичной стены. Варианты подключения к провайдеру могут быть различными, хотя чаще всего это выделенная линия.

На рис. 2 мы показали только опорные магистрали двух крупных провайдеров; при этом у крупных провайдеров могут быть региональные провайдеры, у организаций, подключенных к Интернету, — тысячи компьютеров, объединенных в корпоративные сети (рис. 3). На самом деле Интернет — это десятки бэкбоунов, десятки тысяч ISP-провайдеров, сотни тысяч сетей и миллионы компьютеров.

На сегодняшний день существует множество компаний, имеющих собственные опорные сети (бэкбоуны), которые связываются с помощью NAP с сетями других компаний по всему миру. Благодаря этому каждый, кто находится в Интернете, имеет доступ к любому его узлу, независимо от того, где он расположен территориально (рис. 4).

Поскольку невозможно схематически отразить всю совокупность сетей Интернета, ее часто изображают в виде размытого облака, выделяя в нем лишь основные элементы: маршрутизаторы, точки присутствия (POP) и места доступа (NAP).

Скорость передачи информации на различных участках Сети существенно различается. Магистральные линии, или бэкбоуны, связывают все регионы мира (рис. 5) — это высокоскоростные каналы, построенные на основе волоконно-оптических кабелей. Кабели обозначаются OC (optical carrier), например OC-3, OC-12 или OC-48. Так, линия OC-3 может передавать 155 Мбит/с, а OC-48 — 2488 Мбит/с (2,488 Гбит/с). В то же время получение информации на домашний компьютер с модемным подключением 56 K происходит со скоростью всего 56 000 бит/с.

В начало В начало

Как происходит передача информации в Интернете

Маршрутизаторы

Как же происходит передача информации по всем этим многочисленным каналам? Как сообщение может быть доставлено с одного компьютера на другой через весь мир, пройдя несколько различных сетей за долю секунды? Для того чтобы объяснить этот процесс, необходимо ввести несколько понятий и прежде всего рассказать о работе маршрутизаторов. Доставка информации по нужному адресу невозможна без маршрутизаторов, определяющих, по какому маршруту передавать информацию. Маршрутизатор — это устройство, которое работает с несколькими каналами, направляя в выбранный канал очередной блок данных. Выбор канала осуществляется по адресу, указанному в заголовке поступившего сообщения.

Таким образом, маршрутизатор выполняет две различные, но взаимосвязанные функции. Во-первых, он направляет информацию по свободным каналам, предотвращая «закупорку» узких мест в Сети; во-вторых, проверяет, что информация следует в нужном направлении. При объединении двух сетей маршрутизатор включается в обе сети, пропуская информацию из одной в другую, и в некоторых случаях осуществляет перевод данных из одного протокола в другой, при этом защищая сети от лишнего трафика. Эту функцию маршрутизаторов можно сравнить с работой патрульной службы, которая с вертолета ведет наблюдение за движением в городе, контролирует общую ситуацию с поломками и заторами на дорогах и сообщает о наиболее загруженных участках трассы, чтобы водители выбирали оптимальный маршрут и не попадали в пробки.

В начало В начало

Протоколы Интернета

Перейдем теперь к рассмотрению способов передачи информации в Интернете. Для этого необходимо ввести такое понятие, как протокол. В широком смысле протокол — это заранее оговоренное правило (стандарт), по которому тот, кто хочет использовать определенный сервис, взаимодействует с последним. Применительно к Интернету протокол — это правило передачи информации в Сети.

Следует различать два типа протоколов: базовые и прикладные. Базовые протоколы отвечают за физическую пересылку сообщений между компьютерами в сети Интернет. Это протоколы IP и TCP. Прикладными называют протоколы более высокого уровня, они отвечают за функционирование специализированных служб. Например, протокол http служит для передачи гипертекстовых сообщений, протокол ftp — для передачи файлов, SMTP — для передачи электронной почты и т.д.

Набор протоколов разных уровней, работающих одновременно, называют стеком протоколов. Каждый нижележащий уровень стека протоколов имеет свою систему правил и предоставляет сервис для вышележащих.

Такое взаимодействие можно сравнить со схемой пересылки обычного письма. Например, директор фирмы «А» пишет письмо и отдает его секретарю. Секретарь помещает письмо в конверт, надписывает адрес и относит конверт на почту. Почта доставляет письмо в почтовое отделение. Почтовое отделение связи доставляет письмо получателю — секретарю директора фирмы «B». Секретарь распечатывает конверт и передает письмо директору фирмы «В». Информация (письмо) передается с верхнего уровня на нижний, обрастая на каждой стадии дополнительной служебной информацией (пакет, адрес на конверте, почтовый индекс, контейнер с корреспонденцией и т.д.), которая не имеет отношения к тексту письма.

Нижний уровень — это уровень почтового транспорта, которым письмо перевозится в пункт назначения. В пункте назначения происходит обратный процесс: корреспонденция извлекается, считывается адрес, почтальон несет конверт секретарю фирмы «B», который достает письмо, определяет его срочность, важность и в зависимости от этого передает информацию выше. Директора фирм «А» и «Б», передавая друг другу информацию, не заботятся о проблемах пересылки этой информации, подобно тому как секретаря не волнует, как доставляется почта.

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

На нижнем уровне, то есть на уровне TCP/IP3, используется два основных протокола: IP (Internet Protocol — протокол Интернета) и ТСР (Transmission Control Protocol — протокол управления передачей).

Архитектура протоколов TCP/IP предназначена для объединенной сети. Интернет состоит из разнородных подсетей, соединенных друг с другом шлюзами. В качестве подсетей могут выступать разные локальные сети (Token Ring, Ethernet и т.п.), различные национальные, региональные и глобальные сети. К этим сетям могут подключаться машины разных типов. Каждая из подсетей работает в соответствии со своими принципами и типом связи. При этом каждая подсеть может принять пакет информации и доставить его по указанному адресу. Таким образом, требуется, чтобы каждая подсеть имела некий сквозной протокол для передачи сообщений между двумя внешними сетями.

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

Обычно длина одного пакета не превышает 1500 байт. Поэтому одно электронное письмо может состоять из нескольких сотен таких пакетов. Малая длина пакета не приводит к блокировке линий связи и не позволяет отдельным пользователям надолго захватывать канал связи.

К каждому полученному TCP-пакету протокол IP добавляет информацию, по которой можно определить адреса отправителя и получателя. На рис. 6 это представлено как помещение адреса на конверт. Для каждого поступающего пакета маршрутизатор, через который проходит какой-либо пакет, по данным IP-адреса4 определяет, кому из ближайших соседей необходимо переслать данный пакет, чтобы он быстрее оказался у получателя, — то есть принимает решение об оптимальном пути следования очередного пакета. При этом географически самый короткий путь не всегда оказывается оптимальным (быстрый канал на другой континент может быть лучше медленного в соседний город). Очевидно, что скорость и пути прохождения разных пакетов могут быть различными.

На рис. 7 показано, что взаимосвязанные пакеты данных могут передаваться различными путями. Возможно, что пакеты будут путешествовать через разные континенты, с различной скоростью. При этом пакеты, отправленные позже, могут дойти раньше. Независимо от траектории в результате конечного числа пересылок TCP-пакеты достигают адресата.

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

Таким образом, протокол IP осуществляет перемещение данных в сети, а протокол TCP обеспечивает надежную доставку данных, используя систему кодов, исправляющих ошибки. Причем два сетевых сервера могут одновременно передавать в обе стороны по одной линии множество TCP-пакетов от различных клиентов.

Некоторые начинающие пользователи думают, что связь по Интернету похожа на телефонную. Хочется еще раз подчеркнуть основное различие передачи информации по телефонной сети и по Интернету: когда вы звоните по телефону кому-нибудь в другой регион страны или даже на другой континент, телефонная система устанавливает канал между вашим телефоном и тем, на который вы звоните. Канал может состоять из десятков участков: медные провода, волоконно-оптические линии, беспроводные участки, спутниковая связь и т.д. Эти участки неизменны на протяжении всего сеанса связи. Это означает, что линия между вами и тем, кому вы звоните, постоянна в течение всего разговора, поэтому повреждения на любом участке данной линии, например обрыв проводов в бурю, способны прервать ваш разговор.

При этом, если соединение нормальное, значит выделенная вам часть сети для других уже не доступна. Речь идет о сети с коммутацией каналов. Интернет же является сетью с коммутацией пакетов, а это совсем другая история. Процесс пересылки электронной почты принципиально иной.

Как уже было отмечено, Интернет-данные в любой форме (будь то электронное послание, Web-страница или скачиваемый файл) путешествуют в виде группы пакетов. Каждый пакет посылается на место назначения по оптимальному из доступных путей. Поэтому даже если какой-то участок Сети окажется нарушенным, то это не повлияет на доставку пакета, который будет направлен по альтернативному пути. Таким образом, во время доставки данных нет необходимости в фиксированной линии связи между двумя пользователями. Принцип пакетной коммутации обеспечивает основное преимущество Интернета — надежность. Сеть может распределять нагрузку по различным участкам за тысячные доли секунды. Если какой-то участок оборудования сети поврежден, пакет может обойти это место и пройти по другому пути, обеспечив доставку всего послания5.

В начало В начало

Адресация в Интернете

Мы уже упоминали IP-адрес, теперь расскажем о нем подробнее. Каждому компьютеру, подключенному к Интернету, присваивается идентификационный номер, который называется IP-адресом.

Но если вы осуществляете сеансовое подключение (то есть подключаетесь на время сеанса выхода в Интернет), то IP-адрес вам выделяется только на время этого сеанса. Присвоение адреса на время сеанса связи называется динамическим распределением IP-адресов. Оно удобно для ISP-провайдера, поскольку в тот период времени, пока вы не выходите в Интернет, IP-адрес, который вы получали, может быть выделен другому пользователю. Этот IP-адрес является уникальным только на время вашей сессии — в следующий раз, когда вы будете выходить в Интернет через своего провайдера, IP-адрес может быть другим. Таким образом, Интернет-провайдер должен иметь по одному IP-адресу на каждый обслуживаемый им модем, а не на каждого клиента, которых может быть намного больше.

IP-адрес имеет формат xxx.xxx.xxx.xxx, где xxx — числа от 0 до 255. Рассмотрим типичный IP-адрес: 193. 27.61.137.

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

11000001.00011011.00111101.10001001.

Четыре числа в IP-адресе называются октетами, поскольку в каждом из них при двоичном представлении имеется восемь разрядов: 4×8=32. Так как каждая из восьми позиций может иметь два различных состояния: 1 или 0, общий объем возможных комбинаций составляет 28, или 256, то есть каждый октет может принимать значения от 0 до 255. Комбинация четырех октетов дает 232 значений, то есть примерно 4,3 млрд. комбинаций, за исключением некоторых зарезервированных адресов.

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

Эта система аналогична системе, используемой в обычной почте, когда одна часть адреса определяет улицу, а вторая — конкретный дом на этой улице.

На ранней стадии своего развития Интернет состоял из небольшого количества компьютеров, объединенных модемами и телефонными линиями. Тогда пользователи могли установить соединение с компьютером, набрав цифровой адрес, например 163. 25.51.132. Это было удобно, пока сеть состояла из нескольких компьютеров. По мере увеличения их количества, учитывая тот факт, что текстовое имя всегда удобнее для запоминания, чем цифровое, постепенно цифровые имена стали заменять на текстовые.

Возникла проблема автоматизации данного процесса, и в 1983 году в Висконсинском университете США (University of Wisconsin) была создана так называемая DNS (Domain Name System)-система, которая автоматически устанавливала соответствие между текстовыми именами и IP-адресами. Вместо чисел была предложена ставшая сегодня для нас привычной запись типа http://www.myhobby.narod.ru/.

Подобным образом осуществляется сортировка обычной почты. Люди привыкли ориентироваться по географическим адресам, например: «Москва, ул. Рылеева, д. 3, кв. 10», в то время как автомат на почте быстро сортирует почту по индексу.

Таким образом, при пересылке информации компьютеры используют цифровые адреса, люди — буквенные, а DNS-сервер служит своеобразным переводчиком.

Прежде чем переходить к описанию работы DNS-серверов, следует сказать несколько слов о структуре доменных имен.

В начало В начало

Доменные имена

Когда вы обращаетесь на Web или посылаете e-mail, вы используете доменное имя. Например, адрес http://www.microsoft.com/ содержит доменное имя microsoft.com. Аналогично e-mail-адрес alproh@aha.ru содержит доменное имя aha.ru.

В доменной системе имен реализуется принцип назначения имен с определением ответственности за их подмножество соответствующих сетевых групп.

И если каждая группа придерживается этого простого правила и всегда получает подтверждение, что имена, которые она присваивает, единственны среди множества ее непосредственных подчиненных, то никакие две системы, где бы те ни находились в сети Интернет, не смогут получить одинаковые имена.

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

Домены тоже имеют аналогичную иерархию. В именах домены отделяются друг от друга точками: companya.msk.ru, companyb.spb.ru. В имени может быть различное количество доменов, но обычно их не больше пяти. По мере движения по доменам в имени слева направо, количество имен, входящих в соответствующую группу, возрастает.

Каждый раз, когда вы используете доменное имя, вы также используете DNS-серверы для того, чтобы перевести буквенное доменное имя в IP-адрес на машинном языке.

В качестве примера давайте рассмотрим адрес http://www.pc.dpt1.company.msk.ru/.

Первым в имени стоит название рабочей машины — реального компьютера с IP-адресом. Это имя создано и поддерживается группой dpt1. Группа входит в более крупное подразделение company, далее следует домен msk — он определяет имена московской части сети, а ru — российской.

Каждая страна имеет свой домен. Так au — соответствует Австралии, be — Бельгии и т.д. Это географические домены верхнего уровня.

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

  • com — обозначает коммерческие предприятия;
  • (edu) — образовательные;
  • (gov) — государственные;
  • (mil) — военные;
  • (net) — сетевые;
  • (org) — учреждения других организаций и сетевых ресурсов).

Внутри каждого доменного имени первого уровня находится целый ряд доменных имен второго уровня.

Домен верхнего уровня располагается в имени правее, а домен нижнего уровня — левее.

Например, на рис. 8 показана структура адреса ряда организаций на примере российского домена.

Рассмотрим адрес http://www.newcompany.spb.ru/. Домен верхнего уровня ru указывает на то, что адрес принадлежит российской части Интернета, spb — определяет город, следующий уровень — домен конкретной организации. В принципе, в имени может быть любое число доменов.

В начало В начало

Как работает DNS-сервер

DNS-сервер принимает запрос на конвертацию доменного имени в IP-адрес. При этом DNS-сервер выполняет следующие действия:

  • отвечает на запрос, выдав IP-адрес, поскольку уже знает IP-адрес запрашиваемого домена.
  • контактирует с другим DNS-сервером для того, чтобы найти IP-адрес запрошенного имени. Этот запрос может проходить по цепочке несколько раз.
  • выдает сообщение: «Я не знаю IP address домена, запрашиваемого вами, но вот IP address DNS-сервера, который знает больше меня»;
  • сообщает, что такой домен не существует.

Представим, что вы набрали адрес http://www.pc.dpt1.company.com/ в вашем браузере, который имеет адрес в домене верхнего уровня COM (рис. 9). В простейшем варианте ваш браузер контактирует с DNS-сервером для того, чтобы получить IP-адрес искомого компьютера, и DNS-сервер возвращает искомый IP-адрес (рис. 10).

На практике в Сети, где объединены миллионы компьютеров, найти DNS-сервер, который знает нужную вам информацию, — это целая проблема. Иными словами, если вы ищете какой-то компьютер в Сети, то прежде всего вам необходимо найти DNS-сервер, на котором хранится нужная вам информация. При этом в поиске информации может быть задействована целая цепочка серверов. Пояснить работу DNS-серверов можно на примере, показанном на рис. 11.

Предположим, что тот DNS-сервер, к которому вы обратились (на рис. 11 он обозначен как DNS1), не имеет нужной информации. DNS1 начнет поиск IP-адреса с обращения к одному из корневых DNS-серверов. Корневые DNS-серверы знают IP-адреса всех DNS-серверов, отвечающих за доменные имена верхнего уровня (COM, EDU, GOV, INT, MIL, NET, ORG и т.д.).

Например, ваш сервер DNS1 может запросить адрес у корневого DNS-сервера. Если корневой сервер не знает данного адреса, возможно, он даст ответ: «Я не знаю IP-адреса для http://www.pc.dpt1.company.com/, но могу предоставить IP-адрес COM DNS-сервера».

После этого ваш DNS посылает запрос на COM DNS с просьбой сообщить искомый IP-адрес. Так происходит до тех пор, пока не найдется DNS-сервер, который выдаст нужную информацию.

Одна из причин, по которой система работает надежно, — это ее избыточность. Существует множество DNS-серверов на каждом уровне, и поэтому, если один из них не может дать ответ, наверняка существует другой, на котором есть необходимая вам информация. Другая технология, которая делает поиск более быстрым, — это система кэширования. Как только DNS-сервер выполняет запрос, он кэширует полученный IP-адрес. Однажды сделав запрос на корневой DNS (root DNS) и получив адрес DNS-сервера, обслуживающего COM-домены, в следующий раз он уже не должен будет повторно обращаться с подобным запросом. Подобное кэширование происходит с каждым запросом, что постепенно оптимизирует скорость работы системы. Несмотря на то что пользователям работа DNS-сервера не видна, эти серверы каждый день выполняют миллиарды запросов, обеспечивая работу миллионов пользователей.

КомпьютерПресс 5'2002