UNИX, осень 2008, 01 лекция (от 01 октября)

Материал из eSyr's wiki.

Версия от 19:45, 1 октября 2008; 92.36.29.161 (Обсуждение)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Георгий Владимирович Курячий Работает на факультете в лаборатории программного оборудования, следит за почтовым сервером. Не знает, что такое программное оборудование. Также в компании АльтЛинукс, занимается образовательными проектами.

Помимо спецкурсов проходит семинар, сходный, но чуть более профессиональный. Название общее.

http://uneex.ru/

Спасибо Е. Сыромятникову за зарегистрированный домен.

За дверью в П-5 что-то, принадлежащее экономфаку и опечатанное его печатью.

4 года назад был аналогичный спецкурс. Этот наполовину будет посвящен TCP/IP, наполовину Linux-специфичный.

Не мог понять, что за стек протоколов, почему их 5, а в ISO/OSI вообще 7, почему нельзя передавать по одному протоколу.

Если пятна на Луне сложатся удачно, будет рассказ про межсетевые экраны. Если пятна сложатся в другую конфигурацию, будет рассказ про IPv6.

«Фактически на диктофон позвонили».

Задача состоит в том, чтобы обеспечить связь между компьютерами во Вселенной. Ничего не знаем. Что мы должны передавать данные, чтобы передавать данные между компьютерами?

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

Витая пара — классический способ передачи данных на сегодняшний день. Пусть мы изготовили соответствующую СПД. Задача все еще не решена, т.к. провод мы в компьютер не воткнули.

Стоит вопрос, как присоединяться к СПД. Термин «подключение» некорректно использовать. Но за неимением лучшего будем использовать.

Второй пункт — подключение компьютера к среде. У нас есть сигнал, нужно перевести его в нолики и единички. Второй пункт дробится на две задачи. Первая — розетка. Раньше был нуль-модемный кабель. Если среда подразумевает подсоединение нескольких абонентов, нужно решить вопрос, как определять, кто передает данные, твои ли данные сейчас передаются. Если в качестве абонентов в СПД более, чем два устройства, сразу возникает вопрос о дисциплине передачи. Это вторая задача. Как друг друга различить и как друг другу не мешать.

Конкретный провод втыкается в конкретный компьютер с помощью сетевой карты. Если к данной СПД подключено несколько абонентов, они знают, как передавать данные, не мешая друг другу. Чего не хватает?

При подключении доп. абонентов безопасность падает. Будем считать, что мы ничего не можем сделать с безопасностью, раз уж изначально не позаботились. Оптимизации не касаемся.

Существуют задачи, которые от начала до конца решаются на этих двух уровнях.

Все это очень хорошо работает, если СПД одна. Компьютеров будет не очень много, пусть 10, пусть 100. Чем больше абонентов, тем больше шансов, что один из них превратит СПД в месиво. Есть зона ответственности. Если передавать данные в Лос-Анджелес, получается что-то не то, да и провод слишком длинный.

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

Сети бывают локальные, районные, городские и глобальные. Лектор прочитал это с ужасом. Не верьте. Сети бывают локальные и глобальные.

С точки зрения того, какие задачи нам нужно решать, есть два варианта — абоненты подключены к одной СПД, и к разным. Как только мы начинаем иметь дело с совокупностью СПД, возникает вопрос «Кто все эти люди?». Отправитель должен знать, кто есть получатель. Третий пункт — идентификация абонентов сети (назовем ее глобальной), а также маршрутизация. Теперь мы можем доставить любые данные из одной машины в другую. Мы договорились о правилах пересылки между различными СПД. Чего не хватает?

Первый подход — сеть с разделением каналов. Есть канал, который способен надежно передать данные. Абонент обращается к сети и запрашивает канал к другому абоненту. Каналов становится на 1 меньше, никто другой этим каналом пользоваться не может. Никто до этого абонента достучаться не может, передача идет между двумя абонентами. Аналог — телефонная сеть. Можно купить 5 каналов и разговаривать 5 ртами и 5 ушами. Про это говорить мы особо не будем. Такие вещи возможны только когда у нас сравнительно немного абонентов в СПД и они относительно редко осуществляют передачу данных. Существует проблема исчерпания каналов между телефонными станциями.

Второй подход — сеть с разделением пакетов. Ограничение на объем единовременно передаваемых данных. Если нужно передать больше, чем один пакет, передаем их много. Есть управление передачей пакетов — можно сейчас передавать данные по среде или нет. Условно — канал один на всех, но сами данные режутся на части, именуемые пакетами. Эти пакеты передаются по СПД в определенное время. Главное отличие от первого подхода — речь идет о постоянном обмене данными между абонентами. Если среда занята — чуть-чуть подождем и передаем. А в Бутово бывает невозможно дозвониться в течение 3 часов. Говорить о гарантированном времени передачи не приходится, хотя очень хочется. Будем говорить о сетях с разделением пакетов, потому что уже на уровне 2 практикуется использованией сетей с разделением пакетов.

Был проект, когда на сетевой шнур надевалась специальная машинка, регулирующая передачу, в результате — нулевой уровень конфликтов при определенной загрузке. Но падает производительность.

Отправитель отослал несколько пакетов. Получатель получил не все. Должно быть предусмотрено место, где написано, что это первый пакет, это второй, а это третий. Задача не решается средствами третьего уровня. Нужно ввести понятие потока данных, внутри которого возможно понять, какой кусок данных за каким следует. Также возможна проблема дублирования пакетов.

Четвертый пункт — потоки данных. Две задачи — обеспечить надежность, чтобы данные, которые ушли, они же и пришли, чтобы они не попортились, не пропали. Сюда относится и целостность. Вторая задача — манипуляция потоком данных. Мы должны отличать несколько потоков данных, которые идут от одного абонента к другому. Также возможна ситуация, когда у отправителя быстрый компьютер и быстрая сеть, а у получателя медленный пентиум и медленная сеть. Кто угодно может передавать что угодно кому угодно. Что еще нужно?

Пятый пункт — интерпретация.

Свойство первое — независимость уровней. Если мы решили задать, каким образом данные передаются по среде — привязываем к лапке голубя, передаем сигналом по проводам и т.п., то, когда встает задача посмотреть, как интепретировать данные, можно забыть, что среда передачи была голубем, проводом, радиоканалом и т.д. Есть протокол Ethernet, он может использовать много разных вещей — толстый и тонкий коаксиал, витая пара и т.д. У некоторых умельцев «свои способы» обжимки витой пары с перекрестным использованием. Гигабитная карта работать откажется. У витой пары 6 категории отдельные пары выложены на «полочки», то есть там гарантировано разделение пар. Если есть Ethernet, то как он реализован на уровне 1 — не важно. Поднимемся на уровень выше, где идентификация абонентов глобальной сети. Среды передачи данных разнородны, но у каждой машины есть свой адрес, и есть алгоритм маршрутизации. И это не учитывает, что есть разные СПД. Пользуясь Интернетом, мы задействуем целую пачку различных сред. ADSL, кабель, спутник, кабель оптоволоконный на дне океана и пр. Мы пользуемся одним протоколом, не думая, как бегают пакетики.

Речь идет о контроле потоков данных. Нам не важно, как шли пакеты. У IP есть отправитель и получатель. Когда мы переходим на уровень интепретации данных, не важно, как они получены, хоть из файла или набитые руками.

Мы говорим о сети с разделением пакетов, и не важно, что на каждом уровне пакеты — разные сущности. Есть среды, например ATM, где есть понятие пакета. Рассмотрим Ethernet. На аппаратном уровне — 8 проводов. Используется дифференциальный манчестерский код. Передаем реально высокий и низкий уровень сигнала. А нужно передавать пакеты. Когда мы принимаем решение о передаче пакетов, нужно обеспечить, чтобы непрерывный поток нулей и единиц дробился на пакет. Мы уславливаемся о наборе нулей и единиц, которая будет означать, что это пакет. Будут и другие поля, о которых лектор не помнит. Например, будет конец этого пакета, длина, контрольная сумма, должен быть идентификатор адресата. Таким образом к нашей цифре 3, которую мы передаем, добавляется много служебных данных — маркер начала фрейма, получатель, адресат, контрольная сумма, длина и прочее. Они либо паразитные, либо служебные, в зависимости от того, что мы хотим. Такая же штука происходит, когда мы переходим на следующий уровень. Мы хотим передать что-то по проводу, к этому чему-то мы прилепляем идентификатор начала фрейма (это даже не нули и единицы, а что-то другое) и прочие служебные данные. Только внутренняя часть является полезной информацией. Рассмотрим ее. На третьем уровне (сетевом) у нас есть опять же отправитель и получатель (уже в глобальной адресации) и другие служебные данные, а также payload — полезные данные. На четвертом уровне опять же есть служебные данные — идентификатор потока, пакета в потоке и прочая служебная информация, и опять payload — полезные данные. Даже в них есть служебные данные. По дороге в провода на нижний уровень на них налипло много всего. Это свойство — инкапсуляция. Посередине данные попилили на куски, которые потом надо собрать.

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

Первый уровень — аппаратный. В Циске он игнорируется. Второй — физический (MAC). Третий — сетевой. Четвертый — транспортный. Пятый — прикладной.

Лектор взял на себя смелость изобрести все это по-новому. ISO/OSI — альтернативный протокол, даже постоянно обновляется. В нем 7 уровней. Принято считать, что 4 уровень разделяется на 2 — это неправда. TCP/IP нельзя попилить на уровни ISO/OSI. Была одна реализация ISO/OSI. Потом им стало стыдно.

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


UNИX, осень 2008


Лекции

01 02 03 04 05 06 07 08 09 10 11 12


Календарь

Октябрь
01 08 15 22 29
Ноябрь
05 12 19 26
Декабрь
03 10 17
Семинары

01 02


Календарь

Сентябрь
01
Ноябрь
02


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы