Как устроена инфраструктура Интернета ?

377
1
1
30 мая
00:41
июнь
2016

Интернет - сложная система, работа которой обеспечена самыми различными компонентами, решающими свои узкие задачи. Интернет изначально разрабатывался в 1970-ые годы американской военной структурой DARPA, в задачи которой входила разработка передовых технологий связи для американских военных. Defense Advanced Research Projects Agency (DARPA) была создана в качестве ответа на запуск первого советского спутника (1969). Эта структура существует и по сей день и обещает новые передовые разработки в самом ближайшем будущем, которые изменят наш мир.

Стандарты Ethernet

Впервые глобальная сеть обрела сегодняший вид в 1980 году после появления стандартов, обеспечивающих физический транспорт данных, которые опубликованы компаниями DEC, Xerox в документе под названием Ethernet Blue Book Standard, позже к разработке присоединились корпорации IBM и Intel. Этот стандарт дошел до нас сегодня и используется повсеместно для подключения компьютеров к сетям или создания локальных сетей (LAN). Существуют различные вариации Ethernet, связь в которых обеспечивается посредством оптических кабелей, стандартов радиосвязи (GPRS/EDGE, 3G, 4G и др.), витой пары или самого обычного кабеля ЛЭП (имеется ввиду, конечно, структура кабеля). Транспорт Ethernet задействуется повсеместно. Разные вариации так же обеспечивают различные пропускные способности, например, 1GB/s наиболее распостраненный сегодня (GbE, Ethernet/802.3z), но существуют не только работающие сети 10 GB/s, но в разработке уже находятся технологии со скоростями дуплексного обмена свыше 200 GB/s - TbE (Ethernet/802.3bs), выпуск которого состоится в 2017 году (после чего этапами начнется внедрение). Очевидно, что пропускная способность на скоростях до 500 Gb/s зависит почти целиком и полностью от физических и химических свойств проводника и архитектуры. Однако, скорости вроде 1Tb/s (1000 Gb/s) потребуют совершенно новой технологии. Разработка в этих направлениях ведется University of California, Santa Barbara (UCSB) и подержки со стороны Agilent Technologies, Google, Intel, Rockwell Collins, Verizon Communications.

Сам Ethernet является лишь физической оберткой для связи (но понимать её любому начинающему network engineer'у необходимо). Нововведением в этом стандарте было то, что данные для отправки образуется в так называемые фреймы (frames). Отправляемый фрейм (последовательность байтов, не более 1500 байт) преобразуется в аналоговый вид (последовательность электрических сигналов) и транспортируется через кабель, после чего снова оцифровывается в исходный вид. Так как количество факторов, которые могут привести к повреждению пересылаемой информации, очень велика вероятность, что данные не будут доставлены или доставлены частично, что в принципе одно и тоже (фрейм игнорируется хостом). Концепты Ethernet настолько действенны, что фактически легли в основу других наиболее популярных стандартов связи - WiFi и Bluetooth на короткие дистанции и 3G/4G на более дальние. Например, все эти стандарты используют концепт универсального идентификатора интерфейса сети (NIC) - MAC-адрес, состоящий из 48 или 64 бит, который изначально прошивался производителем в NIC и использовался для различия устройств в одной сети. Из-за того что сейчас MAC-адреса почти всегда можно изменить, стали возможны конфликты между свитчами из-за одинаковых MAC в одной сети, хотя производители сетевых интерфейсов (NIC) не допускают этого (первые 24 бит MAC это OIU, код производителя, почему каждый может вести свой собственный реестр и не повторяться).

Так описываются нижние уровни сетевой модели OSI (Open Systems Interconnection model) - концепция организации публичных сетей, разработанной в ISO (International Organization for Standartization), а именно Physical Layer и Link Layer. Она декларирует принцип устройства таких сетей, а стандарты Ethernet описывают реальные технологии, используемые провайдерами глобальной сети (ISP), которые и поддерживают эту инфраструктуру - по всему миру, на примитивном уровне. 

Switch, глобальная маршрутизация

Изначально устройства, обеспечивающие маршрутизацию данных от хоста до хоста назывались хабами (hubs) и использовались в маленьких сетях. Особенностью хабов являлось то, что отпрявляемые данные направлялись на все подключенные хосты сети, и это было задачей хоста определить, назначался ли пакет именно ему, что создавало колоссальную нагрузку на эту сеть. Сегодня повсеместно используются свитчи (switches), которые могут "запоминать" IP/MAC адреса и сами определяют, какому хосту нужно доставить каждый отдельный пакет, что бы он быстрее достинг назначения. Таким образом, реально доставить пакет практически откуда угодно и куда угодно.

Например, когда вы общаетесь по VoIP между Лондоном и Москвой, с высокой долей вероятности, фреймы вашего соединения доставляются через Германию, посредством множественных switch'ей, на каждом из которых определяется, на какой из подключенных хостов выслать пакет(фрейм), что бы он быстрее достиг конечной сети, в которой находится компьютер, которому вы адресовали сообщение.

Разумеется, в глобальной сети для адресации используются IP-адреса, а не MAC, стандартов IPv4 и IPv6 (протокол "Интернет", IP). На момент написания поста "свободных" (невыкупленных) адресов практически не осталось, согласно данным компании RIPE (https://atlas.ripe.net/results/maps/), которая занимается их распределением. Уже внедряемый стандарт Ipv6 позволит обеспечить намного большее количество устройств в мире бесперебойным доступом в глобальную сеть. Если IP четвертой версии выглядит как четыре байта (a.b.c.d), разделенных точкой, то IP шестой версии - это уже блок из 16 байтов, разделенных двоеточием (a:b:c:d:e:f:g:h:i). IP продаются крупным компаниям блоками около 1024 адресов. Такие компании и предоставляют нам услуги выхода в интернет под их IP-адресами. IPv4 позволяет обеспечить бесперебойным доступом в интернет 4,3 миллиарда уникальных хостов, что уже фактически достигнуто. Шестая версия протокола позволила позволила теоретически гарантировать доступ к сети 2^128 уникальных хостов, что около 340282366920938463463374607431768211456 устройств.

IP-адреса назначаются провайдером услуг интернета (ISP) при подключении устройства к сети. Провайдер использует динамическое распределение или настраивает маршрутизацию в соответствии с MAC-адресом (например, для зарезервированных IP), используя протокол ARP (Address Resolution Protocol) в своей сети. Все отправляемые пакеты подключенного хоста содержат адрес отправителя и адрес получателя. Это необходимое условие для отправки IP-пакета в протоколе IP, который работает на основе ("поверх") Ethernet. ARP связывает мостиком нижние уровни модели (Physical & Link Layers) с первым "глобальным" протоколом IP (Internet Protocol), позволя хостом абстрагироваться от MAC-адресов. С помощью протокола ARP хосты обмениваются информацией о том, какому MAC соответствует конкретный IP. Так как основной обмен данными происходит по IP-адресам, прежде, чем данные будут высланы, формируется ARP-запрос, содержащий IP получателя. После этого будет получен ответ, который кэшируется сетевым драйвером и записывается в особую таблицу, по которой далее и происходит перепаковка IP-пакетов в Ethernet-фреймы, содержащие конечный MAC.

Конечно, так как MAC-адрес получается из-вне, существует множество типов атак и уязвимостей, да и вообще - полученный Mac-адрес на компьютере будет чем-то вроде Mac-адреса роутера, работающего на стороне ISP или даже роутера WiFi. Так, по цепочке, он уходит "в мир", переодически переписывая Mac-адрес доставки на каждом таком switch'е.

Как интЕрнет получил свое имя?

Частичка "inter" означает соединение больших компонентов (пример: "интернационал", international). То есть, интер-нет это глобальная сеть, состоящая и различных подсетей (net), соединенных друг с другом. 

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

TCP/IP, ARP, Роутеры

Что бы решить эту проблему появились роутеры (routers). Как очевидно из их названия, задачей их является маршрутизация фреймов от одной сети к другой, но только по необходимости. Роутер - это устройство, обычно имеющее несколько сетевых карт (NIC), в которые подключаются различные кабели Ethernet. Роутеры обычно работают на основе IP-адресов: они позволяют назначить сетям двух компаний разные префиксы подсетей (subnets), таким образом трафик из одной организации будет направлен роутером в другую только если роутер настроен правильно и конкретный пакет имеет соответствующий IP-адрес назначения, связанный с сетью внешней организации. Роутеры имеют собственную таблицу ARP, поэтому при подключении к wifi все пакеты всех клиентов доставляются в первую очередь на роутер, где уже происходит остальная магия с назначением mac.

Понимая эти стандарты и концепты, вы можете понять примерно, как устроена инфраструктура интернета. Вы так же способны сделать вывод, имея простые познания в естественных науках, включая математику, что на основе такой ненадежной сети вполне можно наладить надежный обмен данными между двумя хостами по необходимости, введя концепт подключений (connections). Если два хоста хотят произвести обмен файлом, они в теории должны разбить этот файл на блоки и отправить получателю последовательно. Каждому блоку можно выдать последовательный номер (sequence number), и для каждого блока ждать acknowledgement'а, то есть уведомления о доставке. При обнаружении потери необходимые блоки передать заново и снова ждать уведомления. Это реализовано в следующем протоколе - TCP (Transmission Control Protocol), первом протоколе прикладного уровня модели OSI. Работает "поверх" IP-протокола и имплементирует концепт подключений, которые могут быть установлены или разорваны, данные в которых передаются с гарантией сохранения целостности и порядка отправки.

HTTP

На основе TCP, функционирует самый популярный в интернете протокол - HTTP/s (Hyper-Text Transfer Protocol), который используется браузерами и веб-серверами. Модель запрос-ответ позволяет клиенту (компьютеру пользователя) сделать запрос (request), подключившись к нужному хосту (веб-серверу), и загрузить от него ответ (response). Ответ в вебе бывает в разных видах, например могут передаваться различные файлы, видео-потоки или, что наиболее часто, HTML-страницы, которые являются текстовыми файлами, описывающими контент на специальном языке разметки гипертекста (Hyper-Text Markup Language, HTML). Этот и еще некоторые другие технологии позволяют вам видеть те красивые и функциональные страницы, которые вы видите в "глобальной паутине".

HTTPS

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

Публичный ключ, он же сертификат, публикуется глобально в одной из авторитетных компаний SSL CA (Certificate Authority). Когда вы заходите на сайт, работающий по протоколу HTTPS, ваш браузер скачивает сертификат этого сайта на основе доменного имени хоста и проверяет, что он удостоверяется одной из вшитых в систему CA, в которые можно сделать запрос по случаю конкретного веб-сервера. Внутри же самого зашифрованного контента хранится все те же пакеты HTTP, которые не будут полезны при перехвате трафика, так как вы догадались, что весь трафик в интернете проходит сотни промежуточных точек.

Конечно, практика показывает, что технологии вроде https имеют и свои минусы, которые пока решить не удается, поэтому не нужно считать, что SSL в вебе это панацея и подходит для безопасности, в том числе, в корпоративных сетях.

DNS

Помимо TCP, HTTPS существуют тысячи различных протоколов прикладного (и нет) уровней, описать которые не хватит не одной страницы. Например, для внедрения доменных имен (mysite.com), был разработан протокол и система DNS (Domain Name System). Что бы облегчить пользователю задачу, ему не нужно запоминать IP-адрес веб-сервера, к которому он подключается. Администратор портата регистрирует глобальное доменное имя, например thequestion.ru, с помощью регионального оператора, который записывает указанную администратором информацию в свой DNS-сервер. Когда пользователь сайта пытается подключиться к сайту по доменному имени или URL, IP-адрес хоста находится с помощью особого запроса в DNS. Адреса же DNS устанавливаются пользователем системы или предоставляются провайдером услуг интернета (ISP). Так администратор с легкостью может перенести свою ИС на новый сервер, и ему потребуется лишь обновить запись у регистратора его доменного имени. Домены может зарегестрировать любой желающий, а в последнее время начали открываться регистрации на самые новые TLD (top-level domain), то есть корневые зоны, вроде .shop, .pro, .moscow, .xxx и пр.

Dmitrij IgorevichОтвечает на ваши вопросы в своейПрямой линии
2
0
Если вы знаете ответ на этот вопрос и можете аргументированно его обосновать, не стесняйтесь высказаться
Ответить самому
Выбрать эксперта