Transcription
Так а ну Приветствую всех. Это наш третий урок по теме модель. Давайте сразу небольшой комментарий сделаю, да. По поводу того, что вот в прошлый раз у нас накладывала произошла накладка со звуком. Я, к сожалению, так и не смог воспроизвести её, попробовать у меня не вышло, да. Так что, если какие-то проблемы со звуком будут, сразу звоните мне в Skype, да, чтобы не тратить время. Вот, соответственно, если проблемы какие-то будут, я постараюсь их сразу же устранить. К сожалению, мне не удалось найти, да, причину какую-то. Так что, когда звоните, чтобы я увидел сразу эти проблемы.
Так, небольшой сразу тест. Трансляцию видно? Народ, отпишитесь в Skype. Видно, слышно нормально? Всё. Давайте, ожидаю небольшой фидбек и начинаем. Кто-нибудь можете в ВК написать либо в Skype? Ну, не вижу что-то. Либо меня никто не слушает, да, либо одно из двух. Я вроде свою трансляцию вижу. Ну, будем надеяться, что вы тоже видите. Всё это. Давайте, если что, короче, в Skype либо в ВК, если какие-то проблемы. Проблемы, меня прямо заспамьте, чтобы я сразу это схватил.
А, ладно, тогда начинаем наш второй урок. И, как я уже сказал, второй урок у нас по модели OSI, по базовому сетевому взаимодействию между машинами. Ну, во-первых, собственно, давайте выясним, что же такое это у нас модель мистическая. А, переключаю, значит, смотрим. Собственно, я немножко погуглил и взял такую картиночку для того, чтобы объяснить, что такое модель OSI, для чего она нужна. Вот. И модель OSI, по сути, есть абстрактная модель, которая описывает сетевое взаимодействие между двумя сетевыми устройствами, устройствами, включёнными в сеть. Вот. А, создана она была международной организацией, как вы видите, да. А, ну, это, в принципе, не столь важно. Важно то, что она описывает сетевое взаимодействие. Вот. Ещё один момент важный то, что это именно абстрактная модель. То есть, вы не можете там подойти к компьютеру, увидеть эту модель воочию, да. Просто по её образу и подобию, как бы, всё сетевое взаимодействие в современном мире оно построено. Модель включает в себя семь уровней, как вы видите на картинке. Это уровни от прикладного вплоть до физического. И на седьмым уровнем у нас с прикладным взаимодействует сам пользователь, то есть какие-то данные туда вводит. С седьмого по первый уровень выполняется преобразование этих данных в сигнал физический, да, и данные дальше передаются по сети. Зачем эта модель нужна вам, как будущим системным иллюстратором, надеюсь. Вот. Она очень сильно облегчает понимание сетевого взаимодействия, да, какой протокол к чему относится и даёт вам неплохой такой скилл шутинга. То есть, если вот вы подходите к компьютеру и видите, что возникла какая-то проблема, там, не открывается сайт или что-нибудь ещё такое. Вот, то если вы не знаете модель, вы, например, 2 часа пытаетесь выяснить, почему он не открывается, в конце концов находите какую-то причину, вот, решаете её. Потом выясняется, что вы неправильно решили, поскольку вы, опять же, не знали о существовании такой модели и о том, на каком уровне произошла именно ошибка. Соответственно, если подходите к компьютеру, видите ту же самую проблему, но при этом у вас хорошее понимание модели, вот, вы сразу смотрите, с большей гораздо вероятностью можете понять, в чём проблема и устранить её правильным методом, который именно нужен для устранения этой проблемы. И пока не знаете, куда её практически применить. Вот. Я на будущих уроках своего курса расскажу на примерах, да, как она применяется, где и зачем. Вот. Но, как бы, имейте в виду, что вот это такая, такой один из столпов в области системного администрирования. И для успешного системного администрирования необходимо. Да. Больше нечего сказать. Вот. Любой администратор нормальный, если вы знаете кого-то, да, можете спросить у модели. Но если он вам не расскажет все уровни, то, по крайней мере, расскажет, что на каждом из них происходит, как это взаимодействует. Вот. Поэтому я настоятельно вам рекомендую, если вы что-то недо поймёте, спрашивать, читать в интернете. Вот. Эту тему она пригодится не только для системного администратора, но и для начального уровня. Для, да, это очень, очень, очень, очень сильно поможет вам устранять сетевые проблемы в будущем. Вот. Собственно, зачем же эта модель была создана. Давайте теперь перейдём, собственно, к самой модели. Вот. Ну, модель была создана для стандартизации какого-то программного обеспечения. Ну, то есть, раньше, когда этой модели не было, например, каждый программист, он должен был написать свою программу, внедрить туда какой-то код, написать что-то для того, чтобы эта программа могла по сети взаимодействовать с другой программой. Либо, если он пишет клиент-серверное какое-то приложение, да, чтобы клиент мог обратиться к серверу. И вот это всё лабуду ему надо было писать. Каждый писал это по-своему, и в результате многие программы, например, не могли по сети между собой взаимодействовать, потому что они были построены по абсолютно разным принципам. Вот. Модель это описывает как раз какие-то принципы общие, которые все разработчики, да, используют при написании своих программ и учитывают. Таким образом, многие программы просто могут взаимодействовать по сети, при этом разработчикам этих программ взаимодействовать, в принципе, не обязательно. Вот. Но чуть позже я тоже упомяну о моменте для разработчиков. Ну, в общем, так.
Собственно, как я уже сказал, модель, как вы видите, состоит из семи уровней. Где на седьмой уровень поступают данные от пользователя. И в машину, грубо говоря, в виде сигнала в провод передаются с каким-то там вольтажом, силой тока и так далее. Вот. Если вы данные вводите сюда вот сверху, давайте я сейчас нарисую. Вот. Если вы данные вводите какие-то сюда из приложения, ну, например, там, текст "АВ". Здесь он преобразуется в какой-то сигнал. Этот удалённый компьютер выполняет преобразование обратно этого сигнала вверх по модели, и здесь какое-то удалённое приложение получает на выходе вот эти "АВ", которые вы ему передали. Ну, и теперь давайте ещё один момент насчёт этой модели. Каждый уровень может взаимодействовать лишь с соседним. То есть, если вы берёте сеансовый уровень, надо понимать, что сеансовый уровень может взаимодействовать лишь с уровнем представления и с транспортным уровнем. Вот. Также, как если вы берёте канальный, он может взаимодействовать лишь с сетевым и физическим. Да, на уровень выше, на уровень ниже. Взаимодействие между уровнями для удалённого компьютера. Ну, в общем, в общей картине выглядит так, как вот эти стрелочки показывают. То есть, прикладной уровень считает, что он взаимодействует напрямую с вот этим уровнем, с прикладным на удалённой машине. То есть, если приложение передаёт данные вот сюда вот в прикладной уровень, то та машина считает, что эти данные сразу с прикладного уровня к ней поступили. Всё, что находится ниже прикладного, для прикладного уровня полностью прозрачно. Вот. Также для сетевого уровня, да, всё, что находится ниже него, прозрачно. Он передал данные на канальный уровень. Вот. И дальше он ожидает, что сетевой уровень получит эти данные. Но для сетевого уровня, поскольку выше него тоже есть уровни, также всё примерно прозрачно. То есть, ему какие-то поступили данные из транспортного, он не знает, что там происходит на этом уровне. Он просто получил эти данные, выполнил какие-то операции с ними и отправил дальше. Ну, то есть, уровень взаимодействует всегда сразу с удалённым уровнем. Да, для него всё, что ниже, это прозрачно. При этом данные могут передаваться между соседними уровнями. То есть, как я уже объяснил, да, сеансовый с представлением, например, взаимодействует и с транспортными уровнями. Вот. И при этом надо учитывать ещё один момент, что информацию вышестоящего уровня какую-то нижний уровень не видит. Ну, вот, например, у нас IP-адрес относится к сетевому уровню. Да, канальному уровню передаются, передаются данные, но IP-адрес в эти данные не входит. Точнее, он входит в эти данные, но для канального уровня это не видно. То есть, ему приходит какой-то сегмент, который нужно передать. Вот. И для канального уровня неважно, что там внутри него находится, и он выполняет какую-то свою обработку и передаёт данные дальше. Вот. Ну, надеюсь, более-менее понятно.
Сейчас. Теперь давайте пройдёмся по всем уровням. Собственно, уже одну секунду. Итак, начнём с первого уровня. И первый уровень - это у нас физический уровень. На физическом уровне выполняется преобразование данных, которые поступили с канального уровня, второго. Выполняется преобразование этих данных в физический сигнал. То есть, канальный уровень передаёт данные, какой-то сегмент. На первом уровне они преобразуются в физический сигнал. То есть, на первом уровне, например, задано сила тока, напряжение, там, частота сигнала. Вот. И всё это идёт, передаётся в среду передачи, физическую передачи. Также характеризуется первым уровнем. То есть, медная пара, например, витая, да, это среда передачи первого уровня. Или оптическое оптоволокно, да, это тоже среда передачи. Вот. Ну, единственное, если там оптоволокно, соответственно, сигнал имеет какие-то другие характеристики. Не, если вы только не будете разрабатывать какие-то решения, там, да, кабели и так далее. Вот. Но просто знаете, что он существует и, собственно, выполняет функцию преобразования сигнала, преобразования данных уже в сам сигнал. То есть, единички, нули преобразуются в физический сигнал.
Второй уровень модели модели - это канальный уровень. У канального уровня функция соединять физические устройства. Вот. На этом уровне осуществляется какая-то базовая адресация, о которой я упомяну позднее, когда мы разберём эту модель. Вот. На втором уровне работают также свичи. То есть, если между компьютерами есть свич, это устройство второго уровня. Это значит, что когда сигнал проходит вот по физическому каналу, а здесь у нас, допустим, стоит свич или коммутатор по-русски, он значит, берёт и всё, что в него приходит, он распаковывает до второго уровня, то есть преобразует сигнал обратно в какой-то пакет второго уровня, смотрит, анализирует заголовки и направляет в соответствии с этой логикой дальше. Это свич или коммутатор. На этом уровне также следует различить такой ещё момент. Существует устройств Access адрес. Ну, что такое этот адрес? Это, в принципе, физический адрес сетевой карточки, да. Если у устройства есть выход, через который он может взаимодействовать с другими устройствами. Ну, это, например, Wi-Fi адаптер, да, или сетевая карта. Вот. То каждая такая карта вендора изначально производителем снабжается Media Access Control адресом, MAC-адресом. Этот MAC-адрес уникален, ну, за исключением, разве что, виртуализации. Вот. Этот MAC-адрес уникален для физических устройств, и выглядит он как, например, вот такой вот адрес. Он выглядит, ну, скажем, вот такой вот. Это у нас MAC-адрес, физический адрес устройства. И ещё один момент. У каждого уровня есть такое понятие как [музыка]. Это, в принципе, пакет, который на этом уровне существует. Например, пакет. Вот это слово я говорю, на самом деле, у нас не существует пакета на втором, четвёртом уровне. Пакет - это у нас единица измерения данных, да. На сетевом уровне, на канальном уровне - это или, который у нас на втором уровне присутствует. То есть, между вторым уровнем этого устройства и этого удалённого передаются именно фреймы. Они оперируют такой единицей как фрейм.
Дальше у нас идёт сетевой уровень. И на сетевом уровне [музыка] кратчайший маршрут. На этом уровне, вот, и происходит составление таблиц соответствия IP-адресу, MAC-адресу. Ну, об этом я позже тоже расскажу, когда мы будем говорить о маршрутизации. Вот. Пока что просто имейте в виду, что на сетевом уровне у нас возникает такое понятие как IP-адрес. Что же такое IP-адрес? IP-адрес - это логический адрес. Ста, это физический адрес. IP-адрес - это логический адрес. Ну, например, он выглядит вот так вот: 172.16.0.4. Это у нас логический адрес компа. Вот. Ну, зачем же нужен IP-адрес, если у нас есть физический адрес, спросите вы. Ну, об этом я тоже расскажу позднее, когда мы будем переходить к маршрутизации. Вот. Пока что для большего понимания, что такое IP-адрес, мы можем взять для примера. У автомобиля есть какой-то VIN-номер, который присваивается заводом-изготовителем, да. Ну, этот номер, он как бы не изменяется изначально. Вы его можете подделать, да, также как и MAC-адрес, вы его можете подделать. Вот. Но по сути, VIN-номер, вот этот физический номер - это номер автомобиля, который у него не изменяется, который уникально присваивается каждому автомобилю. Вот. И в этой модели сетевого, встретить также у каждого автомобиля у вас есть обычный госномер, там, да, А123УУ, например, там 777. Вот. Госномер, госномер, соответственно, может меняться в зависимости от владельца. Вот. Вы его можете там также подделать и так далее. Вот. И госномер, он будет у нас соответствовать логическому адресу, то есть IP-адресу. Ну, зачем это нужно? Зачем нужно два типа адресов? Об этом я скажу позднее.
Транспортный уровень - это, собственно, первый уровень, который занимается непосредственно, как бы, отправкой данных по сети. Всё, что выше транспортного уровня, я скажу об этом чуть позже, это, в принципе, относится к приложениям, Application. Допустим, вот. Значит, транспортный уровень занимается передачей данных и адресацией к конкретному приложению. Ну, об этом тоже чуть роче скажу. Вот. Ну, и высшие уровни у нас уже занимаются, собственно, какими-то задачами с формой данных и обратными этими данными. Уровень устанавливает какие-то сессии между приложениями. То есть, как мы помним, да, уровни у нас для удалённого компьютера видит сразу, точнее, уровни между удалёнными машинами видит сразу соответствующие уровни на других машинах. То есть, вот. На этом уровне производится какое-то специфичное данные. Во время обмена теряет. Вот. Оно может на этом уровне запросить повторную их передачу. Вот. А сеансовый уровень - это сделает уже через нижестоящий уровень. Уровень представления. На этом уровне у нас происходит шифрование, сжатие трафика, какая-то обработка кодировок. Ну, допустим, если вы написали письмо, например, на русском, да, а по сети передаётся оно только по-английски. Вот. На уровне представления письмо ваше переведёт с английского. Ну, очень грубый пример такой, но в общем так. И прикладной уровень - это, собственно, уровень, с которым осуществляется взаимодействие приложений. Вот. То есть, когда вы пишете письмо, оно, собственно, в своём первоначальном виде попадает на прикладной уровень, только потом идёт дальше. Ну, собственно, это у нас. В этом заключается модель OSI. Давайте я уберу сейчас этот слой. Секунду.
Теперь давайте поговорим о том, что такое, то есть, какая-то единица данных на каждом конкретном уровне. Значит, у нас с уровня седьмого по пятый, как я уже сказал, выполняются какие-то операции. Связано. Там происходит. Важно то, что вот в итоге у нас получается какой-то пакетик с данными. Ну, например, давайте более такой живой пример. Вы пишете письмо по электронной почте и пишете там: "Привет!". Восклицательный знак. Вот это "Привет" - он, значит, поступает изначально на седьмой уровень. Дальше выполняется какая-то его обработка. Ну, давайте я даже, наверно, разберу более подробно. Вот у нас идёт седьмой уровень. Вы сюда ввели "Привет". Оно поступило приложению. Вот. На шестом уровне вы решили, что вам следует как-то данные зашифровать, да, и они зашифровались там P11. Ну, вот такой вот простенький шифр, да. То есть, чтобы невозможно было прочитать. Написали не одно письмо, а три и передали их предложению. "Привет", да, допустим, 1 и 2x. Три письма. Это у нас раз письмо, два письмо, три письма. Вот. На шестом уровне выполнилось преобразование этих данных. Ну, вот, как я уже показал пример, да, с шифрованием. На пятом уровне вы, например, хотите, чтобы три письма вот эти были доставлены именно в порядке 2, 1, 3. Вот. А, то есть, они передались в порядке 3, 2, 1, пришли вот получателю в таком порядке, да. И вот, чтобы получатель эти три письма получил именно в том порядке, в каком вы хотите, да, на пятом уровне вы устанавливаете сессию. Сессию между приложением отправителем и приложением получателем. Ну, вот, есть такой более насущный пример даже. Вы отправили реальных три физических письма, да, отправили там на почту, отнесли. Вот. И по какой-то причине там два из них дошли в начале, а первое, которое должно было дойти, оно. И чтобы письма прочитал получатель именно в том порядке, в каком вам хочется, вы звоните ему по телефону и говорите: "Слушай, чувак, я тебе тут отправил три письма, прочитай-ка ты сначала первое, а потом второе, третье". Вот. И, собственно, вот это и будет у нас сессия. Здесь такая сессия устанавливается. Вместо этого, вместо преобразований, это у нас какие-то данные. Ну, просто данные. Значит, дальше эти данные передаются вниз по модели. И на четвёртый уровень. Четвёртый уровень - транспорт. На транспортном уровне у нас добавляется. Вот эти данные у нас остаются и добавляется какая-то информация к этим данным. Вот. И вот этот вот весь фрагмент - это есть PDU четвёртого уровня. В зависимости от протокола, это может оно, это PDU называться либо сегмент, либо, например, датаграмма. Ну, вот позже мы будем говорить о модели TCP. Вот. Если вы используете протокол UDP, то вот этот фрагмент он называется датаграмма. Если TCP, то сегмент. Вот. А здесь добавляется какая-то информация, которая нужна для уровня. Вот в этом месте, да. Ну, конкретно здесь добавляется у нас порт. Например, что такое порт? Вот. Ну, давайте поговорим о том, как идентифицировать приложение. Вот у нас есть компьютер. Сейчас, давайте сделаем вот так вот. У нас есть какой-то компьютер. На нём у вас работает несколько приложений. Ну, например, приложение раз - веб-браузер, там, какой-нибудь почтовый клиент Outlook, например, и А, например, работает у вас на компьютере. Вот. Когда какие-то данные, а здесь у нас удалённый компьютер, да. И когда какие-то данные вы хотите передать вот от этого компьютера к этому, вы выполняете обработку этих данных, да. Они идут вниз по модели OSI, отправляются на вот этот компьютер, и здесь выполняется обратное преобразование. И вы, например, отправляете данные конкретно для почтового сервера. То есть, отправляет данные к почтовому серверу. Здесь, например, стоит этот почтовый сервер, да. Отправляет данные именно. Но данные пришли как бы. Компьютер посмотрел, какой-нибудь сервер. Вот. Соответственно, компьютеру данные пришли, а куда их дальше пихать, он не знает. Вот. Собственно, чтобы такой проблемы не возникало, существует такое понятие как порт. И каждому приложению на компьютере соответствует какой-то порт. Ну, например, веб-сервер, почтовому серверу, к примеру. Вот. Этот порт позволяет идентифицировать этот компьютер. То есть, в пакет на четвёртом уровне, как я показал уже, да, включается информация о порте. Порте отправителя и порте получателя. Соответственно, когда вот эта информация приходит на удалённый компьютер, вот этот удалённый компьютер пакет распаковывается, и на каком уровне написано, что по порту отправляется на сервер. Соответствует приложению. По передаче данных конкретно этому приложению, где они уже обрабатываются дальше. Вот. Ну, и поскольку уже об этом заговорили, каждое приложение, давайте сразу скажу, идентифицируется уникально тремя параметрами: это IP-адрес, порт и это протокол. Это у нас информация седьмого уровня, как правило. Ну, вот в данном примере, покра. Значит, что такое протокол? Сразу давайте скажу. Протокол есть, по сути, какое-то описание того, как что-то должно работать. Ну, допустим, если взять какой-то пример, например, вы отправляете физически какую-то посылку, да. Вам говорят, что форма отправляете, и написано: укажите адрес получателя, там, адрес отправителя, какой-нибудь индекс, какой-нибудь вес, там, да. Вот. Вот это можно назвать протокол. То есть, чтобы заполнить, чтобы отправить посылку, вам нужно следовать этому протоколу. Вот. Также, например, если отправляете письмо, где написано, что там сервер должен подключиться к удалённому серверу, там, первым действием, да. Дальше он там должен сказать, дальше там должен сказать имя там отправителя, там, дальше имя получателя и так далее. И если вы следуете этому протоколу, то у вас письмо отправится. Если вы раз и не говорите логин, например, не следуете протоколу, то не получится. Такая станция тоже приду. Так вот, значит, каждое приложение у нас идентифицируется протоколом уникально. Ну, скажем, в случае почты SMTP, портом, в случае почты, как правило, 25, и адресом вот этой удалённой машины. Вот. Ну, надеюсь, понятно, что такое порт и что такое протокол. Значит, на четвёртом уровне, как я уже сказал, у нас добавляется информация о порте отправителя и порте получателя. И ещё сразу добавлю один момент о портах. Возможно, возникает иногда замешательство, да, и какое-то недопонимание может возникнуть. Значит, вот мы говорим, что почта отправляется на порт. Когда мы об этом говорим, обязательно имейте. Вот у нас почтовый клиент, который отправляет почту. Вот у нас почтовый сервер. Вот. И когда мы говорим, что почта отправляется на 25 порт, это означает, что двадцать пятый порт он на сервере. Когда приложению требуется какой-то порт, приложение, значит, совершает два действия. Первое: оно совершает биндинг. Действие биндинга. Это значит, что приложение занимает 25 порт. Ну, то есть такое сообщение. И вторым действием это приложение, оно начинает слушать этот 25 порт. И что это значит? Это означает, что все пакеты, которые приходят на компьютер-сервер, если они имеют в адресе, точнее, в порте получателя, это получение 25 пакетов, они будут переправляться на сервер. Вот. Ну, возможно, многие как бы предполагают, да, что отправка также идёт с 25 порта. Ну, как бы, это логично, возможно, кажется поначалу, да. Вот. Но на самом деле это абсолютно не так. Вот. Имейте это в виду. Отправка выполняется не с 25 порта. Отправка выполняется с так называемого диапазона динамических портов. Ну, например, в случае с Windows, это порты 41000, что-то там, не помню, тире 65535. Вот. И отправка осуществляется именно с одного из этих портов. То есть, в пакете, например, если идёт отправка почты, у нас будет пакет такого вида. Вот. Там порт отправитель 42743 отправляет на. Мы увидим вот именно такое взаимодействие. Вот. И это очень важно. Например, если Вам нужно когда-то открыть порт, Вы знаете, да, что порт открывать нужно именно со стороны получателя, двадцать пятый порт. Ну, ещё к слову о портах, давайте сразу скажу. Порты у нас - это 16 бит. Шестнадцатибитный идентификатор имеют, соответственно, они могут быть от 0 до 2 в 16 степени, или 65535. Вот. Причём порты ниже 1024 - это так называемые хорошо известные, и они как правило используются часто протоколами, которые, ну, какие-то стандартные, очень-то широко распространены протоколы. Вот эти, да. Скажем, протокол HTTP у нас использует восьмидесятый порт, да. Правило HTTPS - 443 порт. Вот. Ну, это очень известные порты, как бы. Когда вы начинаете работать с сетью, одни из первых портов, которые вы узнаёте. Ну, и соответственно, ниже 1024 порты, как правило, зарезервированы для таких приложений. Поэтому считается правилом хорошего тона, если вы создаёте какое-то приложение, да, или устанавливаете, у вас есть возможность указать порт для него. И для таких критических служб, как правило, во многих операционных системах создана такая штука, что для изменения порта, для биндинга порта ниже требуются административные привилегии. Ну, это вот к слову о портах.
И значит, сюда мы запишем. Здесь у нас, давайте так вот. Вот так вот. Значит, здесь у нас прибавляется порт. О, порт отправитель, да, и порт, порт получатель. Вот. Конечно, это не полная информация. К этому юниту, к фрейму, сегменту добавляется ещё какая-то информация, как правило, да. Вот. Она сейчас нам не важна. Вот. Поэтому о ней мы говорить не будем. Ну, и для общего развития, сегмент у нас устроен вот так вот. Это вот поле - это данные какие-то, да. Здесь у нас перед сегментом, вот где порты, например, указано, это так называемый хэдер, или заголовок, добавляется. И в конце может добавляться какая-то тоже информация. Вот. Это называется трейлер, или такой хвостик. Ну, например, контрольная сумма. Ну, соответственно, так устроены пакеты, да. Если вы будете идти в область сетевого администрирования или просто для общего развития изучать это, да, то вы увидите, что на самом деле в каждом юните, на каждом уровне очень много полей может быть. Вот. Там 10, например, которые несут какую-то системную информацию, и только одно из этих полей несёт данные, которые переданы с высшего уровня. Вот. Ну, собственно, это у нас был четвёртый уровень. Ну, есть четвёртый уровень - это порты. И давайте чуть позже расскажу о протоколах, соответствующих каждому уровню, когда мы перейдём к модели.
Значит, третий уровень. На третий уровень передаётся уже вот эта информация вновь в виде информации. И добавляется ещё какая-то информация, да. И здесь добавляется. Наречие, что у нас получается на третьем уровне, на сетевом? У нас добавляется первое: IP-адрес получателя и IP-адрес отправителя. Ну, соответственно, это нужно для маршрутизации. Маршрутизации мы говорить будем позже. Ну, то есть, на третьем уровне у нас вот этот юнит, он нарочно ещё немножко появись. Вот. Эта информация, опять же, повторю, что информации появляется намного больше, но пока что нас интересует только это. Дальше у нас идёт второй уровень - канальный. Значит, опять мы рисуем данные, переданные третьему уровню, второму уровню. И на втором уровне у нас добавляется информация о MAC-адресах. То есть, второй уровень: MAC отправителя, MAC получателя. Ещё раз напомню, что IP - это логический адрес, MAC - это физический адрес. Ну, и на первом уровне, в конце концов, эти данные, они преобразуются. Ну, например, в электрический сигнал, если, например, компьютер с обычным интернет-проводом. Вот. Итак, резюмируя: с седьмого по пятый уровень у нас выполнилось преобразование вот этих вот данных. Дальше к этим данным в течение каждого уровня, прибавляя информацию. На четвёртом уровне - это был порт, чтобы уникально идентифицировать приложение, которому отправлены эти данные на удалённом компьютере. На третьем, сетевом уровне - это
IP адреса, чтобы уникально идентифицировать удалённый компьютер. И на втором уровне - это MAC-адреса, в принципе, для той же цели, но разницу объясню чуть позже, увидите. И на первом уровне происходит преобразование всех этих данных, ввод всего в электрический сигнал. Ну, надеюсь, понятно. Так, значит, очищаем и теперь более конкретно смотрим, что у нас в итоге выходит, как это всё работает. Давайте теперь поговорим о стеке протоколов. Стек протоколов TCP. Давай нарисую нашу модель OSI ещё раз. Вот у нас седьмой уровень, шестой уровень, пятый уровень. Как мы помним, с седьмого по пятый уровень у нас выполняется обработка данных приложениями. Четвёртый уровень, где у нас прибавляется информация о портах. Третий уровень, где у нас прилепляется IP-адрес. Второй - канальный, первый - физический. Ну, немного кривовато, но это у нас вот TCP/IP стек протоколов. Во-первых, что такое стек протоколов? Вот это слово "стек" оно может вызвать какое-то недопонимание. Да, что такое протокол, я уже объяснил. Что такое стек? Это все протоколы, используемые для преобразования данных. Ну, например, если здесь у нас там используется HTTP, здесь там какой-нибудь SSL накладывается, здесь там, не знаю, SQL или C++, например. [Музыка] Здесь ещё что-нибудь. Да, вот это вот всё - это стек протоколов. Вот стек протоколов TCP/IP назван так по двум самым часто используемым протоколам, которые, в принципе, на вот этих двух протоколах TCP и IP построены. Сейчас, ну, наверное, большинство коммуникаций. Да, соответственно, вот этот стек он всегда используется. Как же мы можем привязать этот стек к модели OSI? Давайте вот слева у нас OSI, справа TCP/IP. Значит, у TCP/IP вот эти три уровня объединены в один уровень. Это у нас четвёртый уровень или Application уровень или прикладной уровень. Вот. Ну, например, HTTP, SMTP, уже о которых я сказал, там DNS - это всё протоколы четвёртого уровня по модели TCP/IP протоколов. Дальше у нас идёт транспортный уровень. Вот это у нас соответствует третьему уровню в модели. И здесь, например, у нас есть два основных протокола - это TCP и UDP. Чем отличаются протоколы TCP и UDP? Ну, давайте покажу. Значит, протокол TCP и протокол UDP. В принципе, отличие очень простое. При отправке данных, отправляете с первого хоста данные на второй хост. Отправили пакеты. Паке-е-ет. И отправили. Значит, здесь произошёл какой-то сбой, и второй пакет доставлен не был. Пакет третий, пакет. Второй пакет теряется. Второй хост не знает о существовании второго пакета, хотя на втором хосте, имейте в виду, может быть реализована какая-то проверка данных на уровне приложения, то есть на седьмом, ну, или на четвёртом, да, в случае вот. И приложение может увидеть, что пакета нет, но если мы не будем подниматься, об этом не узнаем. В случае с TCP устанавливается какая-то сессия, и если у нас утерян, доставляется один пакет, первый и третий пакеты. Второй пакет теряется. Удалённый компьютер это видит, просит первый компьютер: "Слушай, пришли мне второй пакет". Тот пересылает второй пакет, и в этот раз второй пакет доставляется. То есть в протоколе TCP гарантирована доставка. Если мы что-то отправляем и используем протокол TCP, то мы можем сказать, что все пакеты будут точно получены. Если мы такого сказать не можем... Ну, это вот такое достаточно простое различие. Ну, и в чём разница? Почему не использовать всегда TCP? Возникает резонный вопрос. Соответственно, достаточно логичный ответ: потому что для UDP требуется [Музыка] протокола, поскольку нужно ему провести контроль, был ли утерян пакет или нет, определить это, рассчитать какую-то контрольную сумму, там, да, посмотреть что-то ещё, какие-то данные запросить пакета, чтобы он ещё раз переслал, вернуть пакет. Такого не вот. Протокол UDP используется как правило для таких вещей, как, ну, например, вот просмотр видео. Да, вот даже заметим, качество немножко искажено, там будет один пиксель показан, грубо говоря, не чёрным, а серым, к примеру. Да, мы это скорее всего не заметим. Используется там, где нужна гарантированная доставка. Например, если какую-то банковскую информацию передаёте, да, что вы оплатили 10 миллионов рублей, соответственно, используется протокол, скорее всего, выбираем это протоколы. Теперь переходим к третьему уровню или сетевому уровню в модели. В модели TCP/IP протоколов это у нас второй уровень. Он называется, кстати, интернет-уровень, по-моему, уровень Интернета, но сейчас, по-моему, тоже сделали название сетевой уровень. Говоря будучи на этом уровне, у нас IP-адрес. Ну, в стеке протоколов TCP/IP - это единственный протокол, работающий на этом уровне. Это, ну, на самом деле не совсем единственный, а на самом деле единственный, который, наверное, связывает уровни, который ответственен именно за передачу данных, за маршрутизацию. То есть, если у нас не будет протокола IP, данные передать от одного компьютера мы не сможем ни при каких условиях. Если нет какого-то другого протокола, да, мы там сможем худо-бедно что-то сделать. Ну, вот так скажем, это обязательно имейте в виду. И первый уровень здесь - это объединяет себя канальный и физический уровень. Ну, здесь у нас идёт физическая, физическая среда передачи, провод, соответственно, это MAC-адрес или физический адрес хоста. Протоколы здесь используемые, MAC-адрес - это не протокол. А, ну, вот Ethernet, например, относится к этому уровню протокол. Ну, собственно, надеюсь, более-менее понятно. Вот. Теперь давайте попробую разжевать это ещё больше. Вот. И мы переходим к нашему второму разделу - это маршрутизация, коммутация, как, собственно, пакетики у нас ходят по сети. Ну, давайте вновь всё это стираем. Итак, у нас есть компьютер. Вот первый компьютер. К сожалению, мне придётся опять нарисовать мою кривую, крайне модель, поделить её. Ну, давайте не будем её. Ну, ладно, давайте поделим. У нас 1, 2, 3, 4, 5, 6, 7 уровней получилось. Вот, отлично. И здесь точно такой же удалённый. А, какой кривой. Давайте ещё разок. Удалённый компьютер, и тоже тут семь уровней. 1, 2, 3, 4, 5, 6, 7. Ну, наглядно, надеюсь, более-менее. Значит, это у нас второй компьютер, это у нас первый. Если у нас всего два компьютера есть в сети, вот, всё. Значит, довольно просто. Мы берём, вводим какие-то данные на седьмой уровень. Вот они преобразуются, седьмой, шестой, пятый, четвёртый, третий, второй, первый уровень. Здесь они попадают в физическую среду передачи. На другом слое, чтобы потом не редактировать 10 раз. Вот здесь они попадают в физическую среду передачи, в провод, какой-то сигнал. Да, вот. И здесь они попадают сразу в этот компьютер, да, в первый уровень этого компьютера, где они преобразуются эти данные обратно в приложение, поступают в данные, понятные пользователю, и всё хорошо. Но давайте теперь посмотрим вот что. У нас есть два компьютера, вот они взаимодействуют между собой весьма хорошо. Но что, если у нас компьютера три, например, или четыре, или пять? Ну, давайте возьмём четыре компьютера. Соответственно, чтобы компьютер взаимодействовал с одним компьютером, ему нужен физический провод. Вот. Ну, и всё хорошо взаимодействует. Но если ему нужно взаимодействовать с двумя компьютерами - физических провода, с тремя - три физических провода. То есть получается, у нас что получается? Чтобы каждому компьютеру взаимодействовать с каждым компьютером при такой схеме, в каждом компьютере должно стоять как минимум одна сетевая карточка с тремя портами, да, которая будет значительно дороже, чем карточка с одним портом. Вот. Или три сетевых карточки с по одному порту в каждой из них. Вот. А если у нас компьютеров 50, то в каждый компьютер у нас требуется 50 сетевых карт. Ну, естественно, никто не будет заниматься такой ерундой. И для того, чтобы такого не было, у нас придумано такое устройство, как... Что такое? Здесь у нас ставится устройство. По-русски или по-английски так. Вот. И просто в него берутся и втыкаются проводами все компьютеры. Вот. Ну, и всё прекрасно. А, но как Hub работает внутри? Hub, запоминаем, это устройство первого уровня, то есть устройство физическое, на физическом уровне работающее, работающее. А суть его в том, что вот у нас Hub. Давайте его нарисуем. Тут здесь у нас втыкаются четыре компьютера: 1, 2, 3, 4. И здесь они между собой соединены просто. Поскольку Hub - устройство первого уровня, когда в один из его портов прилетает какой-то электрический сигнал, он просто берёт и этот сигнал отсылает на все оставшиеся порты. Вот. Ну, соответственно, что мы сразу отсюда можем сделать? Какой вывод? Можем сделать вывод такой: если имеет пропускную способность в 10 компьютеров, каждый компьютер получит, ну, в среднем 10 мегабит в секунду. То есть вся пропускная способность Hub'а делится на количество воткнутых устройств. Это раз. Плюс, поскольку у нас среда передачи одна, вот эта физическая, провода, да, используется, если у нас сигнал передаёт один компьютер, другие компьютеры в этот же момент времени сигнал передавать никуда не могут. Вот. Ну, это тоже, соответственно, минус Hub'а. Ну, и люди поработали, поработали на Hub'ах. Вот. И как-то им не понравилось это, то, что если мы воткнём там 100, например, компьютеров, да, то там начнётся очень дикие тормоза. Вот. Потому как по сети будет передаваться много информации, поскольку она, передача информации не оптимизирована, там будут торможения. Чем больше хостов, тем сильнее будет тормозить. Рано или поздно, медленно, что запросы будут поступать на неё чаще, чем смогут выполняться. Да, и, ну, это в общем негативно скажется на работе пользователей. Ну, и чтобы такого у нас не происходило, был придуман Switch. Удаляем всё. И второе - это у нас Switch или коммутатор, или устройство второго уровня модели OSI. Вот. Что такое Switch и как работает он? Ну, давайте посмотрим. Вот у нас есть четыре компьютера. А здесь Switch. Давайте здесь компьютер нарисуем и здесь. Да. А, значит, ну, давайте вот так вот ещё нарисуем, как у нас работает Switch. Оп, оп. Немного кривовато. Опять, да? Но давайте. Это у нас Switch. А Switch работает немного по иному принципу. Вот. И работает он следующим образом: если у нас информация передаётся, например, вот от этого первого компьютера на какой-то другой, с первого на шестой, например, то она поступает на Switch. На Switch есть какой-то микропроцессор, который выполняет обработку. Этот пакет, точнее, информация, передана сигналом на первом уровне, поступает на Switch. А дальше процессор на Switch выполняет обработку этого пакета. То есть, что он делает? Он берёт поступившую информацию, вот, допустим, сигнал пришёл, да, на Switch. Он Switch взял этот сигнал и сделал преобразование его обратно в данные, то есть в фрейм второго уровня. И что он увидел? Он увидел отправителя, получателя и какие-то данные прилепленные здесь, да, ну, и дополнительная информация. Вот. И соответственно, согласно своей информации, у Switch'а есть такая штука, как таблица коммутации, так называемая. И он смотрит в эту табличку. А в этой таблице у него указано соответствие. Давайте здесь у нас порт 1, здесь порт 6. Соответственно, у него в табличке будет записано, что порт 1 у нас MAC 1, порт там 2, 3, 4 - MAC 2, 3, 4. И порт 6 - это MAC 6. Вот так. Соответственно, он смотрит и видит, что в пакете MAC... Этот пакет, точнее, фрейм. Фрейм, извиняюсь, всё время говорю неправильно, да? Вместо того, чтобы рассылать этот фрейм на все оставшиеся компьютеры, то есть 2, 3, 4, 5, 6, он берёт и пересылает его прямо на шестой компьютер. Ну, давайте выделим, да? То есть информация у нас идёт строго туда, куда она направлена. Она не идёт, куда ей хочется, на все порты. Да, потому что Switch, ещё раз повторюсь, это устройство второго уровня. Вот. Он знает по существованию MAC-адресов и по ним осуществляет направление. Вот. Соответственно, что это нам даёт? Даёт это нам следующее: во-первых, если у Switch'а пропускная способность 100 мегабит в секунду, то это 100 мегабит уже на порт. То есть одновременно Switch сможет передавать там не 100 мегабит, да, а 600 мегабит, если вот все порты начнут передавать, против 100 мегабит на Hub'е первого уровня. По факту меньше, потому что пропускная способность нагрузок, плюс там память есть своя оперативная на Switch'е, да, всё это тоже требует накладывает какой-то избыточный требование к производительности, поэтому 600 мы не получим никак. И поскольку есть ещё такое понятие, как компьютер может передавать данные в две стороны по витой паре одновременно, к примеру, да, соответственно, у порта скорость 100, 100, только в принципе порт - это 200 мегабит в секунду, да? То есть 100 исходящая скорость, 100 приходящая. Ну, тоже имейте это в виду, в зависимости от работы Switch'а. Единственное, поправлюсь, вот по-моему, это называется дуплекс. Вот. Ну, я честно говоря, не очень сильно в сетевых технологиях. Если вам это интересно, вы можете послушать какой-нибудь курс от Cisco, например. Там будет подробно много всего расписано. Вот как че там делают. Базовое введение, чтобы вы понимали базово, как это работает. Итак, начнём. Мы закончили. То есть Switch. Что нам нужно вынести отсюда? Это устройство второго уровня. Пакет куда приходит, куда направлен, точнее, именно туда он и идёт. Вот. Теперь поговорим о том, как работает Switch у нас в принципе. Вот. Давай нарисуем, как выглядит Switch на этой схеме. Вот у нас данные идут вниз по модели. Давайте стрелочкой это укажем. Вот у нас данные, они идут вниз по модели. Ну, здесь они соответственно преобразуются в обратном порядке вверх по модели, и получается, ходят здесь. А на втором уровне у нас есть MAC-адрес. Здесь у нас сигнал. То же самое. Тут. Вот. И когда у нас есть Hub, как это выглядит? Если у нас есть Hub, выглядит это просто. Вот у нас идёт физическая среда передачи. Здесь стоит Hub. Что в него вошло, то из него и вышло. Если тут ещё один какой-то компьютер, да, то ещё вышло это и сюда. Это теперь, если у нас есть Switch. Данные здесь у нас... У нас Switch. Данные здесь прерываются. Switch - это устройство двух уровней. Данные распаковываются здесь до второго уровня, анализируется MAC-адрес и отправляются дальше туда, куда им нужно, соответственно, согласно вот этим данным. Switch смотрит в свою таблицу коммутации и отправляет данные именно туда, куда ему нужно, где в таблице коммутации указано соответствие этому MAC-адресу какого-то порта Switch'а. Ну, давайте посмотрим, как это в принципе работает. Вот у нас есть компьютер, который у которого есть MAC-адрес MAC 1. Там, и это компьютер 1. Здесь есть компьютер 2 с MAC'ом 2. Здесь есть компьютер 3 с MAC'ом 3. Все они воткнуты. Обще. Два воткнуты. Три. Вот это Switch. Значит, мы только что воткнули Switch. Вот. И у него пустая таблица коммутации. Давайте здесь мы нарисуем таблицу коммутации. Ну, я не буду рисовать границы, да, напишем просто MAC и порт. Разобьём. Вот. И сейчас у нас таблица пустая. Вот. Диктует отправка. Компьютер 1 хочет отправить какую-то информацию на компьютер 3. Вот. Ну, MAC-адрес его он не знает. Как же компьютер будет отправлять данные? Ну, на самом деле всё просто. Компьютер в таком случае отправляет данные на Switch. Switch делает два простых действия. Логика работы Switch'а она достаточно проста. Первое действие: смотрит таблицу коммутации. Итак, сюда пришёл фрейм от компьютера 1. Вот, какой-то фрейм. У него указан MAC отправителя MAC 1, и неизвестен MAC получателя 3. Значит, смотрит таблицу коммутации и не видит там MAC 3. Все порты, кроме того, куда он пришёл, то есть пакет приходит, давайте я порты тоже пронумерую. Порт 1, порт. Пакет пришёл на второй порт. Вот. Не видит, куда его отправлять. Отправляет на все оставшиеся порты. Соответственно, третий компьютер видит, что пакет назначен ему, поскольку у него там MAC 2 не указан в MAC'е отправителя, и ответ не возвращает. Вот. Ну, кстати говоря, если где-то сидит хакер, он может перехватить этот пакет и ответить от имени третьего компьютера. А. Ну, значит, компьютер третий отвечает, и соответственно, ответ идёт на первый компьютер. Вот. Второе действие, то есть отправляет широковещательный или broadcast пакет. Ну, на самом деле, не совсем широковещательный. В общем, отправляет пакет, который идёт на все порты, кроме того, откуда он пришёл. Это называется английского "наводнение", когда на приходит фрейм какой-то, он разбирает этот фрейм, то есть преобразует именно сигнал первого уровня второго уровня и начинает есть. В данном случае пришёл на первое действие. Пришёл на Давайте. Пришёл на Switch. Второе действие: смотрит таблицу и видит, что MAC-адрес отправителя MAC 1 в таблице коммутации его отсутствует. Берёт и делает в таблице первую запись: MAC 1, порт 2. У нас идёт Switch. Пытается отправить пакет. Но поскольку MAC 3 он не знает, он, соответственно, берёт и отправляет пакет на все порты. Четвёртое действие: MAC 3, компьютер с MAC'ом 3 увидел пакет и отвечает на него MAC 1. Вот. Пакет приходит на Switch. Ответный пакет. Давайте. Вот ответный, я всё его называю пакетом. Приходит на Switch и смотрит. А в этом фрейме уже указан MAC отправитель MAC 3. Он записывает в табличку себе: MAC 3, порт 3. Таким образом, рано или поздно строит всю табличку. Ну, и пятым действием он смотрит в таблицу, да, там уже есть MAC 1, и он сразу направляет пакет на второй порт. Вот. То есть заполняется. И пакеты начинают ходить не на все порты, а конкретно туда, куда им нужно. Вот по такому принципу работает Switch. Вот ещё упомяну в этом месте, что у нас есть MAC-адрес. Давайте вот сюда его впишу. FF. FF. FF. FF. FF. FF. Это каждое F - это, кстати, шестнадцатеричное число. Вот. Ну, то есть у нас в 2 в четвёртой степени. А значит, значит, значит, вот это адрес, это называемый так, широковещательный адрес или broadcast, broadcast адрес физический. Когда на Switch приходит пакет, где в качестве адреса получателя указан broadcast адрес, все F. Switch автоматически направляет все этот пакет на все порты. Вот. Это называется broadcast или широковещательный. Значит, разобрали, как работает Switch. Давайте теперь перейдём дальше. Ну, для того, чтобы перейти дальше, введу ещё одно понятие - это широковещательный домен или broadcast домен. Давайте сотру эту схемку. Значит, вот у нас первый Switch есть. Есть второй Switch. Они соединены между собой. Здесь компьютер 1, там компьютер 2. Ну, в общем, здесь компьютеры. Нам сейчас это не важно. Это просто для абстракции. Вот. И здесь, например, вот это такое устройство, как роутер. Вот. Сейчас нас интересует одна конкретная особенность роутера, а именно это то, что роутер широковещательные фреймы не перенаправляет. То есть, когда на него приходит широковещательный фрейм с адресом "все", да, он перенаправляет его на все порты. Если приходит такой фрейм, роутер его не перенаправляет. Ну, роутер - устройство третьего уровня. Об этом я расскажу. Смирись. Будет таблица коммутации. Возможно, у кого-то возникнет вопрос. Ну, на самом деле, всё просто. Вот этому порту просто на Switch'е в таблице будет соответствовать несколько записей. То есть, если это порт, например, там, скажем, да, будет вот такой вид: 7, 8, 9 и так далее. Вот эти кого. Точно так же будет отправляться сюда, когда не знает о... Запрашивает на все свои порты, кроме входящего, того, на который поступил пакет. Точно так же он будет переправлять другому Switch'у. Будет действовать по точно такой же, как и строить таблицу коммутации. Точно так же. Так вот, и к нему прилеплен ещё один компьютер, и здесь ещё один. Вот. Широковещательный домен - это все устройства, которые получат широковещательный запрос, поступивший на Switch. То есть, в данном случае, у нас широковещательный домен - это вот это вот, что я нарисовал. Если на любой порт в любом Switch'е в пределах этого домена отправляем широковещательный пакет, он дойдёт до любого хоста, до порта любого хоста в пределах этого широковещательного. Компьютер отправляющий, вот, который введёт, отправляет фрейм, и этот фрейм дойдёт до любого другого компьютера у в. Вот. Ещё единственный момент, я немножко неправильно обвёл. Вот этот порт он тоже войдёт сюда. То есть пакет, широковещательный, он поступит также сюда, но он не продолжит своё движение дальше. Он там оборвётся. И здесь то же самое. Вот так вот. Это у нас получилось первый broadcast домен, первый, да. И второй домен. Всё, что нам понадобится дальше. Давайте перейдём теперь, собственно, к маршрутизации. Маршрутизация - это у нас третий уровень. Это устройство роутер. Во-первых, третий уровень модели. Вот так вот. Давайте. И, собственно, что такое маршрутизация, зачем она нужна? Предположим, что у нас 2000 компьютеров. Вот у нас есть Switch 1, есть Switch 2. Давайте буковкой S обозначим. Switch 3, Switch 4, там 5, 6, 10, 50 и так далее. Ну, или у нас 10 000 компьютеров, да? И все эти компьютеры, они воткнуты в эти Switch'и. Тут там 1 воткнут, тут. Ну, это очень грубо говоря, конечно. В общем, каждый компьютер с как-то взаимодействуют между собой. Вот. И все Switch'и, как мы уже говорили, если они не разделены роутером, образуют один широковещательный домен. Вот. Тельный домен. Компьютер в одном широко вещательном. Какой-то отправляет широковещательный запрос, и этот широковещательный запрос приходит на 10 000, на 9999 компьютеров. Вот. То есть, хотя направлен он только, хотя направлен может быть на все. Мм, сказать, что широковещательный пакет - это не такое редкое явление, и происходит оно достаточно часто. Соответственно, вот этот широковещательный запрос отправляется, предположим, сразу там пятью или семью тысячами компьютеров в один момент времени. Вот. Когда такое происходит, каждый Switch перенаправляет этот пакет на все свои порты. То есть каналы между Switch'ами очень сильно загружаются просто из-за того, что кто-то отправил широковещательный запрос. Он там з сюда прошел, сюда. Вот. И отсюда он вернулся там 4000 запросов роща. Да, просто вот это широковещательный домен. Все Switch'и в нём, они просто там сгустятся от нагрузки, которая будет производиться там даже десятка, гораздо меньшим количеством, тысячу компьютеров, да, вот они просто лягут. Они не справятся с нагрузкой, которую им придётся обра. Чтобы такой штуки не возникало, у нас широковещательные домены разбиваются роутерами на маленькие домены. И какое-то количество компьютеров выносится сюда Switch'ей и компьютеров, да. Соответственно, у нас вместо, например, 1000 компьютеров остаётся там 500, да. А если мы разобьём ещё, там ещё один роутер нибудь поставим, да? Вот здесь, например, вот к нему прим ещё там что-нибудь, ещё 200. Здесь, например, останется 300. И соединим эти роутеры между собой каким-то образом. Т Интернет. Да. Интернет на всяких схемах как правило обозначается облаком. Но у меня очень кривое облако, да. Но это означает, что уровень абстракции таков, что нам не важно, что происходит внутри. Важно, что сигнал он вошёл в какую-то часть Интернета и вышел в другой части. Точно такой же сигнал. И соответственно, происходит такое разбиение на маленькие кусочки. Ну, это одно из назначений маршрутизации. Далее, маршрутизация зачем нужна? Допустим, у нас есть здесь роутер, здесь есть ещё роутер, здесь есть роутер, и здесь есть роутер. Они между собой как-то соединены, и здесь у нас компьютеры. Ну, здесь, допустим, Switch. Здесь компьютер, компьютер, компьютер. Вот они здесь, допустим, у нас второй Switch. Здесь ещё какой-то компьютер. Второй, например. Здесь первый компьютер хочет отправить что-то второму. Он отправляет это. Идёт, значит, сюда пакет третьего уровня уже, да, поступает на роутер. Вот сюда он поступает. Идёт уже сюда. С вот так подключен, допустим. Вот. Если у нас роутер падает, то благодаря тому, что у нас есть маршрутизация, на каждом роутере строится таблица маршрутизации. Вот сейчас объясню. Вот благодаря ей у нас пакет может пойти уже не через этот роутер, если он упал, а например, через этот. То есть такая отказоустойчивость обеспечивается. Вот. Таблица маршрутизации. Ну, во-первых, ещё раз напоминаю, роутер - устройство третьего уровня. И соответственно, он имеет, каждый роутер таблицу маршрутизации. Маршрут. Точка. Таблица маршрутизации. Ну, там указана у нас подсеть какая-то, соответствие подсети, подсеть и порта на роутере. Сейчас объясню, как это работает. Что такое подсеть вообще? Вот. Ну, в общем-то, вот такая таблица: подсеть, порт, подсеть, порт. И он знает, что вот эта подсеть, подсеть 2, чтобы её отправить на подсеть 2 информацию какую-то, он может отправить её через этот порт. Вот так она пойдёт через вот этот, либо через вот этот. Три варианта. Но при этом у этих двух портов, вот у первого, например, третьего, да, стоимость отправки больше. То есть, поскольку дополнительный роутер присутствует, ж нужным нам роутером и роутером отправителем, вот этого маршрута как бы дольше будет идти пакет по нему. Он первоначально пытается по двоечке отправить его. Если не получается, уже по остальным. Ну, то есть, вот. Давайте здесь у нас номе. Это, допустим, А. А здесь порт 1. Ну, и в табличке ещё здесь цена два, и здесь цена два. Ну, как-то вот так кривовато нарисовал опять же. Ну, надеюсь, более-менее понятно. То есть роутер знает, что в пос 2 он может отправить информацию по трём разным портам, но лучше отправить по порту один, по какому-то порту два, потому что у него стоимость отправки меньше единички. Вот. А, но это тоже то, что касается маршрутизации. Теперь давайте разберём, собственно, что такое IP-адрес, подсети, да, и, собственно, как маршрутизация это осуществляется. Давайте посмотрим. Каждый хост у нас имеет, как мы уже сказали, физический MAC-адрес - раз, а логический адрес - IP-адрес - два. На роутере же таблица маршрутизации имеет запись в виде подсети. Что же такое эта подсеть? Вот. Что же это такое? Если вы откроете свойства сетевого какого-то вашего подключения, вы увидите там три параметра. Это параметр.
Раз IP-адрес этого Хоста, вот этот IP-адрес — это то же самое, что вот этот вот логический адрес, да, выдаваемый на третьем уровне модели OSI, на сетевом, то есть IP-адрес. Ну, давайте я вот по уровням, наверное, здесь напишу, чтобы было более наглядно: это второй уровень модели, это третий уровень модели, видите, OSI, второй OSI, а значит, IP-адрес, второе — маска подсети, и третье — это у нас шлюз по умолчанию. Ну, на самом деле, это ближайший адрес ближайшего роутера, как правило. Ну и допустим, что на компьютере у нас IP-адрес 172.16.0.4 и маска подсети 255.255.255.0. Вот как же у нас происходит вообще логика отправки компьютера? Ну, будем говорить о Винде. А шлюз, адрес шлюза, допустим, 172.16.0.1.
Вот, ну, как это у нас будет выглядеть? Вот у нас есть компьютер 172.16.0.4. Компьютер здесь есть, вот здесь вот есть, допустим, свитч. Здесь какой-то ещё один компьютер с каким-то адресом, здесь ещё какой-то компьютер с каким-то адресом, здесь ещё какой-то комп. Да, я немножко неправильно нарисовал, да? Давайте вот так вот нарисуем, вот так вот нарисуем и сотрём вот эту штуку. Значит, вот так вот. Итого, у нас здесь будет стоять роутер, и у роутера IP 172.16.0.1. Кстати, обратите внимание, что у свитча IP-адрес я не написал ещё раз. Почему? Потому что свитч — устройство второго уровня. А как я говорил, второй уровень не может видеть информацию, относящуюся к третьему уровню. То есть он получает просто какую-то информацию в виде цельного куска кирпича такого. Вот, соответственно, свитч не может иметь IP-адрес, доколе он не является устройством третьего уровня. Есть, на самом деле, в природе что-то, что свитчи будут делать, это не интересует. У нас свитчи второго уровня, обычных людей. Вот, значит, какова логика отправки пакета компьютера и какова логика составления, как выглядит таблица маршрутизации на свитче? Ну, во-первых, упомянем, что таблица маршрутизации есть не только на свитче, но и на компьютере. И давайте посмотрим, как она всё-таки составляется.
Итак, компьютеру нужно отправить информацию. Компьютеру, о, допустим, 2, 3, 4. Компьютеру 1 нужно отправить информацию на компьютер 4. У компьютера 4 адрес 172.16.0.5. Первое действие, которое производит компьютер: он смотрит, относится ли компьютер 4 (адрес отправителя на третьем уровне, адрес, точнее, получателя на третьем уровне) к подсети компьютера, который отправляет, то есть 172.16.0.4, или первый компьютер. Как же он определяет, в подсети он или нет? Ну, давайте сейчас посмотрим. Итак, что же такое сеть и подсеть? Небольшое лирическое отступление. Сеть — это множество компьютеров, соединённых между собой там, вот, и имеющих какие-то IP-адреса. Подсеть — это кусочек этой сети, вот, выделенный по адресу этой подсети. Адрес подсети. Ну, не совсем понятно, наверное, да? Сейчас покажу, собственно, что такое адрес подсети. Итак, у нас есть компьютер 172.16.0.4 и маска 255.255.255.0. Вот что это означает. Вот IP-адрес из себя представляет, состоит он вообще из двух частей. Вот это первая часть — адрес подсети, вторая часть — адрес Хоста или компьютера в этой подсети. То есть IP-адрес несёт информацию о двух моментах. Вот как же мы узнаем, что из этого есть адрес подсети, а что такое адрес Хоста? Ну, в данном случае, забегая вперёд, скажу, что вот 172.16.0.0 — это адрес именно подсети, а 4 — это адрес Хоста в пределах этой подсети. Итак, как же у нас определяется подсеть? Что является адресом подсети, а что является адресом Хоста?
Ну, значит, всё, на самом деле, достаточно просто. Во-первых, выполняется преобразование. Вот у нас есть адрес 172.16.0.4, и выполняется его преобразование в двоичный вид, поскольку компьютер у нас производит все калькуляции в двоичном виде. Вот я сейчас открыл калькулятор. Давайте посмотрим. Значит, переводится этот адрес у нас в двоичный вид, это будет выглядеть вот так: 10101100. Это у нас 172 в двоичной системе счисления. 16 — ну, это у нас 00010000. А, наверное, даже давайте я немножко для понимания сделаю вот так вот. Это у нас каждый параметр — это не 16, а 0. Да, здесь не ноль, а три нуля. Это так называемые октеты. Вот октет, он может составлять какое-то число вот от двух, от нуля, точнее, да, до 2 в восьмой степени. Вот, а точнее, ну да, 2 в восьмой степени. Всё верно. Вот, то есть двойка может иметь 8 степеней в двоичном виде, это 8 разрядов. То есть каждый октет, получается, имеет 8 разрядов. Если это ноль — 8 нулей. Вот, ну и для понимания, да, рисуем здесь 00000000. Так выглядит второй октет, 8 разрядов. Да, единичка — это 2 в пятой степени там, да, или в четвёртой. 16 — 2 в четвёртой. И, соответственно, дальше идёт у нас новый нулевой октет, и дальше идёт 4. Соответственно, вписываем туда 4, это у нас 00000100. Вот. Ну, всё просто. Вот это IP-адрес 172.16.0.4, записанный в двоичном виде. Теперь мы делаем: сюда выписываем в двоичном виде маску. Ну, поскольку у нас маска простая: 255.255.255.0. Здесь у нас идёт вот такая маска: 11111111 11111111 11111111 00000000. 255 — это 8 единиц в двоичном виде. Но старший — это седьмой степени, всё-таки я неправильно сказал, да? Ну, просто имейте это в виду. И последнее здесь у нас — это у нас маска. Маска отделила ещё маску IP-адресов, вот так вот. Значит, теперь мы берём и делаем простое действие — логическое И. Если у нас и IP-адрес, и маска в соответствующем разряде составляет единицу, мы выписываем единицу. Если не составляет — во всех остальных случаях выписываем ноль. То есть у нас 10101100 00010000 00000000 00000000. Вот, и в конце у нас идут нули, поскольку (так, лишний ноль нарисовал) поскольку у нас здесь нули, да, 1, 2, 3, 8. Ну, всегда получается ноль. И что у нас получилось в итоге? Вот это вот адрес — адрес подсети. Если мы его запишем в нормальном виде, он будет выглядеть как 172.16.0.0. Вот, и первый адрес в пределах этой подсети — 172.16.0.1. То есть это у нас подсеть, адрес подсети. Дальше, это первый адрес подсети. И последний адрес подсети — это 172.16.0.255. Как мы узнаём последний адрес подсети? Ну, всё просто. Вот эта часть — это у нас адрес Хоста в пределах подсети, поскольку, как мы видим, масочка здесь нули, да, вот отсюда идут. Вот то, что не входит в маску, вот это адрес Хоста. То есть минимальное значение этих адресов — все нули. Вот. Но все нули — это адрес подсети ноль, вот это вот правильно. Максимальное значение — 8 единиц, или 255 — это последний адрес подсети. Имейте ещё в виду, что последний адрес подсети всегда является широковещательным, последний адрес Хоста, да, в подсети — широковещательный. То есть, отправляя пакет на этот адрес, мы ожидаем, что этот пакет поступит на все другие хосты этой же подсети, то есть там .0.2, .0.3, .0.27, там .0.28 и так далее. То есть запоминаем: первый адрес подсети — адрес самой подсети, всегда. Последний адрес 255 — это адрес Хоста. Ой, это широковещательный адрес. Вот, собственно, с этим мы разобрались. И, переводя это всё в нормальный вид, мы видим, что здесь у нас вот это — это адрес подсети, а это адрес Хоста .0.0.4 в пределах этой подсети. Ещё упомяну здесь, что маска у нас может представлять только последовательность единиц и нулей. То есть маски вида 111010 у нас быть не может. Может быть только 111000, либо там 11111000, да? То есть сначала единицы, потом нули, сначала единицы, потом нули. Вот. Ну, в общем-то, с помощью маски, то есть функция маски — это выделение из IP-адреса Хоста адреса подсети, в которой находится этот хост, и, собственно, самого адреса Хоста.
Ну, вот такое небольшое лирическое отступление про IP-адреса. И, собственно, возвращаемся к теме нашей маршрутизации. Вот как у нас работает роутер. Ну, нарисуем его здесь. Роутер, во-первых, роутер, ещё раз говорю, — устройство третьего уровня. 3, 2, 1, 1, 2. Оп. Вот здесь интернет у нас, да, облако. Очень кривое, очень неадекватное облако. Так, и забыл, собственно, сказать, как хост у нас действует при отправке. Вот у нас хост, извиняюсь, вот у нас хост, компьютер какой-то, он отправляет пакет на удалённый комп. Вот здесь IP 172.16.0.4, здесь 172.16.0.5. Маска 255.255.255.0. Вот, то есть вот это адрес подсети, и у обоих хостов он совпадает. Собственно, логика отправки какая у компьютера? Логика отправки простая: если адрес целевого компьютера, IP-адрес, находится в той же подсети, то есть 172.16.0.0, сейчас находится, он просто берёт и указывает адрес этого компьютера, отправляет пакет прямо на него, на 172.16.0.5. Теперь предположим, что маска такая же осталась в обоих подсетях, да, а изменилась, изменился адрес подсети, и теперь компьютеры находятся в разных. Вот в этом случае, во-первых, у него есть таблица маршрутизации, где указано, что в подсеть 172.16.0.0 он отправляет пакет там на какой-то порт, да. Если же нет, отправляет его в другое место. И вот это другое место — это, собственно, роутер, и пакет отправляется в данном случае на роутер. То есть если хост видит, что компьютер находится, IP-адрес компьютера, в другой подсети, он просто берёт и направляет этот пакет на тот адрес, который вы указали в адресе шлюза по умолчанию. Ну, как вы помните, да, сетевое подключение ещё раз: у нас IP-адрес, маска, шлюз. То есть если компьютер-получатель в подсети, отличной от подсети компьютера, который отправляет пакет, просто сразу берёт и направляется на шлюз. Ну, вот такая логика маршрутизации. Соответственно, возвращаясь к... Так, это у нас вот роутер. Роутер принимает пакет, и он теперь распаковывает его до третьего уровня, до пакета. Собственно, смотрит там IP-адрес, смотрит в свою таблицу маршрутизации и, согласно ей, отправляет этот пакет на тот роутер, который указан в таблице. То есть если указано, что там в подсеть 172.16.8.0 отправляется пакет там на четвёртый порт, в четвёртый порт должен идти четвёртый интерфейс роутера, да, то он уходит именно в четвёртый интерфейс.
А, ну, вот такая логика. Ещё про масочку, давайте, скажу один момент. А вот такой вот простенький, достаточно. Значит, маска у нас, она 255.255.255.0, например, там, да. Ну, или давайте 255.0.0.0, не охота писать. Вот, выглядит как 11111111 00000000 00000000 00000000 (8 единиц, 24 нуля). Вот эта маска может быть записана как /8. То есть сколько единиц в маске, столько у нас так она может быть записана. /8, если у нас 255.0.0.0. Маска — это /16, если 255.255.0.0. 255.255.255.0, вот здесь ещё, да, это /24 маска. Вот. Ну и, соответственно, /32 маска — это сам уникальный адрес, да. То есть это не подсеть, это такой вообще не существует в природе, это просто, надеюсь, понятно. И в таблице это выглядит вот так: 172.16.8.0/24, например. Вот. Но, то есть это означает, что вот это адрес, собственно, этой подсети, адрес пакетов на третьем уровне.
Ну, и давайте посмотрим теперь, как же у нас, собственно, направляется пакет с Хоста на удалённый хост. Итак, у нас есть какой-то компьютер 1. Он отправляет пакет. Дальше, например, 172.16.0.4 направляется пакет на 172.16.8.4, к примеру. Ну, это вот это какой-то... Да, какой-то компьютер, компьютер. Значит, здесь у нас стоит свитч, здесь второй компьютер, да, здесь второй у нас уже есть, да. Давайте этого компьютера 20. Здесь второй, третий компьютер тоже. Здесь у нас роутер, здесь и здесь же. Здесь какой-то тоже свитч. Здесь компьютер 20, здесь компьютер 21, ну, для примера. Как же у нас отправляется пакет? Значит, пакет отправляется на айпишник 172.16.8.4. Компьютер смотрит, что этот айпишник не принадлежит подсети. Вот, и дальше делает следующее действие. Об... память. Соответственно, что такое протокол ARP и для чего он нужен? Во-первых, сразу скажу, что это протокол третьего уровня. Компьютер видит, что айпишник этот не принадлежит, соответственно, ему надо куда-то дальше отправить. Он указывает, запаковывает его в пакет. В пакете указан... Вот, давайте чуть позже расскажу почему, но 172.16.0.4 там через интернет не пройдёт такая отправка. Вот, чуть позже давайте объясню почему. Вот, пока что оставим, в принципе, в рамках нашего объяснения, неважно. Вот, значит, компьютер смотрит, что целевой хост не в подсети, делает пакет на третьем уровне, куда запаковывает данные приложения. Дальше указывает адрес отправителя, отправителя, получателя и какие-то данные, да. И вот это всё — это у нас составляет пакет. Вот два адреса, сами данные и ещё куча информации, о которой мы говорить сейчас не будем. И думает, куда он его отправит дальше. Вот он может, в принципе, его отправить. Ну, дальше он передаёт на второй уровень, да, и дальше думает, куда второй уровень. ARP-запрос. Что же это такое? ARP-запрос. Есть ARP-таблица также на компьютере и в других местах, да, которая выглядит так. Почему протокол третьего уровня, ещё раз напомню, да? Потому что на третьем уровне у нас есть IP. Второй уровень IP никак не знает. Протокол должен быть третьего уровня. И в этой табличке составляет какие-то IP и здесь MAC-адрес. Ну, и по этому протоколу он определяет, на какой MAC-адрес отправлять пакет. Если там айпишник, которого ещё нет в таблице, допустим, в данном случае 172.16.8.4 (я неправильно написал туда 8.4 — это айпишник). Компьютер смотрит, что он не знает, куда отправить этот пакет по протоколу ARP. Он берёт и пытается этому пакету присвоить MAC-адрес. Он отправляет широковещательный ARP-запрос второго уровня, то есть на MAC-адрес... Ну, короче, на все. И помещает этот фрейм получившийся, да, с запросом, вот, в физическую среду передачи, провода. Перенаправляет всё это на все хосты, подсоединённые к нему. Что это? Уровень. Распаковывает третьего уровня, поскольку устройство третьего уровня. Устройство второго уровня просто передало широковещательный запрос по адресу MAC-адресу, максимальный адрес, который может знать. Роутер смотрит и видит у себя в таблице маршрутизации такую запись: 172.16.8.0/24. Там метрика есть у него, ещё какие-то параметры, я чуть позже покажу их. Вот. И, значит, компьютер, который увидел этот адрес... На все компьютеры поступил ARP-запрос. Вот если компьютер увидел этот адрес, например, если мы сделали запрос 172.16.0.5, а вот этот компьютер .0.5, то этот компьютер вернёт ARP-ответ, что IP-адрес .0.5 соответствует MAC-адресу, и вернёт свой MAC-адрес — MAC 2. Поскольку на компьютере все с маской .0, подсеть 172.16.0.0. Компьютеров не может быть. Это компьютеров нет с адресом 172.16.8.0. Вот. А на роутере есть такая запись, что в подсеть 172.16.8.0 — это у нас второй порт, отправить пакет во второй порт. И 172.16.8.0, э, и возвращает свой MAC-адрес — MAC роутера в ARP. То есть, давайте, у нас первое действие: request-запрос, request 172.16.8.4. Второе действие: там происходит ответ, да, response роутера с MAC-ом роутера. И в эту свою табличку ARP третьим действием, да, хост заносит какую-то информацию, что 172.16.8.4 (очень сжато, да) — это у нас MAC роутера. Дальше он запаковывает вот этот пакет во фрейм второго уровня, и во фрейме второго уровня он указывает уже MAC роутера плюс вся информация, которая поступила, которая содержится в пакете. То есть это IP-адрес отправителя, получателя и данные, вот эти данные приложения. Ну, и пакет идёт на роутер. Роутер смотрит в свою таблицу маршрутизации, видит, что отправить нужно на второй порт, и вот на второй порт выдаёт этот пакет в интернете. Там может быть ещё куча роутеров, да, которые не важны. Ну, и в конце концов, этот пакет доходит до конечного Хоста.
Ну, собственно, именно вот так вот осуществляется у нас маршрутизация. И теперь: почему ещё не может дойти пакет 172.16.0.4, да, через Интернет? У нас есть Public диапазон IP-адресов, да, Public IP и Private IP. Вот что это значит. Есть какой-то диапазон адресов, который в сети Интернет не используется. То есть если вы выходите в интернет и обращаетесь к компьютеру с адресом 172.16.4.2, вы не сможете этого сделать, потому что такие адреса запрещены для выдачи в сети Интернет. Вот. Это у нас есть три диапазона Private IP-адресов: это 10.0.0.0/8, да, то есть любой адрес от 0.0 до 255.255, начинающийся на 10. Вот это может быть использован в качестве Private IP и не может быть использован в качестве Public IP. То есть вы не можете веб-сервер какой-то, да, Яндекс, например, повесить на адрес 10.16.8.0 что-то там. Это первый диапазон. Дальше, 172.16.0.0 (честно говоря, не помню, с какой маской, да, но заканчивается этот диапазон у нас 172.31.255.255). Вот. То есть вот эти адреса 172.16.0.0 тире 172.31.255.255 тоже также не могут использоваться для адресации в интернете. И последний диапазон — это 192.168.0.0 (сколько я помню, есть, заканчивается 192.168.255.255, по-моему). Вот так. Это третий диапазон, который не может использоваться. На самом деле, лучше загуглить. Честно говоря, немного неточно может быть предоставлена здесь информация, но что-то вроде этого. То есть мы можем в сети Интернет обратиться на 1.2.3.4, который, например, входит в какую-то там подсеть 1.2.3.4. Вот, и мы на него попадём. Но вот на адрес 172.16.4.2 мы обратиться не сможем. Вот, потому что это Private IP-адрес. Ну, такой вот момент.
Ну, и давайте теперь ещё покажу на примере, что такое у нас, что, собственно, представляет из себя табличка маршрутизации. Так, а, давайте, давайте, секунду, одну секунду, чтобы было удобнее. Сейчас я выведу вам чисто консоль. Итак, консоль. Вот это открываем обычную `cmd`. А, и что мы тут видим? Ну, давайте посмотрим таблицу маршрутизации. Вот, чтобы это сделать, нам надо сделать команду `route print`. И это будет выглядеть вот так вот. Значит, мы набираем `route print` и видим вот такую вот табличку маршрутизации. Сейчас, извините, давайте я сделаю вот так вот. Ничего не видно, да? Ну, ладно. Давайте попробуем в уменьшенном виде всё-таки вернуться. Надо было посмотреть заранее, конечно. Так. Итак, мы видим таблицу маршрутизации. Если мы её проскроллим, мы увидим IPv4-адреса — это те адреса, о которых я говорил, и IPv6-адреса — это адреса, о которых я рассказывать не буду в пределах этого урока. Ну, вот IPv6, да, вот IPv4. И как у нас выглядит таблица? Ну, выглядит она очень просто. Мы видим 0.0.0.0 — сетевой адрес. Это адрес подсети с маской 0.0.0.0. Дальше — адрес шлюза, куда этот пакет, если он идёт, должен быть направлен. И, в конце концов, через который он будет направлен. Ну, если мы посмотрим, это сетевой интерфейс, сетевой IP-адрес моего компьютера. Метрика — это приоритет использования маршрутов. В данном случае мы видим, что все пакеты, которые идут по IPv4, они направляются по этому маршруту. Почему? Объясняю: значит, сетевой адрес 0.0.0.0 с маской 0.0.0.0 означает, что все пакеты на любой сетевой адрес, в любую подсеть, идут на этот интерфейс. Ну, очень просто. Если, значит, интерфейс 13, соответственно, все пакеты были сюда. И дальше сравнивается ещё метрика. Если у нас есть маршрут с меньшей метрикой, чем 10, соответствующий тому, куда должен пойти пакет, то пакет будет отправлен именно на этот маршрут. Ну, давайте наглядный, более пример сделаем. Вот у нас есть маршрут 192.168.1.0 с метрикой 266, маской 255.255.255.0. Это значит, что по этому маршруту все пакеты, отправленные на 192.168.1.1 (и/или вместо единицы любое число до 255), будут отправлены через этот интерфейс. Оно могло бы быть отправлено через другой интерфейс, 1.1, например, у меня был такой, через него ещё мог быть отправлен, или вообще через другую...
Ну, давайте, допустим, я добавлю маршрут. Такой командой у нас добавляется маршрут: `route add 172.16.8.0 mask 255.255.255.0 192.168.0.1`. Ну, допустим, 243. Маска 255.255.255.0 — это маска. Дальше у нас указывается адрес шлюза. [музыка] Не смогу сейчас указать другой адрес шлюза, потому что у меня только одно сетевое подключение. Да, это очень неудачный пример я выбрал, извиняюсь. Давайте сейчас я посмотрю, посмотрим на виртуальной машине. Можем ли мы что-то сделать? Да, ну, собственно, сможем. Давайте сейчас продемонстрирую это на виртуальной машине, этот функционал. Убираю эту... на виртуальной машине, где у меня два сетевых интерфейса. Как же мы это можем всё увидеть? Так. Итак, вот моя виртуальная машина. Здесь, вводя secure-пароль администратора, мы зайдём на неё и увидим точно так же табличку маршрутизации `route print`. Вот здесь она побольше. А, блин, не знаю, видно вам или нет. Вообще, у меня HD качество трансляции, я думаю, должно быть видно табличку. Значит, мы здесь видим, что здесь уже немного другая ситуация, да. Мы видим, что маршрут по умолчанию идёт в шлюз 192.168.1.1 с метрикой 261. Но есть и другие маршруты. И если у нас маршрут, например, пойдёт вот 192.168.0.100 с маской 255.255.255.0, он прежде всего пойдёт в сетевой интерфейс 192.168.0.1. Ну, давайте более наглядно, чтобы было. Смотрим на два сетевых интерфейса. Интерфейс 1 имеет IP-адрес 192.168.1.100 и шлюз 192.168.1.1. Интерфейс 2 имеет IP-адрес 192.168.0.100 и шлюз 192.168.0.1, в принципе. Вот. Соответственно, согласно таблице маршрутизации, мы видим, что у нас есть маршрут, который для всех адресов, и маршрут, который для подсети 192.168.0.0. Вот. И направляется вот этот маршрут через интерфейс 192.168.0.1, а этот маршрут через интерфейс 192.168.1.1. Но поскольку это более узкий, это интерфейс, соответственно, благодаря вот этому как раз вот это всё и определяется. И допустим, что у нас нужно прописать маршрут, чтобы пакеты на хост 1.2.3.4 шли через этот интерфейс по умолчанию, через 1.2.3.4. У нас маршрута нет такой подсети, да, 1.2.3.4 или что-нибудь. И через шлюз 192.168.1.1, в итоге, да, через интерфейс 192.168.1.100. Вот мы прописываем `route add 1.2.3.4 mask 255.255.255.255`. Значит, 255.255.255.255. Как мы помним, маска /32, или все октеты по 255 — это адрес Хоста, не подсети, да. Соответственно, для того чтобы указать конкретный адрес Хоста маршрутизации, куда будет ходить трафик через какой-нибудь интерфейс, мы указываем именно такую, такое сочетание IP-адрес, маски. Далее, значит, мы указываем интерфейс, насколько я помню, интерфейс, его имя. `if 12`. И мы видим, что неверный индекс интерфейса. Интерфейс надо указывать индексом, к сожалению, да. Но придётся мне это сделать. Сейчас я узнаю, какой у меня индекс интерфейса. Буквально. Вот, индекс интерфейса у меня 12. Значит, добавляем маршрут ещё раз. И видим, что надо наоборот ещё прописывать. Итого, `if 12`. Интерфейс 12. Не хочет добавляться. Конечно же, не хочет, потому что мы забыли адрес шлюза. Ну, адрес шлюза укажем 192.168.0.1. Вот. А, ну, с такими, э, ошибочками я добавил маршрут в результате. И теперь посмотрим. И что мы видим? А видим мы, что появился новый маршрут. Если теперь я пакет отправлю на хост 1.2.3.4, то мой хост-компьютер, вот этот, он посмотрит, куда его отправлять, и увидит, что его надо отправить в интерфейс 192.168.0.1. Вот. Ну, наверное, трассировка нам ничего не покажет, да? Ну, давайте попробуем сделать так: `tracert 1.2.3.4`. Ну, да, ничего не покажет, потому что там ничего нет. Ладно. А, в общем, пакет вот этот на адрес 1.2.3.4 он пойдёт через интерфейс 192.168.0.1. Если этот маршрут удалить, то он пойдёт через вот этот маршрут. Ну, и почему он пойдёт через этот маршрут? Потому что метрика 6, то бишь меньше, чем в этом маршруте. Ну, вот, давайте я удалю его. А, удаляется попроще. Вот, смотрим табличку. Теперь на этот адрес пойдёт маршрут через этот интерфейс. Ну, это что касается маршрутизации. Также мы можем посмотреть табличку ARP-записей. Как вы помните, ARP — протокол, который создаёт у нас сопоставление IP-адрес — физический адрес, да. Ну, вот в данном случае мы видим, например, вот адрес 192.168.1.1 соответствует этому физическому адресу. Но тут не было никаких запросов, поэтому ничего постороннего мы тут не видим. Давайте попробуем это изменить. Сейчас я включу какую-нибудь машинку и попробуем получить ARP-запись в табличку. Так, вот я включил машинку. К сожалению, по-моему, она ещё и не пингуется. Та-та-та-та-та. А, возможно, я неправильно её набрал, да. Но что-то она у меня подвисла. Сейчас я её включу, попробуем посмотреть. Буквально 10 секунд подождите, и дальше я попробую отправить на неё пакет Ping, например, и посмотрим, появится ли у нас какая-то запись в таблице. Обратите, кстати, внимание, что ARP-таблица у нас сейчас видна для двух хостов, для хоста, для двух сетевых интерфейсов: для интерфейса 192.168.0.1 и для интерфейса 192.168.1.1. Ну, соответственно, в зависимости от того, через который интерфейс разрешение шло, это, соответственно, в ту табличку это всё записалось. Итак, что машинка имеет адрес 192.168.0.2. .0.2, извиняюсь. И вот мы её пингуем. И давайте теперь посмотрим ARP-табличку вновь. Так, и что мы тут видим? А видим, что у нас появилась запись. Когда компьютер отправлял пакет, да, он решил узнать, на какой MAC-адрес его отправлять со второго уровня. И request он сделал. Такое сопоставление, и в эту табличку добавил MAC-адрес компьютера вот сюда вот. Вот. Но MAC-адрес роутера, по-моему, здесь у нас, ну, виден вот так вот, да. Соответственно, если у нас хост не входит в подсеть компьютера, то отправляется вот на этот MAC-адрес роутера.
Ну, и что я ещё могу показать касательно маршрутизации? Можем посмотреть, что значит очистить табличку маршрутизации. Ну, давайте чуть позже об этом посмотрим. Пока давайте попробую, покажу, что значит свойства сетевого интерфейса. Вот мы заходим правой кнопочкой на сетевой интерфейс, там заходим в свойства, и здесь в протокол IPv4. Здесь мы видим настройки, о которых я говорил: это адрес IP-адрес Хоста 192.168.1.100, это маска подсети, которая определяет, что 192.168.1.0 — это адрес подсети, а 100 — это адрес Хоста в пределах подсети. И шлюз 192.168.1.1 — это куда направлять пакеты, если они не входят в эту подсеть, если адрес получателя не входит в эту подсеть. Вот, по сути, по сути, это всего лишь табличка маршрутизации. Давайте поясню, что это значит. Вы, наверное, если когда-то меняли IP-адрес, да, вы всегда заглядывали в интерфейс. Давайте очистим всё, посмотрим. Давайте сократим немного вывод `route print -4`. Да, это отразит нам только четвёртый, только таблицу маршрутизации IPv4. И делаем простейшую операцию: `route delete 0.0.0.0`. Когда вызываете вот этот маршрут 0.0.0.0, то есть мы делаем что? Мы делаем `route delete 0.0.0.0` и проверяем, что маршрут удалился. Теперь мы заходим в сетевой интерфейс, и что мы тут увидим? Давайте посмотрим. И мы увидим, что этот маршрут удалился. То есть понимаем, да, что указание в настройках интерфейса основного шлюза — это ни что иное, как добавление маршрута по умолчанию. То есть `route add 0.0.0.0 mask 0.0.0.0 192.168.1.1`. Давайте 192.168.1.1 — это адрес моего домашнего роутера. Указали. Смотрим вновь таблицу маршрутизации. И что мы видим? Маршрут 0.0.0.0 вновь появился. Ну, ещё добавлю, что есть у нас динамические маршруты и статические маршруты. Это здесь вот занята вот эта табличка, да, а вот эти маршруты всегда постоянно как бы существуют на хосте. Если я введу какой-то маршрут, вот давайте введём, да, где-то у меня тут был 1.2.3.4, `if 12`, да, и добавим `-p`. Это означает, что маршрут станет статическим. Так, опять я неправильно написал, кажется. Метрика 1. Пробел лишний. Так, нет, всё правильно было. Метрика 1 и `if 12`. Почему `-p` не работает? `-p 5`? Возможно, `-p`. Да, блин, что ж такое? Не пойму, почему не добавляется. Возможно, не добавляется, потому что такой маршрут уже есть. 1.2.3.4. Нет, нету. Да, `-p`. А, конечно, `-p`. Это означает, что пакет не будет отправляться на... он будет отправляться через интерфейс, который указан в конце. То есть в данном случае это интерфейс с индексом 12, или мой интерфейс. Итак, смотрим табличку `route print -4`. И что мы тут видим? У нас появился статический маршрут. После перезагрузки он возьмёт приоритет над всеми остальными маршрутами, которые будут пытаться отправлять на хост 1.2.3.4. Вот. Ну, пожалуй, я думаю, что всё на сегодня с маршрутизацией. Вот, если есть какие-то вопросы, давайте перейдём к этой части.
Собственно, ВКонтакте есть у нас темка с вопросами, в группе это вопросы по третьему уроку. Вот, если есть какие-то вопросы, на которые вы хотели бы услышать ответы сейчас, давайте задавайте. Если вам нужно подумать и потом задать вопрос, тоже, соответственно, задавайте, но уже позже. Вот. Также ещё, насколько я знаю, в YouTube есть чат. У нас в прошлый раз я, честно говоря, просмотрел его. Точнее, я увидел только часть, часть чата. Давайте я посмотрю, может быть, там что-то написано. Вот, вы пока можете что-то спросить, если у вас есть какие-то вопросы. Ну, от себя ещё добавлю, что вот модель вот эта — это один из столпов, да. У нас есть несколько столпов, я бы их назвал так, которые нужно знать каждому сетевому администратору. И первое — это у нас вот эта. Я уже сказал, это основа для сетевого взаимодействия. Чуть позже я расскажу на следующих уроках о том, что такое DNS. Вот это у нас тоже входит в основы. Ну, и некоторые другие вещи, там, какое-то базовое понимание железа, да, без которого как бы работа администраторам достаточно сложна. Ну, вот так вот. Честно говоря, опять не могу найти я чат. Есть у меня проблемы с интерфейсом. Так. Ага, есть комментарии, но есть у меня подозрение, что отображены опять не все. Ну, хотя нет, всё видно и слышно. 20. Я думаю, что всё. Последний комментарий 21:23. Так, ну, в принципе, вопросов я пока не вижу. Давайте я ещё для приличия пару минут подожду. Если вопросов не будет, если какие-то вопросы будут, я постараюсь на них ответить. Ну, ещё раз, ещё раз повторюсь, да, обязательно изучите эту модель. Если вы твёрдо, как бы, уверенно идти хотите идти дальше по этому пути системного администрирования или в поддержку, начните с изучения вот этой модели. Позже я буду неоднократно к ней обращаться и рассказывать, когда о протоколах буду говорить, на каком уровне они работают. И когда мы дойдём до момента сетевого траблшутинга, да, я расскажу, как применять уже модель на практике. В общем, обязательно, обязательно, обязательно, да, 10 раз обязательно эту модель вы должны знать. Вот, знать и, что самое главное, понимать, конечно же. Потому что знание без понимания оно много толку не приносит. В общем, дома, ну, может быть, можете поднять виртуалки, посмотреть, да, на таблицу маршрутизации, на вот этот вот ARP-протокол, да, табличку. Вы можете даже на обычном компьютере просто запустить `cmd` и посмотреть, что там будет вот в этой табличке, табличке маршрутизации. Понять, попытаться понять, как ходит пакет. Это такие самые основы, которые вам необходимо знать, чтобы вы могли устранить сетевую проблему. Вот, например, у меня была одна такая достаточно сложная проблема, когда я работал ещё в сфере, да, сотрудником технической поддержки. У меня была такая проблема, что на одном компьютере был прописан маршрут обычный, и пакет поступал на другой компьютер, взаимодействия никакого не было. То есть приложение не могло просто по какой-то причине связаться друг с другом. Вот. Но меня тогда это заняло достаточно большое время, этой... да, поскольку я не знал маршрутизации толком, да, и, наверное, вот несколько дней я пытался выяснить, в чём же эта проблема. Сейчас бы это заняло, наверное, полчаса, там, к примеру. Вот. И в конце концов выяснилось, я что на конечном компьютере, куда пакет отправлялся, был прописан статический маршрут, и удалённый компьютер как-то пытался ответить. Вот этот IP-адрес, с которого я изначально отправлял запрос, он попадал в область действия и шёл совсем не туда, куда ему надо было. Но и проблему эту мне удалось устранить. Я был очень горд в то время, для меня это был skills. Вот. Но сейчас, конечно, такая проблема, она уже, ну, на уровень, как бы, её решают люди, которые занимаются более простыми задачами, чем я, скажем так, как правило. Но иногда тоже приходится подумать, да, подсказать что-то. И, в общем, знание модели оно помогает. Ну, вопросов я до сих пор не вижу, так что на этом наша трансляция на сегодня оканчивается. Вот. А всем счастливо. Надеюсь, что следующую трансляцию я запилю на следующей неделе, да. Ну, анонс будет дальше и на Пикабу, как обычно, и в группе ВК. Вот, если вы что-то из предыдущих видео просмотрели, вы можете зайти и посмотреть это на моём канале на YouTube, э, либо в группе ВК. Опять же, там я загружаю видео, но в более плохом качестве, да. Ну, соответственно, можете зайти посмотреть. Ну, в общем, всем счастливо, до следующего урока. Задавайте ваши вопросы. Я не верю, что нет вопросов, да. Вот. Обязательно обдумайте эту модель. Если вам эта IT-сфера интересна, вы вот эту модель должны просто обязаны понять. Если вы этого не понимаете, то рано или поздно вы наткнётесь на затык, вот, который из-за незнания вами маршрутизации или модели, да, не позволит вам решать какую-то задачу. И вам придётся потратить долгое время, чтобы понять, в чём дело. Ну, всем счастливо, на сегодня всё. Бай-бай.