В Ethernet используется асинхронная передача данных в общей среде передачи данных. Проблемы:

  1. Устройство захотело передавать данные, а вэто врем ядругое устройство их уже передавало. Получилась каша. Плохая идея. Устройство должно иметь мозг, слушать что происходит в спд и пока спд занято ничего не передавать. Это называется cs, определение занятости среды. В этом простом казалось бы факте -- давайте научим устройство определять занята среда или нет, есть два подводных камня. Процессоры, особенно те, которые на сетевых карточках работают не бесконечно быстро. Определили, что среда свободна, и решили начать предавать. А другое устройство начало этот же процесс на миллисекунду раньше и тоже начало передавать, за счет рейс кондишна. Эта ервая проблема, которая решается введением понятия collision detection -- определение коллизий. Даже если мы видим, что спд свободна, мы должны быть готовы к тому, что кто-то одновременно с нами начнет передавтаь. Для этого тоже должен быть какой-то мозг, который будет это определять.
  2. Вторая проблема чуть более хитрая. Допустим, мы реализовали определение коллизий и прослушивание среды. Хотим передать данные, а среда занята. Что мы длаем дальше? Ждем, когда она будет свободна? Плохая идея. Есть 20 абонентов, и один все время поливает остальных данными. И все ждут-ждут когда он закончит, а потом все 19 вместе хлобысть, и начинают передавать. Эту проблему решили в Ethernet достаточно остроумно, приделав функцию ожидания случайного интервала времени. Каждое из устройств, которое заметило коллизию ждет случайный промежуток времени, а потом начинает передачу. Более того, чтобы еще проредить delay store это ожидание устроено таким спосбом -- увидели что среда занята, подождали, снова занята, увеличили время в два раза. И так пока время ожидания не станет совсем уж большим, и тогда мы диагностируем нерабочесть Ethernet. В силу этого остроумного но изобретенного на голом месте инструмента, Ethernet сеть загруженная на 30 процентов начинает заметно проседать по производительности. Потому что примерно каждый третий фрейм чего-то ждет.

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

Забегая далеко вперед -- из этого же следует простой и лобовой способ достижения времени передачи. Что позволяет гарантировать всем 1 мбит в секунду? Надо завести среду с передачей данных 100 Мбит в секунду. Тогда вероятность что оно будет не работать будет достаточно низкой. Об этом будем говорить в следующем семестре, когда будем говорить о пропускаемой через интернеты мультимедии.

Не буду сейчас вам рисовать Ethernet-фреймы, но давайте определимся с терминологией.

MAC -- Media Acces Control. Стандарт, описывающий как нам идентифицировать устройство в сети. С ним связано понятие MAC-адрес. Он сотоит из 6 октетов. 3 из них это идентификатор вендора, оставшиеся три -- идентификатор учтройства. Лектор встречался два раза с одинаковыми мак адресами в сети. Один раз это были волшебные китайские карточки, и там видимо просто не знали, что они должны быть разные. В другой раз это был волшебный скрипт, назначивший всем одинаковые мак-адреса. Сеть в которой две машины с мак-адресом работает забавно -- работает то одна машина, то другая, почему это так -- погворим в следующий раз.

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

Есть два исключения из этого правила

  1. мак-адрес FF:FF:FF:FF:FF:FF является широковещательным, его пропустит любая карточка.

  2. специальный режим работы карты, в котором она начинает принимать все пакеты. Называется промискуитетный режим, когда карточка дает всем. Хуже того, у всех берет.

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

Какие ещё бывают часто используемые среды передачи данных?

Вайфай. Получаем еще две задачи, связанные с дисциплиной использования среды -- авторизацию и шифрование.

WiFI

Есть много разных протоколов, которые частично включаются друг в друга. Наиболее популярны на сегодняшний день 802.11g, но он потихонечку устаревает.

Различия начинаются сразу же, с аппаратного уровня. Уровень зашумления несоизмеримо выше, чем при передаче сигнала по проводам. Режим и способ кодирования совершенно другие. Применяется существенная избыточность. И невозможность разделения воздуха на всех -- каналы.

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

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

В новых используется алгоритм orthogonal frequence division modulation. frequence division modulation это когда мы передаем на одной частоте и используем как несколько каналов, в зависмочти от фазы. Слово ортогональный ри этом вот зачем -- в принципе мы можем сказать, каждый нулевой скачок принадлежит абоненту номер ноль, каждй первый номеру один, и так далее. Ортогональный означает, что кодирование для разных абонентов будет происходить на базе ортогональных векторов. Идея состоит в том, что в пачке сигналов каждый из абонентов может выделить именно предназанченный ему. Если кому-то интересно, посмотрите, как устроен cdma, он устроен наиболее просто.

Через iwconfig можно понаблюдать все эти параметры. Или через кнопочку advanced вашего ройтера.

Что касается авторизации. Авторизация неравзрывно связана с шифрованием, потому что абсолютно бесполезно авторизовываться открытм ключом.

КАк вообще устраивать авторизацию между двумя устройствами? Самое простое -- логин пароль. Проблема состоит в том, что именно это и надо зашифровать. А чтобы зашифровать надо обменяться ключами. Тут и начинается некоторая катавасия.

Итак, у нас есть точка доступа и абонент. В отличие от Ethernet , где все одинаковы, тут есть точка доступа. На абоненте есть ключ. Он подсединяется к точке дочтупа и говорит, у меня есть ключ, он твой, я им буду шифровать трафик, а ты работай. Трафик шифруется этим ключом, и сторонний человек, его не зная, не может расшифровать и все хорошо. Обратная ситуация -- нам не надо логиниться, нам надо предъявить занние пароля.

Какая проблема? Проблема в том, что мы знаем, что за траффик здесь бегает. Это типа Ethernet фреймов, с четкой структурой. Поэтому сколько не шифруй одинаковым ключом, рано или поздно мы сможем его подобрать. Чем структурированней шифруемая информация, тем проще восстанавливается ключ. В случае файфайного траффика мы ограничены и размером пакета и его содержимым. Поэтому долгое время алгоитмы шифрования вайфая были подвержены атакам на восстановление пароля. Поэтому современный вайфай как правило устроен так, что этот ключ первоначальный и довольно быстро абонент и точка доступа постоянно перегенируют общий ключ. Предполагается что за время жизни ключа его не успеют проиндексировать.

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

Что еще интересно знать про вайфай? Для удобства пользователей кажда точка доступа наводняет пространство специальными информационными фреймами со словами "я точка доступа". Не делают этого только скрытые точки доступа. В этих информационных сообщениях есть идентификатор ESSID, это собственно имя этой точки. Обратите внимание на то, что уникальным идентификатором является именно essid, а не канал, который был выбран для передачи данных. В неокторых случаях оно может по каналам даже прыгать, если на выбранном канале оказалось слишком шумно.

Ну и последняя проблема, связанная с вайфаем -- в нем используется шифрование. Шифрование это всегда вопрос сертификации. просто так устройство, которое шифрует не может быть выпущено на рынок. С эти были связаны сложности с поддержкой вафай в линукс, потому что было очень сложно добраться до спецификаций. И с этим связано невозможность создать опен хардваре с вайфаем. Когда вы читаете новость, что было разработано устройство беспрводной связи с открытыми аппаратными спецификациями, которое безумно медленное и глючное и все безумно радуются это просто потому, что никаких других устройств таких открытых нет. Аппаратуру реализующую вайфай открыть нельзя в принципе, шифрование сделало этот процесс слегка закрытым.

КАкие еще бывают интерфейсные уровни передачи даных?

l2tp

Вы с одной стороны образуете некое устройство,с другой стороны, а посередине тунель. Тоже самое ppp. У вас есть какой-то поток данных, а вы хотите чтобы этот поток данных служил вам для интернета. Мы сейчас про туннели говорить не будем, потмоу что почти всегда это предача одного уровня через другой, мы будем про них говорить, когда будем говорить про ip.

Протоколов канального уровня столько же, сколько сред передачи данных.

Проблемы, которые решаются при подключении среды передачи данных к компьютеру проблемы всегда одни и те же. Ethernet b[ bkk.cnhbhetn достаточно хорошо, а те которые не иллюстрирует Ethernet иллюстрирует вайфай.

Лектор как-то видел авторизацию через wpa-supplicant для Ethernet.

Что касается Linux.

Несколько раз уже упоминалось здесь понятие сетевого интерфейса.

Самый простой способ посмотреть список интерфейсов

    ip link

.Там всегда будет интерфейс с именем lo. Это такая сетевая карта -- все что вы в нее запихиваете, то и получаете. Очень удобно, когда интернета нет, а вы хотите, например, запустить сетевую службу.

Другие сетевые карты будут называться по другому. Исторически Ethernet назывался eth0, но возникла проблема когда оказалось, что сетевые карточки можно втыкать, вытыкать, менять, итак далее. Номера начинают прыгать. Особенно странно бывает, когда в зависимости от расположения пятен на солнце карточки могут распознаваться в разном порядке, и мы можем получить произволбно менющиеся местами названия карточек. Поэтому есть альтернативный способ -- есть шины данных и есть pci с номерами шин. И сейчас именование выглядит так -- enp#s#

До сих пор устойчивого мезанизма нет, но старый никто не отменял. Всегда можно привзяать имя сетевой карты к ее мак-адресу.

ip link может не показать мак-адреса, если интерфейс не езернет. Бывают сетевый интерфейсы у которых мак адреса нет. Помимо мак адреса там есть всякие флаги -- интерфес может быть поднят, может быть опущен и штука под названием mtu. Это размер пейлоада во фрейме.

В домашнем задании будет упраженнеие опустить интерфейс и посмотреть, как меняются флаги.

Из интеренсого расскажу про tun/tap -- механизм создания виртуаьных интерфейсов. Этот сетвой интерфес поднимается в случае, елси какая-нибудь прикладная программа открывает устройство. Важно что поднятие такого интерфейса сопровождается запуском программы, котора получает все данные. которые вы в этот интерфейс запихиваете. Фактически носителем куда идет траффи к является программа. с использованием такого интерфейса можно реализовать любой протокол передачи чегго угодно куда угодно. Программа может распечатывать трафик на бумажке и роботами приклеивать к лапкам голубей. В домашнем задании будет пример, где вы глазами будете смотреть трфик руками. Тун отсылает трафи куровня 3, тап отсылает трафик уровня 2.

LecturesCMC/LinuxNetwork2013/Conspects/03 (последним исправлял пользователь Allena 2013-10-18 12:50:54)