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

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

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

Мы черезчур поспешно добрались до уровня сетевого, на котором решаются две задачи: задача глобальной идентификации и задача доставки пакета, маршрутизацуии,в случае, если отпр. и получатель отделены посл. разл. СПД. Этот уровень TCP/IP носит название сетевой.

Лектор напоминает, что если бы СПД была одна, и она была бы Eth, то этого уровня не было бы. Есть некий мезанизм порождения уник, eth-идент., который моджно было бы исп., и задеёствовать для идент. устройств именно из уник. идент, то есть MAC-адреса.

Необх. ещё одного идент. также дикт. незав. уровней.

Для идент. на сетевом уровне вводится понятие IP-адрес. Он состоит из 4 байтов, эти 4 байта можно записывать в 10-м виде через точку: 127.0.0.1, их же можно записывать в 16-ричном виде, в 2-ном (только долго пистаь придётся), и принято различать... какждый такой адрес присв. некоему сетевому интерфейсу, то есть, той дырке, той части системы, через которую пакеты переходят на уровень сетевой. Тут может происх. сборка-расборка пакетов.

Принято разл. в IP-адресе адрес компьютера и адрес сети. Адрес сети и адрес абонента сети. Поначалу предп., что сетей будлет 256 штук, поэтому считались, что первый байт сети. Потом выяснилось, что то отфонарное деление и реальные сети содерж. мало компьютеров, поэтомк придумали деление сетей на классы. Система там очень простая: A — первый бит адреса 0, B — 10, С — 110. A — один байт на адр. сети, B — два байта на адр. сети, C — три байта. Но это деление тоже оказалось малоосмысленным, и все на это забили. В альте, например, нетмаск выдаётся /24, даже если адрес 10.х.х.х.

Поск. не все умеют корректно и правильн обр. дырявые маски, и они мало где имп., то обычно маска задач тся количеством единиц в ней: в адресе 210.111.18.2/24 маска 255.255.255.0 и подсеть 210.111.18.0.

...

Поск. мы всех перенумеровали, то теор. один абонент может передать другому данные. Но тут возн. неск. вопросов:

Откуда я знаю, что я такой адрес? От провайдера. А откуда у провайдера этот адрес? Наверное, есть орган (IANA), которая раздаёт адреса по-крупному. Например, 210.x.x.x выдан Китаю (?), и если спросить у неё про конкр. адрес, то она не ответит, скажет, все вопросу к Китаю. Там уже пошлют к провайдеру, там ещё к одному и так далее. Идея понятна: сущ. некая чисто адм. иерарзия по разд. адресов в порстю. интернета. Эта иерарх. держится на адм. и отчасти тополог. закономерностях — скажем, связность между двумя адресами 210.х.х.х выше, чем между ними и адресами из другой подсети.

Соотв., адр. получается не кто первый занял, а есть организация.

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

Есьт ещё одна проблема: IP-шники начинают кончаться, и IANA выдаёт их неохотно.

Ещё одна типичная ситуация: подключение к интернету непостоянное.

Две посл. проблем решаются след. образом:

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

На заре становления факультетского интернета были IBM RT, которые приезали неизв. откуда. Приехали они с чистыми зардами, но на одной из машин оказался бэкап, с которого как-то развернули систему, и олгое время адреса в у них были такие же, как у MIT. Поск. был NAT, то никто об этом не знал, но на сайт MIT'а было нельзя.

Чтобы такой проблемы не возникало, нек. диапазоны адресов отведены под лок. сети:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 169.254.0.0/16
  • 192.168.0.0/16

Любой из них можно исп. для адр. в лок. сетях беспроблемно.

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

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

Соср. на одном из всего этого: есть абонент сети, и ... за это отвечате сетевая маска. Есть довольно простой способ (это часть сет. протокола), принадлежит ли абонент лок. сети и, след. сдотупен в пределах СПД, или же он её не принадлежит и с ним надо что-то делать: накл. маску на адреса отпр. и получателя и если они совп., то они лежат в пределах лок. сети. Что в этом случае делать: заворач. в eth-фрейм и посылаем, поск. знаем его идент, MAC-адреса. А откуда мы его знаем? Есть СПД, где заранее известны все идентификаторы, это статические сети, напр. в рамках выч. кластера. В реальной жизни бывает всё не так. В общем случае нам неизвестен интерфейсный идент. абонента, известен только IP. Для того, чтобы выполн. операцию нах. соотв. между MAC-адресами и IP-адресами (инт. и сетевым адресами), мы должны иметь некую табл. соотв, и сущ. протокол (ARP), который как раз занимается переводом из адреса уровня сетевого в адрес уровня интерфейсного. Там богатый спеутр верзхних и нижних уровней, и, в частности, переводит из IP в MAC. Поддержка ARP — неотъемлемое свойство практ. любой машины, подкл. к интернету. Протокл ARP широковещетельный, его пакеты напр. сразу всем (в поле MAC-адреса стоят 1), и тип этого пакета — ARP-запрос. В нём написано? "Чей такой вот IP?". Этот пакет все получ., и та машина, чей IP, отвечает: "Это ARP-ответ", поск. адрес содержится в фрейме. После этого таблица пополняется.

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

Сразу, чтобы было понятно, наша универс. утилита ip это часть пакета iproute2, которая занимается чёрт знает всем, и, в частности, маршрутизацией. У утилиты ip есть команада neighbour. команда ip n выдаст ARP-таблицу, для тех, кто ещё помнит, есть arp -a. Внимательное изучение док. по ip, можно узнать, что можно прописывть статические ARP-записи. Можно ещё в этой таблице прописать чужой IP-адрес. Чем это отличается от alias? Чаще всего это бывает в след. ситуациях: есть интернет, по нему есть ppp-канал, за которым машины с таой же подсетью, как и ваша. В этом случае на маршрутизаторе прописывается ещё одна arp-запись.

Что касается маршрутизации: здесь есть две проблемы. Первая проблема состоит в очень простом вопросе: мы выяснили, что наш пакет на ур. IP, мы его зотим посл. абоненту, который не находится в нашей лок. сети. Что дальше? Видимо, послать его куда-то, причём в надежде, что оно пошлё ещё длальше, и ещё дальше и так далее. В нашей сети не все йогурты... не все абоненты одинаковы. Это значит, что мы должны взять за правило все пакеты не для нашей сети посылать опр. машине. Это и есть акт маршрутизации. Очень часто бывает, что это пластиковая мыльница, которая лампочками мигает и маршрутизирует. При этом что нужно сделать на клиенте: на ней нужно созд. спец. запись, опять таки, внутрит таблиц ядра, которая именровала эту машину маршрутизатором для. Есть команда ip route, которая позв. просмотреть все маршруту. Выполнив её...

Возвращаемся к вопр. идентификации. Мы помним, что все стеевые инт. можно просмотреть командой ip link. С помощью ip addr можно просмотреть список всех интерфейсов и всю инф., касающуюся сетового уровня, присв. этим инт. По краней мере, с точки зрения линукса, должен бьыть инт., и на него уже навеш. параметры уровня сетевого. Для того, чтобы добавить адр. к инт, достаточно сказать ip addr add 210.11.70.8/24 dev eth0.

Некоторые узнают в эжтом синтаксис ifconfig. Естест., поск. ip это в первую очередь замена ему, и умеет всё и ещё больше. Только в ifconfig для доб неск. адресов необх было созд. вирт. интерфейсы... проделывать некое упраженение.

...

За каждую лок сеть, которая навешана на инт., будет отвечать запись в таблице маршр., примерно след. содержания: ... сеть такая-то, передавать через то-то.

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

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

В случае соед. точка-точка, нам вообще не нужно польз. механизмом сеть-подсеть. Если это подкл. не точка-точка, то сколько тогда надо бит? 2, не 1. Сеть /30. Это к тому, наск. максимум подсетей можно разрезать подсеть класса C: не на 256, и не на 128, а на 64, или даже 63.

АЛг. маршр. достаточно прост: мы просм. строчки таблицы маршрутизации, где сначала абоненты лок сети, потом записи вида пересылки через абонентов и посл. будет по умолч. Это всё станд. алг. маршрутизации, если не исп. хитрые штуки ip route. Ибо не зря iproute2. Ибо такой способ маршр. весьма неэфф в случае сложной маршрутизации. В случае настр. простой маршр. он вполне хорош.

Напеример, в случае, когда нужно предост. разл. скорость доступа для разных категорий польз., для опр. того, куда пересылать пакет, нужно изучать адрес отпр., а не адрес получателя. Тут мы наталк. на ситуапцию, что в адресе отпр. ничего про это не гвоорится. Эта задача одна из первых возн. в задаче принуд. маршр., оа называется source-based routing. Разумеется, раз пошла такая пьянка, то пошли всякий примеси. Напр., пакеты одного класса можно пересылать через быстрый и онкий канал, другого — через тонкий и медленный. Или если пакет из привелиг. сеанса, от обр. его привелигерованно. Вообще говоря, можно подменить ст. процесс маршр., маршр. по правилам какое сост. в системе и какими свойствами обл. приехавший пакет.

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

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

В реальности имеются некие облачка (внутри которых уже очень часто бывают деревья), и между ними неплохо было бы устр. какую-то сеть, и поддерживать инф. о

  • Достижимости
  • Стоимости этого дела
  • Уметь в случае пропадения достижимости гибко перестраивать этот маршрут

С точки зрения деревообр. кусочка это выгл. так: сначала передавали их через одно место, потом через другое.

Если бы не было такой стратегии разю. интернета на авт. системы и отслеж. достижимости, то никакого интернета бы не было. Эта проблема это тоже проблема маршрутизации. Перваыя проблема — марш. изнутри, вторая — марш. снаружи.

Существует неск. протоколов разн. степени замшелости, которые опис. поведение авт. систем: BGP, RIP, RIP2, EGP. Реализ. такого протокола есть функция не столько рабочей машины, скорее всего вы даже такую машину не увидите, это очень редкий компьютер, и на нём совсем не обязательно линукс или что-то юникс-подобное. Сущ. прогр. продукты, которые реализ эти протокколы маршрутизации, наиб. известный это Zebra и вырослий из неё ... . Проблема в том, что это вообще не очень часто решающаяся задача, и если юникс-гуру дали такую задачу, то он возьмёт ту же ..., посидит над неё неделю и сделает так, чотбы оно работало. Но есть фирмы, которые занимаются продажей такого железа.

О протоколах этого уровня в след. раз.


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


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

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