
           .gif)

Александр Чижов, http://cooler.irk.ru, chizh@irk.ru
Как устроен Интернет?
|
Начать, конечно, стоит с начала. То есть вернее - с себя. Потому как в большинстве своем вы – конечный пользователь, сидящий дома за своим компьютером, слушающий пение своего модема, и от вас "уже никто никуда не идет.." – все – вы и есть последняя (среди миллионов) точка интернета. "Первой" точки нет – почему – об этом позже. Следовательно, начинаем с вас. Как с самого крайнего.
Итак, после того, как модем завершит процесс установки соединения с провайдером, вы находитесь в сети. В интернете основной протокол обмена данными – IP (internet protocol), он, по сути – асинхронный, и обмен пакетами происходит с подтверждениями на прием. А как же тогда не запутываются разные пакеты между собой, как вообще, они знают, куда и к кому идти? Вот как раз эти пакеты (IP) и содержат в себе всю необходимую информацию.
Работа сетей - достаточно сложная штука. Хотя бы потому, что IP протокол сам по себе асинхронен. Посылающая сторона должна ждать подтверждения от принимающей стороны. Есть конечно, еще и UDP (Протокол, который подтверждений не требует. Этим протоколом общаются между собой сервера для обмена информацией по DNS).
Про UDP позже, а вот насчет IP – подробнее.
Разберем простой пример: у вас модем на 33600 (до провайдера), и у провайдера канал "наружу" (так называются каналы, которыми провайдеры связаны друг с другом – обычно между разными городами), допустим, 2 Мб. Скорость в сети измеряется в кило- или мегабитах – а не в байтах, потому что фактически передача данных по различным каналам однобитовая – и скорость, получающаяся в результате передачи вашей информации, будет даже меньше, чем скорость канала, деленная на 8 (число бит в байте) – потому как, кроме вашей информации, необходимо передавать еще и много различной служебной. Например, Вы в настоящий момент выкачиваете огромный файл с сервера, находящегося где-то далеко. Скорость download'а в идеале будет примерно 3,5 Кб/с (при скорости канала от вас в 33600 бит/сек). То есть ваша машина будет получать от модема 3,5 кила в секунду. Но вот с "того" сервера, откуда производится download, с какой скоростью будут уходить пакеты? И как вообще, ваши "33600" умещаются в провайдерском канале 2 Мб? Может, это как-то ограничено?
Важно представить себе работу протокола, чтобы немного разобраться с этими "простыми" вопросами. Наверное, не стоит изображать "толстый" канал провайдера, как содержащий в себе кучу маленьких подканальчиков на 33600, 14400 и т.д. по числу пользователей. Скорее, это будет просто совокупность хождения всех пакетов туда-сюда.
Допустим, вы "сказали" далекому серверу подать вам во-о-он тот файл, и он начал его добросовестно вам передавать, а он совсем не знал, что после 2-3 минут передачи у вас отрубят свет, произойдет крах вашей системы или еще что-то, что временно или надолго отрубит вас от сети. Куда денутся пакеты с информацией?
И вообще, как серверу узнать, что вы все еще хотите принимать файл или уже нажали "Cancel", потому как поняли, что энное количество мегабайт со скоростью четыре байта в секунду вам еще долго не вытянуть?
Удаленный сервер не знает, на какой скорости вы подключены и начинает слать вам пакеты, скажем, по 700 байт, а после того, как придет подтверждение, он сам уже решает, повысить размер пакета или нет. После того, как ваша система приняла пакет с информацией, она должна отослать подтверждение о приеме тому серверу, откуда она этот пакет получила. Это и есть асинхронная передача данных.
Это было небольшое отступление, чтобы было понятно, какие именно проблемы могут возникать в сети при передаче информации.
А вот интересно, как же тогда устроена штука под названием "провайдер"? Я думаю, что кое-какие разъяснения будут полезны тем, у кого наглядное понятие "сеть" всегда ограничивалось визуально только модемом и проводом от него до телефонной розетки. А что там дальше...
Пожалуй, я буду рассказывать, начиная с постановок задач. Что есть у провайдера изначально? Куча телефонных линий от юзеров. То есть он (провайдер) занимает какие-то номера на телефонной станции, к которым впоследствии будет подцеплять свои модемы для связи с этими самыми юзерами. Конечно, на станции организовывается т.н. "серия номеров", когда на одном номере находится несколько линий, ведущих к провайдерской стойке. Из стойки все линии приходят на модемный пул - ну, в масштабном представлении это скорее будет набор модемов в одном корпусе, а не просто куча отдельных модемов (хотя и такие решения есть). В принципе, можно уже подключать эти модемы к компьютеру через специальную мультипортовую карту, но есть путь гораздо лучше - через специальный маршрутизатор, применение которого может сильно разгрузить основной сервер.
Суть построения сети на основе IP протокола такова: каждому компьютеру после подключения к сети назначается свой IP адрес (Обязательно! Каждый должен иметь свой адрес в сети - он же по сути равноправен со всеми пользователями), а значит, какой-то прибор должен так направлять пакеты с информацией, чтобы они доходили туда, куда надо, т.е. разбираться со всеми адресами в сети. Если вы посылаете свой запрос на yahoo.com, то не нужно эти пакеты слать еще и к соседу только для того, чтобы его компьютер их отбросил, как ему не предназначенные? Все должно "бегать" кратчайшим путем. Вернее сказать – наибыстрейшим.
В общем случае скажем так: сколько компьютеров, столько и адресов. И как это все провернуть в масштабах планеты?
Например, от вашего компьютера ушел пакет на сервер провайдера (несколько утрировано, но пусть так) с запросом ресурса по адресу 195.46.160.45 (вы хотите посмотреть последний анекдот).
Что должна сделать аппаратура у провайдера? Переслать ваш запрос на указанный адрес. То есть мы запрашиваем www.anekdot.ru, тут понятно - есть DNS (про dns – потом), который нам сопоставит мнемонику с реальным IP адресом. Но что дальше? Где этот адрес находится? Задача и решается с помощью специальных маршрутизаторов, которые держат в себе массив адресов, но не всех, конечно, а только основные части, т.е. устройство знает, что если запрос пришел по ресурсу в сети 195.46.х.х, то он должен будет отправить его на другой IP адрес (где обычно находится другой маршрутизатор), который у него прописан для этой сети, а тот, другой, уже будет разбираться дальше и т.д. Основную роль маршрутизатор играет в качестве именно пересылки пакетов по местам назначения.
Кроме этого, у маршрутизаторов есть еще одна функция: динамическое назначение IP адресов клиентам. Поэтому можно заметить, что ваш IP адрес различается в большинстве случаев в последних одной-двух частях, а первые 2-3 остаются неизменными.
Первые - это постоянный адрес вашей сети, а последний - выделенная вам провайдером изменяемая, динамическая, часть в виде адреса. Это не касается тех, кто использует т.н. выделенные линии - у них IP адрес постоянно один и тот же. Если такие пользователи захотят сопоставить свой IP в соответствии с именем, то могут спокойно это сделать. Динамически выделенному адресу это сделать не в пример труднее.
Ну и, само собой, у провайдера есть сервер, который собственно содержит в себе базу данных по всем пользователям, занимается обработкой почты, dns, ftp, http и т.п.
Итак, теперь про важную часть интернет-сервиса – DNS.
Что такое DNS? Это служба Domain Name service – другими словами, сопоставление имени, к которому вы привыкли, реальному числовому адресу ресурса в сети. И обратно, разумеется, тоже. Чтобы вам не запоминать уйму цифр, а оперировать простыми мнемоническими словами (типа www.dsi.ru), служба DN сама сделает числовое сопоставление, и сервер будет направлять ваш запрос, уже руководствуясь реальным адресом в сети, а не непонятным компьютеру словом (словами).
Вся системная кухня работы DNS серверов и взаимодействия между ними (и с ними) считается достаточно сложной, пожалуй, самой сложной после работы систем нижнего уровня по передаче пакетов IP.
Постараюсь немного раскрыть некоторые особенности работы всей системы DNS с точки зрения конечного пользователя. Сервера провайдера DNS работа касается только в плане преобразования имен для вас – его клиента. Кстати, DNS сервер провайдера от корневого DNS сервера ничем в принципе не отличается (есть еще и множество корневых серверов DNS, которые содержат в себе очень большую базу практически для всего мира).
Допустим, вы хотите получить настоящее имя, например, www.domain.ru. Очевидно, нам нужно спросить хозяина домена верхнего уровня, т.е. <.ru>. Этим доменом владеет компания РосНИИРОС - она же и занимается регистрацией доменов второго уровня в России. Причем, компания владеет такими популярными (черт знает с какой точки зрения) доменами второго уровня как .COM.RU, .ORG.RU, .NET.RU, .EDU.RU, .PP.RU, .AC.RU и т.д. Поэтому, если вы захотите иметь домен типа vasya.com.ru - то, опять же - к владельцу домена <.com.ru> (которым опять-таки является РосНИИРОС). Ну, и если Ваши запросы не простираются так далеко, и вы согласитесь на домен третьего уровня – его вам практически бесплатно может предоставить Ваш провайдер. Например, получение домена у Иркутского провайдера ДСИ (Деловая сеть-Иркутск) magazine.irk.ru не отнимет у вас много времени.
А вот если вы не хотите зависеть ни от какого провайдера, т.е. желаете иметь свое, уникальное имя – то вам придется иметь привязку по физическому адресу в сети. Это нужно для того, чтобы ваш адрес мог быть найден вне зависимости от того, на каком сервере будет находиться ресурс под таким именем. Другими словами говоря, в этом случае для начала придется получить свой IP адрес. Без него-то никак. Он получается (регистрируется) там же – в компании РосНИИРОС.
Итак, у вас есть свой уникальный IP адрес. Теперь нужно, чтобы человек, набрав www.domain.ru, попал к нам на сервер (вернее, скажем, чтобы ему вернулся правильный IP адрес в ответ на это имя). Естественно, нужно прописать имя domain в DNS серверах. Это произойдет после того, как РосНИИРОС зарегистрирует это имя.
То есть ведущему зоны (.ru) сообщается, где будет находиться зона .domain. И тогда он делегирует вашему DNS серверу полномочия на преобразования имен с вашим доменом второго уровня. Ну, например, кто-то спрашивает "а где у нас находится адрес site.domain.ru?" А ему в ответ – а ты сходи-ка сам на .domain.ru - он тебе все и расскажет. И выходит, что сам DNS на сервере domain.ru просто необходим.
Разговор про домены в плане "как устроен интернет" не случаен – это важная "подводная" часть трафика интернета, да еще и, как-никак, серьезная его составляющая.
Закончить же первую часть статьи насчет устройства интернета хочется такой постановкой вопроса: итак, у вас есть провайдер, у вашего провайдера есть свой провайдер, к которому он подключен, тот – к еще кому-то, а вот конечный провайдер – самый-самый – он, вообще, есть?
В принципе, есть, но – не один и не в том смысле, в котором мы привыкли понимать обычного провайдера.
Подробнее об этом, о схемах каналов связи на планете, о точках обмена трафиком (IX) и о пиринге – в другой раз.
|

           .gif)
|