Так что-же такое физический доступ
Начинаем изучать физический уровень модели OSI. Справедливо предположить, что в этом посте должно быть море формул, ряды Фурье, спектральный анализ и половина учебника по физики =) Но я сам не особый физиколюб, да и есть для этого специальные университеты. Поэтому попробую обойтись без нее.
На самом деле разница между передачей данных по проводам или без не очень большая в основном отличается это тем, что в проводах данные передаются путем изменения напряжения или с помощью передачи света, а в беcпроводных сетях - с помощью радиоволн.
Мы все разберем на примере проводов. А что касается wifi, спутников и т.д думаю это можно вынести в отдельную какую - нибудь лекцию в дальнейшем. Да и в общем-то физический уровень для сетевых программистов не самый главный на свете. Хотя для самих сетей и сетевых инженеров он конечно ключевой.
Итак собственно о чем я :)
До появления компьютерных сетей, увидеть школьника в наушниках, вечно тыркающего черную коробочку в руках было невозможно. Ребята делали следующее. Брали две консервные банки (затем их заменили пластиковыми стаканчиками), нитку. В банках посередине снизу делали шилом отверстие, продевали нитку, завязывали узелки на концах, чтобы нитка не выскакивала из отверстия в банке и натягивали две банки, расходясь в разные стороны. После чего одни из ребят в первую банку мог что-то сказать, а второй на другом конце это слышал. И таким же образом мог отвечать. Эта штука благополучна заменяла детям айфоны на протяжении полувека!
Естественно будущие разработчики компьютерных сетей тоже любили играть в эту игру.
А когда выросли, почитали разных книг. Изучили свойства электричества и проводов, придумали вот что. Если нитка может передавать импульсы, вызываемые трением звуковых волн внутри банки, попадающих туда, когда в нее что-то говорят, а на другом конце может воспроизводиться, попадая с нитки на банку и вызывая колебания на ее поверхности, то существует проблема затухания этих импульсов при прохождении по нитке. Следовательно их нужно как-то усилить. Ну к счастью тогда уже был изобретен телефон, поэтому за основу его и взяли. Вместо нитки взяли провод, который проводит электричество. На один конец провода привинтили такую замечательную вещь, как источник напряжения (генератор) причем с рычажком, которым можно напряжение повышать/понижать в определенных пределах.
На другой конец провода повесили измеритель этого напряжения (вольтметр).
Теперь можно было передавать сигналы например, если шкала вольтметра содержит 33-уровня. Можно было закодировать каждую букву русского алфавита и передавать текста путем изменения напряжения (1в - А; 2в - Б; 3в - В и т.д.).
При этом можно было намного увеличить длину линии связи (провода в отличии от нитки).
Данный принцип заложен в любой проводной сети, даже в оптоволокне хотя там вместо напряжения используется спектр света. Если провод очень длинный, и сигнал при передачи затухает, например через 10 км, то в этом месте в провод втыкается повторитель. Ну точнее он пристраивается там между двумя проводами, которые составляют линию связи. Повторитель это такая коробка, которая принимает слабый сигнал, усиливает его с минимум искажений, и отправляет дальше по проводу. С оптоволокном аналогично - там усиливается свет.
Понятно, что в нормальных сетях никто на концах провода генераторы напряжения и вольтметры не оставляет. (Кстати эта схема называлось бы симплексной - так как поток данных идет в одну сторону от генератора в датчику, а если на концах одновременно и источник регулируемого напряжения и вольтметр - дуплексной, так как данные можно передавать в обе стороны). Так вот описанное выше - в нормальных сетях называется модемом (от модулятор-демодулятор). Причем это может быть не только телефонный модем.
Это устройство может даже называться иначе в зависимости от системы связи где он работает, но смысл его одинаковый. Помимо всего модем может не только "измерять" и посылать аналоговый сигнал, но еще и цифрует принятый сигнал, чтобы передать его компьютеру, и наоборот цифровой сигнал от компьютера, преобразует в аналоговый (изменение напряжение в проводе).
Самый простой способ преобразования цифрового сигнала в аналоговый называется "без возврата к нулю". И просто когда на вход модема приходит 0 он подает на провод отрицательное напряжение, а когда 1 - положительное. (Существует много других способов, которые реально используются, но сейчас для нас это не главное). Важно понять что будет если нужно передать много нулей или единиц сразу. Например если передается 100 нулей подряд, как модем поймет, что их ровно 100, а не 101 например. Изначально для этого можно было использовать таймер, но на современных скоростях передачи данных, и таймер ошибается. Придумали тогда такого зверя как синхронизация. Принцип работы простой - на один сигнал (данных) накладывается второй, который тупо помогает подсчитывать биты, и выглядит как одинаковая волна импульсов (как он может накладываться существует много способов, можно элементарно послать его по второму дополнительному проводу).
На втором конце провода, где данные принимаются, модем каждый раз когда получает этот синхронизирующий импульс, понимает что нужно проверить напряжение на линии данных, и считывает его. Если там отрицательное - 0, если поменялось на положительное - 1 (в действительности конечно сложнее все, но нам для понимания достаточно и этого).
Осталось разобраться еще с одним моментом. Компьютерные сети могут передавать данные по проводам, в каких, то местах данные объединяются и передаются с разных машин по одному проводу. Чтобы разделить данные в проводе переданные в него с разных компьютеров, придумали мультиплексирование. Фактически это когда один провод в каждый момент времени передает данные с одного конкретного компьютера. Можно представить что биты передаются пучками, а разделяют пучки несколько бит, которые не могут встречаться нигде больше в передаваемых данных.
Для физического уровня вполне достаточно отличать один пучок от другого. Так как потом он просто передаст эти пучки на канальный уровень, и там уже с ними будет разбираться протокол (протокол представляет из себя программный код) канального уровня. О канальном уровне мы поговорим в следующей лекции.
Кстати сегодня 26 ноября Всемирный День Информации, с чем я всех читателей и поздравляю =)
Очень хорошее объяснение... Если бы в школах так просто излагали материал, то дети поголовно физиками и инженерами хотели бы стать :)
Спасибо)
здорово, ещё б орфографию вычитать
Спасибо. Ну с орфографией ничего не могу поделать. (: Я русский язык еле на 3-ку в школе вытягивал. А вот по точным предметам дела обстояли лучше ))
Даже я почти всё понял)
Это хорошо)) Правда про следующий канальный уровень пока сложнее восприятие получается. Думаю как упростить сейчас)
@rusldv Спасибо за статью. Будет здорово если ты продолжишь писать в таком ключе) к примеру, дальше по уровням или про цос
Спасибо, @litvintech Да буду дальше писать по уровням. Потом немного о криптографии, затем про программирование сетевых приложений (клиент-сервер), а потом про разработку блокчейн-систем. Пока такой план))