От MAC до DNS и обратно

Сети нужны чтобы компьютеры соединять между собой и обмениваться информацией. Почему "сети"? Да потому что наплели столько всего, что черт ногу сломит! Наплету-ка и я.
Слушаем сказку про жизнь в темноте, добрых людей и телефон, которого нет.

Диалог (соединение)

Видим знакомого на улице. Здороваемся, ведём диалог (реплика-ответ-реплика-ответ), наобщались, попрощались, идём дальше.
У компов всё так же, только по-другому.
Здороваться это установка соединения,
диалог это соединение (или сессия, как угодно),
реплика это запрос,
слова это пакеты,
прощаться это разрыв соединения.
Кто первым поздоровался, тот клиент,
Второй сервер.
Оба - хосты, host.
Считают, что сервер умнее, потому что отвечает на запросы. Необязательно. Просто клиенту от сервера изначально что-то нужно.

Темнота (одноранговая сеть)

Дальше интересней. У компа нет глаз, поэтому диалог мы ведём в темноте. Рядом могут быть и другие люди. Структура от этого не меняется, просто надо знать с кем хотим говорить. Зовём человека по имени и по старой схеме - здороваемся-диалог-прощаемся.
Имя здесь это адрес. Но адрес не простой, а сетевой (будут и другие). Он же MAC, он же Network Address.

Телефон (сегментированая сеть)

А теперь немного иначе. Представьте, что в доме темно и один человек с телефоном (только не на номер звоним, а по уличному адресу, для простоты примера). Чтобы поговорить с человеком теперь надо ему звонить, а для этого надо знать где он живёт.
Уличный адрес этого человека это интернет (IP) адрес. Иногда вы его видите в адресной строке броузера. Но не часто.

Телефон и темнота (сеть с роутерами)

В тёмном доме много людей и телефон. И мне приспичило позвонить... Где телефон я не знаю. Поэтому прежде чем приступать к этому мудозвонству мы назначаем Рому телефонистом.
Я говорю Роме, что хочу позвонить Люде... Фигу он позвонит Люде - на телефоне нет адреса "Люда".
Я говорю Роме, что хочу позвонить по адресу Шишкина 35. Рома звонит. Я говорю "привет, это Саня", Рома говорит в трубку "привет, это Саня", а потом уже громко мне говорит "привет, это Люда! Рада тебя слышать!", тогда я говорю Роме "Как дела, Люда?". И вот таким вот макаром мы общаемся с Людой через Рому. Да, именно сломанный телефон. Радует что компьютеры сами по себе не лгут и не ошибаются, поэтому никаких искажений при разговоре в исправной сети нет.
Рома это наш выход в мир - gateway. Кроме этого он ещё и рутер, роутер, маршрутизатор, router. Благодаря Роме не надо знать имя Люды (MAC), достаточно знать где она живёт (IP).

Здесь есть дополнение - если Рома слышит в трубке "привет, бл*, Саня, каким х* ты дозвонился, старый п*?", а мне говорит "привет, Саня, как ты дозвонился?", то Рома это ещё и файрвол (firewall).

Если ещё не смешно, то пора плакать.

Телефон, темнота и справочная (DNS)

Те же лица в той же ситуации. Только теперь мне надо позвонить на вокзал. Я никогда не запоминал уличный адрес вокзала, зачем? Вокзал у нас один. И я говорю Роме чтобы он позвонил на вокзал. Рома чешет репу и звонит сначала в справочную, спрашивает где находится вокзал, потом звонит по уличному адресу вокзала. Дальше всё по старой схеме.
Справочная это DNS server, его спрашивают DNS/domain/доменне имя, он отвечает IP адрес.
Вокзал это DNS имя. Его вы постоянно видите в адресной строке броузера (о том, в какой части - отдельно).

О том, что DNS имена уровневые расскажу в другой раз, сейчас это лишнее.

There is no spoon ("прозрачные" роутеры в иерархической сети)

Немного мистики. Каждый компьютер находится в темном доме, в котором у него свой адрес и возможно соседи. И всем им нужен Рома (только он умеет набирать на барабане адреса :P ). Роме же нужен свой Рамиль (он как Рома, но ты его не видишь и о нём не знаешь), потому что Рамиль - на тёмной улице, и у него есть телефон. Ты думал, что телефон у Ромы? Фигу. Он просто заливает. И в принципе тебе всё равно, это проблемы Ромы.
Так вот. У Рамиля много Ром-в-тёмных-домах, но Рамилю в свою очередь нужен Рикардо, котрый стоит посреди тёмного района. Рикардо нужен потому что Рамиль стоит на тёмной улице и у него тоже нет телефона, хотя Рома думает, что есть. И т.д.
Телефона нет ни у кого. Это я его придумал.
Просто в один момент "привет" по адресу Шишкина 25 попадает на Ринго, который стоит посреди тёмного города и Ринго знает, что "привет" по адресу Шишкина 25 надо отдать Раулю, который стоит посреди тёмной улицы Шишкина. А Рауль отдаст этот "привет" Руфусу, который стоит посреди тёмного дома 25 и т.д.

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

Итак, все имена на "Р" это "прозрачные" роутеры, создающие иерархическую сеть. Для "уличного" роутера например "районный" это его личный выход в мир (gateway), как для вас Рома выход в мир из дома. Прозрачные они потому что пользуются одними и теми же адресами.
"привет" это ваш пакет.
Шишкина 25 - IP адрес получателя.
Каждый пакет содержит адрес отправителя и получателя. Чтобы не потерять нигде.

Остановились, сделали глубокий вдох.

Это и есть интернет - иерархическая сеть с единой адресной системой. Ура!
Все мы вроде как равноправны, но кто-то предлагает офигенный one.lv, а кто-то его использует.

Что надо знать (сетевые настройки, static IP)

  • Ваше имя дают при рождении - MAC адрес зашит в сетевой карте. О нём можно врать (в настройках карты можно подставить другой адрес). Знать его не надо.
  • Свой уличный адрес вы выбираете - подключились к провайдеру, получили IP адрес. Вам нужно знать свой IP адрес.
  • Выбрав уличный адрес вам дают Рому - ваш gateway. Вам нужно знать адрес Ромы (хоть он и в вашем доме, но его адрес отличается). Обычно Рома в доме один.
  • Потом вам дают представление о том, где вы находитесь - network mask. Почему маска - не так важно сейчас. Она говорит в комнате вы, в доме, на улице или, может, в шкафу сидите. Это определяет как громко надо говорить свои реплики и за сколько человек ваш Рома находится от Ринго-городского. Маску нужно знать тоже, хотя зная два предыдущих её можно +/- высчитать. Распишу отдельно если приспичит.
  • Ещё вы получаете адрес справочной. Его тоже нужно знать.
Итого ваши интернет-настройки:
  • IP (123.123.123.123)
  • Gateway (123.123.123.1)
  • Mask (255.255.255.0)
  • DNS (123.123.123.60)
И когда знать необязательно (авто-конфигурация, dynamic IP)

Иногда в доме есть добрый Дима. Добрый Дима помогает плачущим компьютерам, которые не помнят или не знают ни своего адреса, ни адреса Ромы, ни маски, ни DNS (часто им просто не надо забивать себе голову такими мелочами). На самом деле если в доме есть Дима, то компьютеру необязательно знать ничего. Просто Саня приходит к Диме и Дима даёт ему личный адрес, адрес Ромы, маску и DNS - всё сразу. Очень мило с его стороны.
Дима это DHCP сервер. Компьютер кричит в сеть, что хочет адрес, DHCP его слышит и даёт ему всё. В настройках выбирается "Automatic IP address".

Если до сюда было понятно, то дальше будет круче. Держитесь. ;)

Абонемент на всех (локальные сети)

Не все могут позволить себе личный телефон. А иногда лучше даже когда он не один личный - меньше платить (каждый абонент Ромы платит). Тогда компьютеры набиваются в одну тёмную комнату в тёмном доме и нанимают некого Ренэ с телефоном. Теперь Ренэ передает Роме всё, о чем просят. Ренэ очень похож на Рому, но в то же время отличаетя. И тут в основном моча идёт по трубам.
Пока вы в доме напрямую говорите с Ромой у вас реальный IP. Т.е. если звонят в этот дом, то кроме как вас там искать некого (у вас свой адрес) - Рома смело вам пересказывает разговор.
Но как только в одну из комнат набивается толпа халявщиков, а снаружи ставят Ренэ, то всё становится пипец как интересно. В дом звонят, Рома честно передает Ренэ "привет, Саня!" с адреса Шишкина 25. А Ренэ начинает пускать пузыри - он же не знает кому из халявщиков в комнате это предназначено!
Ренэ это "непрозрачный" роутер.
Халявщики в тёмной комнате это локальная сеть (LAN, Local Area Network). Ренэ их gateway, а для Ренэ gateway это Рома.
Халявщики берут себе адреса чтобы сохранять формат, но в принципе пофиг какие эти адреса, они - виртуальные. Никто из города не будет звонить на такой адрес.
Халявщики даже часто используют Ренэ вместо справочной - мол, сам знаешь где узнавать!

Маскарад (NAT, port-forwarding, virtual servers...).

С Ренэ можно договариваться.
Например чтобы он запоминал кто звонит наружу. Тогда любой из халявщиков может послать "привет" куда угодно и устроить диалог. Потому что Ренэ помнит, кто из халявщиков начал эту беседу.
Это NAT. Компьютер из подсети делает соединение наружу, а роутер запоминает это соединение, посылая ответы на него этому самому компьютеру и никому другому. Без этого делать подсеть почти бессмысленно.
По сути:
  1. исходящий адрес исходящего пакета подставляется на адрдес роутера.
  2. входящий адрес входящего пакета подставляется на адрес компьютера, который начал это соединение (по номеру сессии смотрится, записано в пакте).
Также называют маскарадинг, masquerading - снаружи компьютер один, а ведёт себя как несколько, меняет маски.

... Или договариваться чтобы Ренэ начинал беседу с определенным халявщиком на определенную тему. Например, Люда с Шишкина 25 звонит в наш дом и хочет говорит о котятах. Ренэ знает, что его просили беседы о котятах вести с халявщиком Хьюго по адресу Сталина 123 (адрес внутри комнаты), ему и отдает. Правда Люда уверена, что о котятах говорит с Ренэ, но Хьюго знает, что говорит с Людой.
Это port-forwarding. Порт это пометка на пакете, число, соотносящееся с определенным приложением на компьютере. 20 или 21 - фтп, 80 - http (веб страницы) и т.п. Я это обозвал темой про котят.
Таким образом компьютеры с реальными IP адресами могут делать соединения с компьютерами в локальной сети, с виртуальными IP адресами.

Ещё можно договариваться с Ренэ о сложных схемах, в которых меняются темы, последовательность и т.д.
Это виртуальные сервера. Нужно если сервер для игры с непростыми запросами к соединениям находится в локальной сети.

Ох... Вроде это пока всё о скучном. Теперь самое интересное.

Что это всё значит???

Халявщики из разных домов не могут говорить друг с другом.
  • Это загвоздка в DC++, passive (халявщик) и active (реальный адрес). Если вы passive, то надо роутер учить пропускать порты DC++ или обзаводиться реальным IP.
  • Это загвоздка в Skype - когда посылаете файл, а говорят transfer is being relayed и скорость 2 кб/с, скорее всего вы оба халявщики и кто-то третий (сервер скайпа) должен звонить вам обоим по очереди чтобы передать файл, поэтому и relayed.

Когда вы говорите "интернет не работает" объяснений тысяча. Но по типу ошибки можно предположить что же вероятнее всего случилось.
  1. Не работает соединение вообще - No connection. Скорее всего проблема у вас.
    • проверить аппаратуру
    • проверить настройки

  2. Не открывается сайт, неправильный адрес - Address Not Found.
    • проверить правильно ли набран адрес
    • возможно умер DNS (справочная), в этом случае можно попробовать открыть напрямую IP адрес (если знаете чей-нибудь)

  3. Не открывается сайт, нет ответа - Network Timeout.
    • возможно умер роутер (ваш Рома)
    • возможно умер тот самый сайт
    • возможно с этим сайтом просто плохая связь, такое тоже бывает

Как только набрали адрес сайта слева внизу (status bar) броузер великодушно информирует нас о том, что происходит на данный момент. Последовательность примерно такая: (может варьироваться)
  1. Looking up *хост* - DNS запрос - смотрит в справочной
  2. Connecting to *хост* - делаем соединение - здороваемся, пробуем начать диалог
  3. Waiting for *хост* - ждём ответа
  4. Connnected to *хост* - ответ получили, хост дома, можно говорить
  5. Transfering from *хост* - получаем ответ
На какой стадии этот процесс прервался тоже может помочь в диагностике проблемы.

И ещё пара утверждений напоследок.
  • Хакнуть можно что угодно. (заразить тоже, но я именно про направленную атаку)
  • Файрвол не гарантирует что вас не хакнут.
  • Если вы в локальной сети, хакнуть вас сразу невозможно. Сначала надо хакнуть роутер.
  • Однако если есть перенаправленные порты, то хакать вас проще.
Итого - вероятность удачного хаканья прямо пропорциональна количеству возможных соединений на ваш компьютер из интернета.

Аминь.

Получился хоррор. Впрочем от этих технологий другого ожидать не приходится.

1 комментариев:

Анонимный комментирует...

Не работает соединение вообще - No connection - стоит проверить существует ли интернет впринцепе. Хотя из практики именно это видят большинство пользователей по следующим причинам:
1) интернета вообще нет (рутер вашего провайдера уснул) - самая распространённая - выход, если есть время - подождать минут 30 - час, если нету - то можно сразу звонить в свою контору, провайдеру (приготовьтесь, что у вас могут спросить ИП адрес)
2) поставили "новую", "халявную" прогу частенько с неизвестного сайта
3) извратились над файрволом (зачем?)
4) удалили половину файлов браузера :)) или это сделал кто-то за Вас, или изрядно покопались в настройках
5) Переустановили ОС (как? О.о), и думаете, что всё само заработает

Смешно.. Но так было:) И не только так.
Пример:
-Добрый день.
-Добрый.
-Нет интернета.
-Ок. Где Вы живёте?
-Так то и так то
-А это не в ваш дом ударила молния, и у Вас нет даже света?
-Ну............ Может и у нас, но интернета всё равно нет
- X_x

(в этот раз молния ударила так хорошо, что сгорел рутер не только на доме, но и в парочке близлежащих домов)

К чему это? К тому, что если во всём доме нет интернета, а вы думаете, что самый хитрый засели с ноутбуком, то вряд ли у вас что-то выйдет, ибо маршрутизатор сверху тоже может не работать.

Отправить комментарий