Различия между версиями 65 и 66
Версия 65 от 2008-07-04 21:44:25
Размер: 42335
Редактор: PavelSutyrin
Комментарий:
Версия 66 от 2008-07-04 21:44:41
Размер: 42347
Редактор: PavelSutyrin
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 141: Строка 141:
----
Строка 146: Строка 147:
----

Теория построения сетей

Считаю текст недостаточно расшифрованным, не хватает структуры из пяти частей, как было на доске. -- FrBrGeorge 2008-07-04 11:15:54 Были использованы все данные, доступные из моих конспектов и из конспектов eSyr. Поскольку существует уже версия, переведенная на русский язык, считаю нецелесообразным начинать работу с аудиозаписью до тех пор, пока не будет выяснено мнение относительно вышеуказанной "новой" версии --ArtemSerebriyskiy 2008-07-04 16:10:00

Выложил перевод *второй* раз. В связи с пожеланиями вышестоящего руководства, текст подвергся сильной реструктуризации. --GeorgeTarasov 2008-07-04 17:45:14

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

Сегодня вечером пройдусь по этому разделу с аудиозаписью в руках, чтобы убедиться в точности передачи всего сказанного и иметого ввиду. У меня и бумажный конспект есть :) --PavelSutyrin.


{00:02:00} Давайте мы не будем делать вид, что мы совсем уж ничего не знаем про линукс, а начинать с такого состояния, когда человек правдами или неправдами взгромоздил линукс на свою машину, попользовался им, то есть потыкал кнопочками в разные места, и в какой-то момент ему стало интересно, а что же происходит, когда он жмет на кнопку "настроить сеть" и сеть сама настраивается.

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

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

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

Тем не менее, две задачи решается. Физического носителя и представления данных в этом носителе. Итак

  • Носитель данных
    • Физические характеристики
    • Представление данных в нём

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

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

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

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

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

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

Итак:

  • Интерфейс подключения СПД к компьютеру
    • подключение СПД к компьютеру
    • дисциплина передачи данных двумя и более компьютерами

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

  • Организация сети
    • перенумеровать все компьютеры
    • маршрутизация

{00:14:20}

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

Ни у кого нет идей, что еще стоит сделать?..

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

Если кто когда пользовался, наверное никто не пользовался из здесь присутствующих, кроме двух человек, что-нибудь скачивал по модему с BBS когда-то очень давно, да вот, некоторые хихикают, значит пользовались, то вы могли помнить такую ситуацию, вы скачиваете файл, а файл скачивается битый, вот этот zip-архив не раскрывается, это как раз та самая ситуация, когда задачи, когда у нас встают на этом этапе, просто не решены. У нас есть способ связаться между любыми двумя машинами, мы это делаем, но мы не проверяем, насколько качественно происходит передача. Я бы сказал, что речь идет о работе с каналом передачи данных. То есть фактически мы забываем, что у нас есть какой-то маршрут и компьютеры перекидывают друг друг эти самые массивы данных и мы имеем канал, открытый между отправителем и получателем. Опять таки, если я напишу тут канал, я начну вас пудрить вам мозги, кажется в ISO/OSI есть канальный уровень, и он где-то не здесь. Короче, давайте не думать, я напишу что-то вроде "сеанс передачи данных", какие еще слова бывают в русском языке?..

Вообще-то он так и называется, транспортный (между нами). Напишу слово "доставка". Задачи доставки у нас на самом деле, как всегда, две. Когда я говорил про то, что данные должны быть доставлены в целости и сохранности, я на самом деле (там даже три, но будем считать, что две, для красоты, здесь везде по две). Есть два способа нарушить эту самую целость и сохранность. Первый способ -- это потерять по дороге, или попортить. Есть и такой изощренный способ, когда вы отправляете один массив данных, а приходит два. Ну, мало ли, что там где сдублировалос по ходу. Ну да, где-то, какое-то устройство данные послало, потому оно подумало, что случилась ошибка и еще раз послало, а на самом деле ошибки не случилось. Это проверка целостности, сюда же относится надежность, вобщем, на этом месте нужно было написать английское слово security, которое означает все сразу: целостность, надёжность. Именно security, в том смысле, что именно надёжность. Пусть будет целостность, это integrity, и там есть еще, тут нет такого общего слова. Качество доставки, вот, да, QoS, качество. Вот в этом понятие качества доставки входят все три компонента: чтобы доставилось то, что доставилось, во-вторых, чтобы мы как отправитель знали, что оно доставлено, чтобы мы имели понятие о том, произошла доставка или нет, принял получатель то что мы ему передавали, или не принял, а если не принял, чтобы он на обязательно сообщил, что не принял, дескать, передавай еще раз, и третий компонент, который имеет отношение к качеству доставки, это отслеживание состояния канала. Смотрите какая ситуация: допустим у нас с этой стороны есть какая-то очень мощная машина, которая умеет гигабайтами загаживать сеть, ну, мегабайтами, и у нас в эту мощную машину включено ни много ни мало, десятигигабитный такой оптоволоконный кабель, и мы очень бодро туда наливаем немыслимые мегабайты информации, которые идут-идут-идут-идут-идут по нашему маршруту и упираются в какой-то там несчастный модемный... вот. Было бы неплохо не только сообщать отправителю, что, вообще говоря, его данные никуда не пришли и произошла ошибка по дороге, но еще отслеживать, скажем так параметры качества этого самого виртуального канала, организованного между двумя компьютерами. Это все имеет отношение к слову качество.

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

  • Доставка
    • качество доставки (целостность, подтверждение, состояние канала (в т.ч. скорость))
    • управление потоками данных

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

  • интерпретация всего этого безобразия

Что это я такое нарисовал:

  1. Носитель данных
    • Физические характеристики
    • Представление данных в нём
  2. Интерфейс подключения СПД к компьютеру
    • подключение СПД к компьютеру
    • дисциплина передачи данных двумя и более компьютерами
  3. Организация сети
    • перенумеровать все компьютеры
    • маршрутизация
  4. Доставка
    • качество доставки (целостность, подтверждение, состояние канала (в т.ч. скорость))
    • управление потоками данных
  5. интерпретация всего этого безобразия

Мне кажется, что любой человек, который сдавал сетевые технологии узнает в этих пяти уровнях наш любимый четырехуровневый TCP/IP-стек протоколов. Четырехуровневый он традиционно потому, что первый и второй уровни почему-то объединяются. Почему, я не в курсе. Давайте мы попробуем прежде чем назовём эти уровни своими именами, попробуем пронаблюдать две довольно забавные характеристики.

Первая характеристика -- это независимость уровней, очень важная вещь. Смотрите какая штука. После того как я решил задачу, каким носителем данных я буду пользоваться при передаче этих данных от компьютера к компьютеру, я могу об этом не задумываться. Пример: у нас есть уровень два, то есть интерфейсный уровень под названием Ethernet, он может работать при помощи коаксиального кабеля толстого, коаксиального кабеля тонкого, витой пары 5 категории, витой пары 6 категории, 4а, по 3 категории их можно гонять, но... как сказать... да, радио-Ethernet бывает, между нами говоря. Фактически, в тот момент, когда мы в компьютер втыкаем Ethernet-карточку, мы забываем про то, каким способом эти самые Ethernet-карточки были связаны. Точно также поднимаемся на уровень выше. мы абсолютно не обращаем внимания на тот факт, каким именно интерфейсом, каким именно способом был приклеен компьютер к среде передачи данных, мы вообще не обращаем внимания на то, что есть какие-то среды передачи данных. У нас есть интернет, и Ethernet там использовался, или не Ethernet, IP-же можно поверх чего угодно сделать, поверх терминального соединения, вот залогинились вы по модему, да, дозвонился по модему друг другу, на одной стороне запустил pppd, на другой ppp клиент -- и вперед. Или там, не знаю, на чем еще можно сделать ip, кроме Ethernet, на IPX, н-да. Ну еще я раньше рассказывал про всякие Token Ring'и, но, по-моему это все не выжило. То есть мы, вообще говоря, забываем то, каким способом передаются данные между компьютерами, потому что, нам важно что они передаются, вот один отправил как-то, голубиной почтой, я забыл про голубиную почту, другой получил. (rfc149, 2549, где описывается QoS, там взвешивается голубь перед отправкой, взвешивается голубь при получении, все как надо). И так далее, когда мы организуем канал связи между компьютерами, мы забываем про маршрут. Вот у нас, условно говоря, дырочка в которую мы складываем данные, вот у нас дырочка, из которой мы вынимаем. Точно также когда мы занимаемся интерпретацией, допустим просматриваем веб-страницу, нам вообще говоря, как людям которые смотрят на веб-страницу, вообще говоря, все равно, какие там сокеты-шмокеты были открыты, что вообще за подкладка лежит на уровне доставки. Мы точно знаем, что доставка надежная и этого нам хватает. Это очень важное свойство, свойство независимости уровней друг от друга. Если мы каким-то образом решили задачу более низкоуровневую, то задачу более высокоуровневую можем спокойно решать в отрыве от нее.

  • Физический (наш 1 и 2)
  • Сетевой (наш 3)
  • Транспортный (наш 4)
  • Прикладной (наш 5)

Где-то я прочел замечательную фразу, что во всех учебниках по сетевым протоколам обязательно упоминается модель ISO/OSI главным образом для того, чтоб унизить ее создателей. Хотя там есть несколько забавных решений, например, уровень представления данных вот сюда вот (между транспортным и прикладным) вкручен, это довольно забавно. Но, с другой стороны, это уже теоретизация, понятно, что никто перекодировкой до того как вы интерпретируете данные, не будет заниматься.

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

Последние сколько-то, наверное, нужно отнести в следующий раздел --PavelSutyrin

{00:30:20}


  • прежний вариант перевода с этой странички:

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

1. Определение типа носителя данных, то есть способа передачи (возможно, по проводам, по радио, или, к примеру, голубиная почта). Не исключено, что при больших размерах сети этих типов может быть несколько. Пусть определено, что данные в сети передаются по 4 проводам. Тогда необходимо также выяснить, как выглядит этот носитель, какие его физические характеристики, и как выглядит представление данных в носителе. К тому же надо отличить факт передачи от его отсутствия:допустим, наличие напряжения --- есть, отсутствие --- нет.

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

2. Обеспечение интерфейса между компьютером и средой передачи данных.

Вообще говоря, после решения этих двух задач уже можно обмениваться данными между двумя компьютерами. Но изначально планировалось обеспечить средой передачи данных множество машин. Для решения этой проблемы надо разработать дисциплину,то есть организацию передачи данных. Даже если к среде подключены только два компьютера, то всё равно надо договориться, например, о том, как выглядит отсутствие данных (как абонент поймет, что сейчас передача не идет). Например, для начала передачи можно использовать некие последовательности из 0 и 1. Когда же компьютеров несколько, то надо точно указывать адресата. Также дисциплина должна обеспечивать одновременную передачу от нескольких компьютеров друг другу.

Достаточно очевидно, что задача объединения большого количества компьютеров в сеть еще не решена. Ее можно охарактеризовать как

3. Уровень организации сети. Здесь две подзадачи:

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

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

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

  • доставка в целости и сохранности(контроль самих данных);
  • управление потоками данных (идентификация разных потоков,
    • также надо следить, чтобы они не перемешивались);
  • отслеживание состояния канала передачи данных.

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

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

5. Интерпретация полученных при передаче данных, которые, как правило, имеют свою семантику.


  • а вот теперь можно сливать ;) Собственно говоря, нужно обновить нижний текст с учётом верхнего. --PavelSutyrin.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

49

1

1

1

1

ArtemSerebriyskiy,PavelSutyrin,GeorgeTarasov


PspoClasses/080702/01Theory (последним исправлял пользователь VsevolodKrishchenko 2008-08-20 22:35:34)