
arp -a показывает MAC-адреса соседей. Команда route print выводит таблицу маршрутизации. Команда netstat -nab показывает открытые порты и программы, которые их используют, и её нужно запускать от имени администратора.Полный текст первых минут лекции «OSI и TCP/IP» из видеокурса PracticU – субтитры с временной меткой для каждого абзаца. Так можно прочитать и найти нужные темы ещё до начала обучения.
Эта лекция посвящена модели OSI и TCP/IP. Мы поговорим об устройстве сетевого сообщения, о том, что на каких уровнях находится. Это крайне важная лекция для работы и для того, чтобы пройти собеседование по работе.
О таких вещах там очень любят спрашивать. Это будет довольно неповерхностная лекция. Мы во всё углубимся, и это будет забавно, а также, возможно, вы благодаря этому получите работу.
Итак, сетевая модель OSI основана на том, что существуют разнообразные уровни, лейеры. Каждый более высокий уровень обращается к более низкоуровневому уровню за помощью, дает ему команды, точно так же, как программа обращается к драйверу, а тот уже обращается к железу.
Только тут у нас очень много таких уровней. Зачем вообще нужны все эти уровни? Почему аппликация, приложение не может обратиться сразу к самому нижайшему уровню, сразу сказать железу, передать пакет информации?
Прежде всего, впрочем, бывает такое, что здесь нету уровней. Там, где пишутся такие программы, которые не подразумевают разделение на разные лейеры, на разные уровни, такие программы называются монолитными.
Например, в Linux есть монолитные операционные системы, в Cisco тоже есть монолитные операционные системы. Но в таких вещах есть одно затруднение — какое-либо изменение, которое бы иначе могло затронуть лишь один уровень и совершенно не заставить что-либо менять на остальных уровнях.
В монолитных вещах такое изменение потребует переделывания всего продукта, переделывания всей программы, потому что всё является единым кодом, единой вещью, которую нужно будет переделать.
Например, в Cisco в раутерах именно так и происходит. У нас есть определённый курс, где мы изучаем операционную систему Cisco.
У нас есть курс CCNP, где мы как раз обсуждаем этот самый нюанс с операционной системой Cisco. Впрочем, у монолитных вещей есть и преимущества.
Без всех этих уровней просто всё работает быстрее и проще для программирования. Но в целом никто уже не делает всё в монолитном виде.
Вот-вот мы рассмотрим все уровни, узнаем, что делает каждый уровень, и вы почувствуете, что это разделение на уровни нужно, почувствуете, что вам нужна эта гибкость, которую даёт такое разделение.
Далее, разделение на уровни позволяет менять составляющие. например, аппаратное обеспечение, железо, или, например, драйвер, или, например, операционную систему даже.
Многие программы, например, работают на разных Windows'ах. Вы можете сменить Windows и не исправлять при этом код программы. Например, я написал игру в шахматы, и она будет работать на разных Windows'ах.
Я могу сменить Windows, я могу сменить драйвер видеокарты, я могу сменить саму видеокарту, и мне не нужно будет при этом переписывать мою игру в шахматы.
То есть на определённом одном уровне могут быть разные вещи, но у них есть стандартный образ того, как к ним обращаться и как они обращаются к тому, что ниже них.
Так же как у автомобиля есть определённое крепление для колёс, и все заводы по производству колёс знают, какое там крепление. У автомобиля можно менять колёса, а также производители колёс знают, какая поверхность у дороги, и колесо — это посредник между стандартным креплением для колеса и формой дороги, стандарт которой заключается в том, что
она ровная или не очень. Впрочем, и в модели уровней тоже есть сбои, они случаются. Иногда на более низких уровнях что-то так принципиально меняется, что даже требуется менять что-то на более высоких уровнях.
Например, некоторые из вас, возможно, пережили переход с Windows XP на Windows 7. Система безопасности настолько изменилась, стала настолько строже, что уже нужно переделывать многие программы.
Про Windows Vista в промежутке я даже не говорю, можно сказать, все проигнорировали его. В общем, в переходе с Windows XP на Windows 7 изменили интерфейсы общения аппликаций с операционной системой, то есть аппликация, приложение уже должно обращаться к более низкому уровню, иначе изменился
стандарт, и, соответственно, многие программы пострадали от этого, перестали просто работать.
Кстати, если сейчас всё звучит слишком общее, как-то непонятно, не тревожьтесь, вскоре вы всё поймёте. В общем, у каждого уровня есть свои обязанности, своё предназначение.
И каждый уровень функционирует как независимая логическая единица. Далее, у каждого уровня есть интерфейс, как к нему обращаться, и интерфейс, как он должен обращаться к уровню под ним.
То есть входной интерфейс и выходной интерфейс. Это как в бюрократии. Есть определённый бланк, определённая форма, которую нужно дать в определённое окно какому-то человеку.
И он в ответ выдаст какую-то другую форму, которая вам как раз нужна для того, чтобы дать её в другом учреждении, в другое окно. И неважно, какой человек сидит в этом окне, есть определённая форма, определённый стандартный бланк с определённой печатью, которая требуется
в определённом окне. Также и тут у каждого уровня есть определённый облик получаемой информации и облик выдаваемой информации в следующий уровень.
А вот что происходит внутри уровня, на это нет стандартов. Там может происходить всё, что угодно. Главное, чтобы этот уровень в итоге выдал всё в стандартном виде, как умеет принимать следующий.
Именно поэтому можно менять составляющие, находящиеся на каждом уровне. Их можно менять, не меняя то, что находится на всех остальных уровнях, благодаря логической независимости.
Например, по одной и той же сетевой карте можно посылать и пакеты TCP, и пакеты UDP. Сетевая карта вообще не ограничивает тип пакета, который я буду по ней посылать. Например, есть программа игры в шахматы онлайн.
Есть также промежуточная программа, в котором написано более низкоуровнево, как именно информация пересылается между сетевыми картами. Есть сами сетевые карты.
Так вот, можно сменить сетевые карты, можно сменить ту промежуточную программу и не менять при этом саму аппликацию шахматной игры.
А вот если бы всё программное обеспечение было единой логической единицей, то при любом изменении, которое иначе могло бы быть только в части на определённом уровне, нужно было бы, соответственно, исправлять всю эту логическую единицу.
Кстати, и операционная система работает с драйвером. Драйвер — это более низкоуровневая вещь, чем операционная система, и там тоже есть интерфейс общения с драйвером.
Часто такой интерфейс называют API, или в народе API — Application Interface. Например, между веб-сайтами тоже бывает API — тоже обращение друг к другу через интерфейс.
Например, на каком-то сайте есть Google-карта. Возможность работать, смотреть на такую же карту, как в Google Maps. Это не значит, что на этом сайте пришлось написать ту же самую программу, и что авторам этого сайта пришлось вывести на орбиту спутники, чтобы делать спутниковые карты.
Нет, этот сайт берёт всё с Google Maps и обращается к Google Maps с помощью определённого интерфейса. Там есть ряд функций, которые предоставляет Google Maps, и сообщения между сайтами по определённым правилам с помощью определённого стандартного интерфейса.
И это тоже API — Application Interface, когда одна программа сообщается с другой и используют её функции. API знакомы всем программистам. Они должны всё время знать, как к чему-то обратиться, каков интерфейс того, с чем они работают.
Итак, что такое OSI и что такое TCP/IP? OSI — это теоретическая модель, стандарт, как всё должно работать. Общая такая модель. И есть практическая модель, которая используется повсеместно в жизни — TCP/IP.
Эта модель сегодня победила все остальные протоколы. Сегодня остальные модели даже не стоят упоминания. А вот когда я учился, мы учили такие протоколы, как IPX и SPX.
Всё это уже вымерло, и нам осталось только учить один протокол TCP/IP, ну и теоретическую общую модель OSI. То есть OSI — это просто теория, философия, а TCP/IP — это то, что конкретно в воплощённом варианте происходит в жизни.
OSI гласит, что должно быть семь уровней, на которые должна быть разделена система. А вот воплотили это в TCP/IP, сделав там четыре уровня. На четыре уровня всё разделили лишь.
Три верхних уровня модели OSI называются в TCP/IP прикладным уровнем Application Layer. Транспортный уровень в OSI так и остался транспортным в TCP/IP.
Кстати, часть этого можно сказать, что находится здесь. Но мы сейчас не будем углубляться в такие детали. Сетевой уровень — это и тут сетевой уровень, а весь физический уровень, уровень железа, уровень аппаратного обеспечения находится здесь.
То есть это уровень железа, это уровень IP, это уровень TCP/UDP, а это уровень аппликации. И если вы не поняли, что я от вас хочу, скоро вы это поймёте.
Мы начнём обсуждение уровней с самого низкого уровня. Начнём проходить уровни снизу. Но прежде в целом о последовательности.
Есть программа, которая хочет отправить информацию. Она сообщает об этом Windows. Windows выполняет вот эту должность, а потом Windows передаёт это внутри себя другой программе, чтобы она выполнила вот эту обязанность, а потом запрос передаётся сетевой карте, которая делает это, и всё выходит в кабель, приходит на
другой компьютер, и всё происходит в обратном порядке. Каждый убирает с полученной информацией свою часть, использует и убирает то, что добавил такой же уровень на другом компьютере.
Каждый делает своё дело, и всё попадает к аппликации, которая на другом компьютере. Каждый дополняет что-то к информации или убирает и передаёт дальше.
Мы всё это увидим ближе к концу лекции на более наглядном рисунке. А теперь настройтесь на долгую лекцию. Эта тема преподается долго. Начнём с физического уровня, с уровня аппаратуры.
Аппаратный уровень — это самый нижний уровень. Этот уровень занимается такими вопросами, устанавливает такие вещи, как какое напряжение проходит по кабелю, или какой силы свет, или на какой частоте передаётся Wi-Fi, сколько проводков в кабеле, предельная длина кабеля и тому подобные вопросы аппаратуры.
В общем, этим всем занимаются электронщики, а вы, sysadmin, сидите и смотрите. Это что касается аппаратного уровня. И тут вам, собственно, не то чтобы есть много что делать.
Разве что, может быть, подключить тестер, такой приборчик, чтобы убедиться, что кабели исправны. Далее, второй уровень снизу — datalink.
Впрочем, в TCP/IP это пока что один и тот же уровень. Но в OSI это другой уровень, и это логическое управление аппаратным уровнем.
В обязанности этого уровня входит сообщение между соседями, соединение соседей, то есть есть несколько компьютеров в сети, и нужно всё это организовать в единую сеть, чтобы была логически и физически единая сеть.
И этот уровень обеспечивает два режима работы. Первый режим называется Point-to-Point. В Cisco об этом ведётся очень много речи, а в майкрософтовских вещах об этом вообще не говорится.
Тут в этом режиме есть кабель, а с двух его сторон только по одному устройству, которые к нему присоединены. То есть только два устройства и кабель между ними.
Здесь нельзя подключить более двух устройств к одному кабелю. Это как кабель SATA, или как в интернете есть сериальные кабели.
У такого кабеля нету в интернете адреса mac. Мы скоро поговорим о том, что это такое. В общем, с таким режимом вы столкнетесь не во внутренней сети, но скорее во внешней.
А вот то, что творится во внутренней сети, то, что вам знакомо, локальная сеть, к которой подключаются компьютеры, стоящие близко, это Point-to-Multipoint, такой режим.
Тут на одном и том же кабеле находится множество сетевых устройств. То есть прямо к одному кабелю присоединяется несколько компьютеров, более двух, можно более двух.
Как, например, в Wi-Fi, беспроводной сети. Можно сказать, в одном и том же пространстве сообщения у нас несколько устройств.
И поскольку у нас может быть несколько устройств, нужен адрес Mac. У каждого должен быть свой адрес Mac. Это удостоверяющий номер, определяющий конкретное устройство, к которому мы хотим обратиться через сеть.
То есть у нас есть единое пространство для беседы, как в Wi-Fi. Или же раньше было такое единое пространство для беседы с помощью такого антенного кабеля, как старый телевизионный кабель, который заходит в телевизор из антенны.
И вот такой кабель проходил через всё, через всё рабочее пространство, и все компьютеры были присоединены к нему. Через такой переходничок BNC, напоминающий букву «Т», двойник такой, создающий ответвление.
Мы сейчас живём в очень удобный период для сисадмина. Всё работает быстро, всё удобно. А вот он BNC-кабель. Когда-то его протягивали по всем офисам или через весь компьютерный класс.
И на этом самом кабеле, прямо среди него, среди его длины, ставили такой переходничок, который создавал ответвление.
И вот с помощью такого ответвления подсоединялся к этому кабелю каждый компьютер. Много таких ответвлений могло быть на одном кабеле.
Вот, смотрите, вот он, этот переходничок. Поняли? Кабель идёт так. Проходит вдоль вот этих вот штук, а в середине есть ответвление. Вот с помощью таких вот T-видных переходников все компьютеры подключались к сети.
Но сегодня кабели уже дёшево стоят, и это не нужно. А также этот старый кабель работает в режиме Health Duplex, а не Full Duplex, и работал всего лишь со скоростью 10.
И когда один передавал, все остальные должны были молчать. При таком кабеле компьютер не может одновременно передавать информацию и получать чью-то трансляцию информации.
А сегодня в современных кабелях, которые вам знакомы, есть разделение между проводками. Одни отвечают за исходящую связь, а другие — за входящую связь.
И таким образом можно одновременно ввести передачу вне и получать входящую связь. А вот в таком кабеле было лишь одно пространство, и мы могли лишь получать либо отправлять.
Мы не могли одновременно делать и то, и то. И от этого скорость в два раза ниже. Это называется Health Duplex, а обратное называется Full Duplex.
Но это всё пример из ностальгичных дней. Этого уже нет. Но бывает такое — единое пространство для беседы. И вот тут как раз нужны адреса mac.
Вот, смотрите, я выполню команду arp-a, и вы увидите некоторые компьютеры, которые есть в нашем колледже. Вы видите компьютеры, которые сейчас включены, и их адреса Mac.
Адрес Mac — это физический адрес сетевой карты. Ведь с точки зрения обычного современного кабеля, который называется Ethernet, с его точки зрения можно работать в режиме Point-to-Multipoint, то есть подключить к одному кабелю много устройств.
И поэтому у каждой сетевой карты свой собственный физический адрес. Возьмём какую-нибудь сетевую карту с таким вот адресом IP.
Но смотрите, у него есть ещё и physical address. Это как раз и есть адрес MAC, то есть физический адрес той сетевой карты.
И та сетевая карта, если видит пакет, который предназначается для её номера, пакет, в адресате которого указан вот этот вот номер, то эта сетевая карта берёт такой пакет из сети, подбирает такой пакет и передаёт его уровню, который выше, следующему уровню.
А если сетевая карта видит другой мак, другой адрес, то она игнорирует такой пакет. Точно так же, когда вы находитесь в одном звуковом пространстве с другими людьми, и кто-то начинает своё сообщение с вашего имени.
Вы понимаете, что это обращаются к вам и применяете его сообщение. Если же оно начинается с другого имени, то вы его игнорируете. А есть также ещё один общий момент.
Если кто-то говорит «Слушайте все», так начинает своё сообщение. Так вот, в мире компьютерной сети тоже есть такая вещь. Это называется Broadcast.
И вот это вот название адресата по имени «Слушайте все» — сообщение, которое сетевая карта тоже не игнорирует, как и то, что обращено лично к ней.
А в графе «адресат» такого сообщения вместо мака указаны все цифры F. Если мы рассматриваем этот номер в 16-ти ричном счислении, то он будет представлен как FFFFF.
Когда в адресате написано FFFFF, одни сплошные F, то это Broadcast. И такой пакет подбирают все. Разумеется, FFFF — это лишь в шестнадцатеричном счислении.
Например, в двоичном это будут просто все единички. Так вот, такой пакет предназначается для всех.