Кодирование, компорт, комстрока
С точки зрения самой операционной системы мы очень мало знаем про физический уровень. Тем не менее немного пронего расскажем, чтобы проиллюстрировать, откуда ноги растут.
На первом этапе, когда мы придумываем сеть, мы должны решить как выглядит среда передачи данных. Задача складывается из двух подзадач. Первое -- выдумать носитель данных. С помощью чего данные будут передаваться, что там вообще есть. Мы приводили пример, как можно специфировать ноли и единицу. Вариантов таких договренностей может быть много. Таквот, носитель данных может быть какой угодно, лишь бы он умел это делать и подключаться к компьютеру. Почтовый голубь вполне хорошая спд, только могут возникнуть проблемыс подключением потока голубей к компьютеру. Но такия экзотические спд мы рассматривать не будем. Очевидно, что параметры носителя типа толщины кабеля или количество витков на метр это параметры физического уровня. понятно, что ту же витую пару можно использовать разными способами. Несмотря на то, что это ниэжний уровень, а способ кодирования сигнала это более высокий уровень -- одно без другого не существует. И когда мы говорим, что выбираем способ кодирования, мы всегда должны помнить, какой носитель мы используем.
Есть напряжение -- нолик, нет напряжения -- единичка. Такой простейший способ кодирования. Сразу видим две проблемы, которые необходимо решить прежде чем радостно связывать два компьютера таким проводом. Должны понять -- данные это или нет. Перегрызла провод мышь, там всегда нули -- значит ли это, что нам всегда передают нули?
Сколько раз в секунду замерять напряжение?
Проблема в том, что в реальной жизни очень сложно сделать два устройства у которых счетчик бы тикал с одинаковой скоростью. Не говоря уж о том, что сам счетчик может плавать, завися от дня, ночи и факта включения рядом обогревателя.
Кодирование и синхронизация
Мы обязаны говорить о синхронизации потому что мы все-таки данные передаем. У нас может быть несколько вариантов. Что касается кодирования -- оно предписывается возможностями нашего канала. Например мы можем внести несколько уровней напряжения, если сможем гарантированно это различить. Это правда ещё вопрос шума на линии
- -- сколько шума нам приезжает снаружи. Например, обычный провод можно просто свернуть так, чтобы там появился шум, превратив его в катушку и взмахнув рядом утюгом.
Что касается синхронизации можем предусмотреть еще один провод и по нему просто слать тики, каждый раз когда пришел тик замеряем на втором проводе напряжение. Если вы внимательно почитаете спецификацию последовательного канала, который 25-проводной, то там как-то так и напсиано. С другой стороны, конечно, тянуть очередной провод это значит понижать надежность системы во столько раз, сколько проводов у нас есть. В частности довольно забавно вышли из положения люди , которые делали эзернет. Можнопридумать такой тип кодирования, чтобы он же ещё и синхронизировал. Если идет по проводу перепад с нолика на единичку, то это нолик, а перепад наоборот это единичка. Другой вариант -- смена напряжения единичка если ничего не меняется, то нолик. Это называется манчестерское кодирование -- когда увеличивается в два раза частота и делается синхронизация.
Тогда же ещё была проблема -- а правильно ли мы воткнули провода.
Дифференциальный манчестерский код -- если перепад на такте один -- то это нолик, а если другой -- то единичка.
В современных спд из числа простых, типа 100-мегабитного эзернета используются более сложные схемы кодирования, с треми, с пятью уровнями напряжения, и со всякими хитростями.
К чему хитрости? Казалось бы. проблему синхронизации решили. Вторая проблема это шум.
Шум
Шум означает ошибки. Передали мы одну информацию, а получили совсем другую. Передавали мы вот так, а получили вот так. Что в этом случае делать?Очевидно нам надро как-то контролировать тот факт, что ошибка вообще произошла. Чтобы это делать нужна избыточность, нужно передавать проверочную информацию. Самое простое на каждые 8 бит добавлять бит проверки четности.
Что тем самым мы можем определить? Что этот самый октет был передан с ошибкой.
Здесь мы вдаемся в еще большую область, которая называется кодирование информации, и это довольно таки большая область математики.
Нам важен принцип -- спд ненадежны, мы это контроллируем за счет передачи избыточной информации.
Можно ли восстанавливать испорченную информацию? Разумеется можно, только надо передавать ещё больше. Самый простой способ -- повторить три раза.
Попадаем в область автоматической коррекции искажений, которые на этой среде образуются.
У тебя в руках два провода телефонных -- лапша. На неё куча наводок. Внимание вопрос -- как эти люди умудрились добиться, что по этой самой лапше в случае дсльной линии передаются мегабиты в секунду, когда тут байты в секунду это уже много. Ответ такой, что та аппаратура, которая работает с этим каналом умеет отслеживать шум. Идея состоит в том, чтобы не мириться с тем, что среда зашумленная, а делать так. чтобы этот шум не мешал.
- Коррекция ошибок
- Коррекция искажений среды
Пресловутый компорт
Пресловутый RS. Если вы заглянете в спецификацию даже на википедии, то заметите, что при спецификации никто не заморачивался форматом сигнала, поскольку считалось, что обычное кодирование вполне достаточно, чтобы передавтаь данные. Соответственно, когда встал вопрос о том, что бы делать синхронизацию придумали еще один провод, по которому делается синхронизация. Потом выяснилось, что иногда устройство не успевает принять. Придумали еще один провод. Между прочим, это означает одну забавную вещь -- синхронизация по времени протоколом рс-232 никак не специфицирована. Скорость передачи регулируется не на аппаратном уровне, а выше. Просто потому что в те поры железо было дорого сделать и кодировать жто на аппаратном уровне было тяжело.
Что касается другого примера езернета, то там все немножко по-другому. Тем не менее, как было сказано, это два уровня перемешаны друг с другом. В спецификации езернета казано, как должно быть устроено кодирование в проводах. Верхняя часть того, что торчит в интерфейс она унифицирована. Утверждение номер один -- современная спецификация того, что называется протоклоы самого низкого уровня, включат и канальный и аппаратный уровни. В эзернете все немножко по другому.
Ethernet
Эзернет заранее требует, какое кодирование должно быть на проводе. Каждый из видов езернета использует свой формат кодирования. На самом деле конечно с точки зрения ос соверешенно все равно, какие цвета у оболочки жилы. Что такое витая пара? Это скрученные провода, один сигнал один земля. Почему так? Потому что наводки так меньше. Таких вот витых пар может быть в одном кабеле сколько угодно, правда в современности чаще всего используются провода, в которых таких пар четыре.
Приходит ко мне представитель повайдера проводить интернет. Протягивает кабель. Главная фишка была -- весь кабель бесплатный. Приходят, достают обжимные устройства.. И видит там лектор что-то очень странное. Разводяшие говрят, что у них специальная разводка, чтобы никто не мог врезаться в сеть. А как проверяете рабочесть? Ну как, лампочка говорит, занчит все ок. Для справки, если скрутить два сигнала, то качество сигнала очень сильно упадет.
Итак, при разводке езернета важно не раскручивать пары. При соблюдении такой парности вы можете даже сделать собственную разводку, чтобы никто не мог врезаться. На самом деле, у этих проводов еще и разный шаг скрутки, у всех. Чтобы они друг на друга наводку не давали.
ethtool eth0
Здесь вы увидите, какой носитель с той стороны -- например, коаксиальный кабель, или полудуплексный интерфейс.
Если вам интересно посмотреть на компорт, вы можете написать
stty -a < /dev/ttyS0
Там будет много параметров не связанных с физическими.
Еще на сайте есть упражнение -- как вообще прокинуть компорт наружу в хост систему.
Несколько слов про виртуальную машину и примеры
Что касается виртуалбокс -- это такая система управления виртуальными машинами.
Где-то пять лет назад, работа с виртуальными машинами сопрягалась с резким понижением производительности. В пять раз, и тому подобное. После того, как задача масштабируемости встала в полный рост, появилась поддержка виртуализации на уровне процессора, и накладные расходы свелись к около 20-30 процентам.
На современном компьютере дистрибутив в виртуалбокс ставится быстрее, чем на любой современный компьютер.
Немаловажное для наших целей свойство виртуальную -- простота импорта чужих виртуальных машин.
На нашем сайте есть изрядное количество ресурсов, посвященных теме работы в командной строке ос линукс.
Базовые вещи
Для иллюстрации работы будем пользоваться интерфейсом командной строки. Интерфейс командной строки устроен очень просто -- это текстовый пошаговый интерфейс. Как пошаговая стратегия.
Пользователь составляет сообщение для интерпретатора командной строки.
Система анализирует эту строку и что-то делает.
Интерпретатор командной строки выдает результат. Как правило результат выодится в тоже окно, в которое вводилась команда.
Ползователь это дело читает, принимает решение и вводит соответствующую команду.
Если вы хотите получить какие-то данные, то они выводятся на экран, и сообщения об ошибке выводятся на тот же экран.
Команда командной строки состоит из двух частей команда и параметры. Для удобства, чтоб не запутаться, что это бывают за параметры.
ls -a -l путь
l, a -- это флаг, или модификатор выполнения. Чаще всего ключи начинаются на минус, потому что так принято, чтоб не путаться. Сами флаги бывают двух видов -- минус-буква или минус-минус-слово. Первое проще написать, второе проще понять и запомнить. Если вы посмотрите документацию по ls вы увидите, что практически все буквы заняты.
Чаще всего команды это не встроенные команды интерпретатора, а названия программ. Когда вы вводите команду, то производится поиск в определенных директориях, есть ли такая команда. С точки зрения командной строки неважно, что это за программа и что она делает, лишь бы соответствующий бинарник лежал в соответствующей директории.
Еще две вещи про интерфейс командной строки.
man man
Еще одна вещь -- как вообще происходит работа пользователя с этим самым линуксом в командной строке.
Вы подключаетесь к терминалу и видите приглашение
login:root password:root
При вводе пароля никаких звездочек не рисуется, не думайте что клавиатура сломалась.
Обычные пользователи в линуксе ничего не имеют право делать. Все файлы, которые лежат в дереве каталогов системы все недоступны на запись и многие недоступны на чтение.
Чтобы с системой можно было что-то делать, есть пользователь root. У которого есть права. В частности, настройка сети из командной строки не передоверена пользователю. Все таки настройка сети это либо вещь полуавтоматическая, как в винде, или когда приходит системный администратор. Вот этот другой вариант мы и будем с вами осваиватьь.
Вы должны иметь в виду, те из вас, кто начнет знакомстов с линукс вот с этого -- так не надо делать. Это чисто иллюстративный пример.