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

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

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 1: Строка 1:
-
* '''Диктофонная запись:''' http://esyr.org/lections/audio/uneex_2008_winter/uneex_08_11_05.ogg
+
Мы черезчур поспешно добрались до уровня сетевого, на котором решаются две задачи: задача глобальной идентификации и задача доставки пакета, маршрутизацуии,в случае, если отпр. и получатель отделены посл. разл. СПД. Этот уровень TCP/IP носит название сетевой.
-
= Лекция =
+
-
== Вступление ==
+
-
Мы чересчур поспешно добрались до сетевого уровня TCP/IP, на котором решаются две задачи:
+
-
* задача глобальной идентификации
+
-
* задача доставки пакета, маршрутизации (в случае, если отправитель и получатель отделены последовательностью различных СПД)
+
-
== Идентификация ==
+
Лектор напоминает, что если бы СПД была одна, и она была бы Eth, то этого уровня не было бы. Есть некий мезанизм порождения уник, eth-идент., который моджно было бы исп., и задеёствовать для идент. устройств именно из уник. идент, то есть MAC-адреса.
-
Лектор напоминает, что если бы СПД была одна, и она была бы Ethernet, то этого уровня не было бы. Есть некий механизм порождения уникальности, ethernet-идентификатор, который можно было бы использовать, и задействовать для идентификации устройств - именно из уникального идентификатора, то есть MAC-адреса.
+
-
=== IP адрес ===
+
Необх. ещё одного идент. также дикт. незав. уровней.
-
Необходимость ещё одного идентификатора также диктуется независимостью уровней.
+
-
Для идентификации на сетевом уровне вводится понятие IP-адрес. Он состоит из 4 байтов, эти 4 байта можно записывать в 10-м виде через точку: 127.0.0.1, их же можно записывать в 16-ричном виде, в 2-ном (только долго писать придётся), и принято различать... каждый такой адрес присваивается некоему сетевому интерфейсу, то есть, той дырке, той части системы, через которую пакеты переходят на уровень сетевой. Тут может происходить сборка-разборка пакетов.
+
Для идент. на сетевом уровне вводится понятие IP-адрес. Он состоит из 4 байтов, эти 4 байта можно записывать в 10-м виде через точку: 127.0.0.1, их же можно записывать в 16-ричном виде, в 2-ном (только долго пистаь придётся), и принято различать... какждый такой адрес присв. некоему сетевому интерфейсу, то есть, той дырке, той части системы, через которую пакеты переходят на уровень сетевой. Тут может происх. сборка-расборка пакетов.
-
=== Маска сети ===
+
Принято разл. в IP-адресе адрес компьютера и адрес сети. Адрес сети и адрес абонента сети. Поначалу предп., что сетей будлет 256 штук, поэтому считались, что первый байт сети. Потом выяснилось, что то отфонарное деление и реальные сети содерж. мало компьютеров, поэтомк придумали деление сетей на классы. Система там очень простая: A — первый бит адреса 0, B — 10, С — 110. A — один байт на адр. сети, B — два байта на адр. сети, C — три байта. Но это деление тоже оказалось малоосмысленным, и все на это забили. В альте, например, нетмаск выдаётся /24, даже если адрес 10.х.х.х.
-
Принято различать в IP-адресе адрес компьютера и адрес сети. Адрес сети и адрес абонента сети. Поначалу предположили, что сетей будет 256 штук, поэтому считались, что первый байт сети. Потом выяснилось, что то отфонарное деление и реальные сети содержат мало компьютеров, поэтому придумали деление сетей на классы.
+
-
Система там очень простая:
+
Поск. не все умеют корректно и правильн обр. дырявые маски, и они мало где имп., то обычно маска задач тся количеством единиц в ней: в адресе 210.111.18.2/24 маска 255.255.255.0 и подсеть 210.111.18.0.
-
* A — первый бит адреса 0, один байт на адрес сети
+
-
* B — 10, два байта на адрес сети
+
-
* С — 110, три байта на адрес сети
+
-
 
+
-
Но это деление теперь тоже оказалось малоосмысленным, и все на это забили. В альте, например, выдаётся сетевая маска /24, даже если адрес 10.х.х.х.
+
-
 
+
-
Поскольку не все умеют корректно и правильно обрабатывать дырявые маски, и они мало где используются, то обычно маска определяется количеством единиц в ней: в адресе 210.111.18.2/24 маска 255.255.255.0 и подсеть 210.111.18.0.
+
...
...
-
=== Откуда берутся адреса ===
+
Поск. мы всех перенумеровали, то теор. один абонент может передать другому данные. Но тут возн. неск. вопросов:
-
Поскольку мы всех перенумеровали, то теоретически один абонент может передать другому данные. Но тут возникает несколько вопросов:
+
-
Откуда я знаю, что я такой адрес? От провайдера. А откуда у провайдера этот адрес? Наверное, есть орган (IANA), которая раздаёт адреса по-крупному. Например, 210.x.x.x выдан Китаю (?), и если спросить у неё про конкретный адрес, то она не ответит, скажет, все вопросу к Китаю. Там уже пошлют к провайдеру, там ещё к одному и так далее. Идея понятна: существует некая чисто административная иерархия по раздаче адресов в пространстве интернета. Эта иерархия держится на административных и отчасти топологических закономерностях — скажем, связность между двумя адресами 210.х.х.х выше, чем между ними и адресами из другой подсети.
+
Откуда я знаю, что я такой адрес? От провайдера. А откуда у провайдера этот адрес? Наверное, есть орган (IANA), которая раздаёт адреса по-крупному. Например, 210.x.x.x выдан Китаю (?), и если спросить у неё про конкр. адрес, то она не ответит, скажет, все вопросу к Китаю. Там уже пошлют к провайдеру, там ещё к одному и так далее. Идея понятна: сущ. некая чисто адм. иерарзия по разд. адресов в порстю. интернета. Эта иерарх. держится на адм. и отчасти тополог. закономерностях — скажем, связность между двумя адресами 210.х.х.х выше, чем между ними и адресами из другой подсети.
-
Соответственно, адресация получается не кто первый занял, а есть организация, за это отвечающая.
+
Соотв., адр. получается не кто первый занял, а есть организация.
-
=== Локальные IP ===
+
Второе. Есть некий шаблон поведения, который, по крайней мрее, не требует того, чтобы для каждого из таких комп. рег. IP-адрес, а в ряде случаев такое даже не нужно. Например, если у нас есть комп. класс, от при добавлении десятка компьютеров было бы очень неудобно ходить к провайдеру и регистрировать 10 адресов. Более того, в ряде случаев было бы хорошо скрывать диапазон адресов, исп. в локальной сети.
-
Есть некий шаблон поведения, который, по крайней мере, не требует того, чтобы для каждого из таких компьютеров регистрировался IP-адрес, а в ряде случаев такое даже не нужно. Например, если у нас есть компьютерный класс, от при добавлении десятка компьютеров было бы очень неудобно ходить к провайдеру и регистрировать 10 адресов. Более того, в ряде случаев было бы хорошо скрывать диапазон адресов, используемых в локальной сети.
+
-
Есть ещё одна проблема: IP-шники начинают кончаться, и IANA выдаёт их неохотно.
+
Есьт ещё одна проблема: IP-шники начинают кончаться, и IANA выдаёт их неохотно.
Ещё одна типичная ситуация: подключение к интернету непостоянное.
Ещё одна типичная ситуация: подключение к интернету непостоянное.
-
Две последние проблемы решаются следующим образом:
+
Две посл. проблем решаются след. образом:
-
* Существует технология подмены IP-адреса, про неё мы будем говорить, когда будем говорить про IP-уровень. Суть этой технологии (NAT) очень простая: есть компьютер с неважным IP-адресом, и посылает пакет в интернет, пакет проходит через некое устройство, которое запоминает историю пакета и его уникальные характеристики, подменяет IP и посылает наружу, когда приходит ответ, происходит обратная операция. Когда используют NAT, адреса в локалке никого не волнуют. Для того, чтобы это дело более менее ввести в какое-то русло...
+
* Сущ. тезнология подмены IP-адреса, про неё мы будем говорить, когда будем говорить про IP-уровень. Суть этой технологии (NAT) очень простая: есть компьютер с неважным IP-адрсеом, и посылает пакет в интернет, пакет прозоидт через некое устр., которое запоминает ист. пакета и его уник. хзар-ки, подменяет IP и посылает наружу, когда приходит ответ, происх. обратная операция. Когда исп. NAT, адреса в локалке никого не волнуют. Для того, чтобы это дело более менее ввести в какое-то русло.
-
На заре становления факультетского интернета были IBM RT, которые приехали неизвестно откуда. Приехали они с чистыми хардами, но на одной из машин оказался бэкап, с которого как-то развернули систему, и долгое время адреса в у них были такие же, как у MIT. Поскольку был NAT, то никто об этом не знал, но на сайт MIT'а было нельзя.
+
На заре становления факультетского интернета были IBM RT, которые приезали неизв. откуда. Приехали они с чистыми зардами, но на одной из машин оказался бэкап, с которого как-то развернули систему, и олгое время адреса в у них были такие же, как у MIT. Поск. был NAT, то никто об этом не знал, но на сайт MIT'а было нельзя.
-
Чтобы такой проблемы не возникало, некоторые диапазоны адресов отведены под локальные сети:
+
Чтобы такой проблемы не возникало, нек. диапазоны адресов отведены под лок. сети:
* 10.0.0.0/8
* 10.0.0.0/8
* 172.16.0.0/12
* 172.16.0.0/12
* 169.254.0.0/16
* 169.254.0.0/16
* 192.168.0.0/16
* 192.168.0.0/16
-
Любой из них можно использовать для адресации в локальных сетях без проблем.
+
Любой из них можно исп. для адр. в лок. сетях беспроблемно.
-
При этом в настоящем интернете такие адреса встречаться не должны, а если и встретятся, то первый попавшийся маршрутизатор обязан такой адрес выкинуть. Ещё их обозначают как интранет. Интранет — такое слово без определения, и им называет много чего. И если говорят интранет-адрес, то скорее всего имеют адрес из этих диапазонов.
+
При этом в наст. интернете такие адреса встр. не должны, а если и встр., то первый попавшийся маршр. обязан такой адр. выкинуть. Ещё их обозн. интранет. Интранет — такое слово без определние, и им называет много чего. И если говорят интранет-адрес, то скорее всего имеют адрес из этих диапазонов.
-
Поскольку очевидно некое неудобство использования адресов в привычном виде, давно разработана система раздачи адресов, называется IPv6. Она немного сложнее, там много вопросов решается.
+
Поск очевидно некое неуд. исп. адресов в привычном виде, давно разраб. система раздачи адресов, наз. IPv6. Она немного сложнее, там много вопросов решается.
-
== Доставка пакета ==
+
Соср. на одном из всего этого: есть абонент сети, и ... за это отвечате сетевая маска. Есть довольно простой способ (это часть сет. протокола), принадлежит ли абонент лок. сети и, след. сдотупен в пределах СПД, или же он её не принадлежит и с ним надо что-то делать: накл. маску на адреса отпр. и получателя и если они совп., то они лежат в пределах лок. сети. Что в этом случае делать: заворач. в eth-фрейм и посылаем, поск. знаем его идент, MAC-адреса. А откуда мы его знаем? Есть СПД, где заранее известны все идентификаторы, это статические сети, напр. в рамках выч. кластера. В реальной жизни бывает всё не так. В общем случае нам неизвестен интерфейсный идент. абонента, известен только IP. Для того, чтобы выполн. операцию нах. соотв. между MAC-адресами и IP-адресами (инт. и сетевым адресами), мы должны иметь некую табл. соотв, и сущ. протокол (ARP), который как раз занимается переводом из адреса уровня сетевого в адрес уровня интерфейсного. Там богатый спеутр верзхних и нижних уровней, и, в частности, переводит из IP в MAC. Поддержка ARP — неотъемлемое свойство практ. любой машины, подкл. к интернету. Протокл ARP широковещетельный, его пакеты напр. сразу всем (в поле MAC-адреса стоят 1), и тип этого пакета — ARP-запрос. В нём написано? "Чей такой вот IP?". Этот пакет все получ., и та машина, чей IP, отвечает: "Это ARP-ответ", поск. адрес содержится в фрейме. После этого таблица пополняется.
-
=== Нужна ли пакету маршрутизация ===
+
-
Сосредоточимся на одном из всего этого: есть абонент сети, и ... за это отвечает сетевая маска.
+
-
Есть довольно простой способ проверки (это часть сетевого протокола), принадлежит ли абонент локальной сети и, следовательно, доступен ли в пределах СПД, или же он ей не принадлежит и с ним надо что-то делать. Накладываем маску на адреса отправителя и получателя, и, если они совпадают, то они лежат в пределах локальной сети.
+
Таблица соотв. динамическая, записи в ней живут недолго, буквально минуту или неск. минут. В линуксе, по кр. мере в утилите ip эпоказ., наск. запись старая.
-
=== Случай 1. Локальная сеть. ARP ===
+
Сразу, чтобы было понятно, наша универс. утилита ip это часть пакета iproute2, которая занимается чёрт знает всем, и, в частности, маршрутизацией. У утилиты ip есть команада neighbour. команда ip n выдаст ARP-таблицу, для тех, кто ещё помнит, есть arp -a. Внимательное изучение док. по ip, можно узнать, что можно прописывть статические ARP-записи. Можно ещё в этой таблице прописать чужой IP-адрес. Чем это отличается от alias? Чаще всего это бывает в след. ситуациях: есть интернет, по нему есть ppp-канал, за которым машины с таой же подсетью, как и ваша. В этом случае на маршрутизаторе прописывается ещё одна arp-запись.
-
Что в этом случае делать: заворачиваем в ethernet-фрейм и посылаем, поскольку знаем его идентификатор, MAC-адреса. А откуда мы его знаем? Есть СПД, где заранее известны все идентификаторы, это статические сети, например в рамках вычислительного кластера. В реальной жизни бывает всё не так. В общем случае нам неизвестен интерфейсный идентификатор абонента, известен только IP.
+
Что касается маршрутизации: здесь есть две проблемы. Первая проблема состоит в очень простом вопросе: мы выяснили, что наш пакет на ур. IP, мы его зотим посл. абоненту, который не находится в нашей лок. сети. Что дальше? Видимо, послать его куда-то, причём в надежде, что оно пошлё ещё длальше, и ещё дальше и так далее. В нашей сети не все йогурты... не все абоненты одинаковы. Это значит, что мы должны взять за правило все пакеты не для нашей сети посылать опр. машине. Это и есть акт маршрутизации. Очень часто бывает, что это пластиковая мыльница, которая лампочками мигает и маршрутизирует. При этом что нужно сделать на клиенте: на ней нужно созд. спец. запись, опять таки, внутрит таблиц ядра, которая именровала эту машину маршрутизатором для. Есть команда ip route, которая позв. просмотреть все маршруту. Выполнив её...
-
Для того, чтобы выполнить операцию нахождения соответствия между MAC-адресами и IP-адресами (интерфейсным и сетевым адресами), мы должны иметь некую таблицу соответствий, и существует протокол (ARP), который как раз занимается переводом из адреса уровня сетевого в адрес уровня интерфейсного. Там богатый спектр верхних и нижних уровней, и, в частности, переводит из IP в MAC. Поддержка ARP — неотъемлемое свойство практически любой машины, подключенной к интернету. Протокол ARP широковещательный, его пакеты направляются сразу всем (в поле MAC-адреса стоят все 1), и тип этого пакета — ARP-запрос. В нём написано? "Чей такой вот IP?". Этот пакет все получают, и та машина, чей IP, отвечает: "Это ARP-ответ", поскольку адрес содержится в фрейме. После этого таблица пополняется.
+
Возвращаемся к вопр. идентификации. Мы помним, что все стеевые инт. можно просмотреть командой ip link. С помощью ip addr можно просмотреть список всех интерфейсов и всю инф., касающуюся сетового уровня, присв. этим инт. По краней мере, с точки зрения линукса, должен бьыть инт., и на него уже навеш. параметры уровня сетевого. Для того, чтобы добавить адр. к инт, достаточно сказать ip addr add 210.11.70.8/24 dev eth0.
-
Таблица соответствий динамическая, записи в ней живут недолго, буквально минуту или несколько минут.
+
Некоторые узнают в эжтом синтаксис ifconfig. Естест., поск. ip это в первую очередь замена ему, и умеет всё и ещё больше. Только в ifconfig для доб неск. адресов необх было созд. вирт. интерфейсы... проделывать некое упраженение.
-
==== ip neighbour ====
+
...
-
В линуксе, по крайней мере мере, в утилите ip показывается, насколько запись старая.
+
-
Сразу, чтобы было понятно, наша универсальная утилита ip это часть пакета iproute2, которая занимается чёрт знает всем, и, в частности, маршрутизацией. У утилиты ip есть команда neighbour. команда '''ip n''' выдаст ARP-таблицу, для тех, кто ещё помнит, есть '''arp -a'''. Внимательное изучение документации по ip, можно узнать, что можно прописывать статические ARP-записи. Можно ещё в этой таблице прописать чужой IP-адрес. Чем это отличается от alias? Чаще всего это бывает в следующих ситуациях: есть интернет, по нему есть ppp-канал, за которым машины с такой же подсетью, как и ваша. В этом случае на маршрутизаторе прописывается ещё одна arp-запись.
+
За каждую лок сеть, которая навешана на инт., будет отвечать запись в таблице маршр., примерно след. содержания: ... сеть такая-то, передавать через то-то.
-
=== Случай 2. Другая сеть ===
+
В случае, когда есть неск. записей, таблица будет просм. след. образом: чем более общая маска, тем позже она будет просм: сначала, записи хост-хост, дальше для маленьких сетей и так далее до записи defaulkt, где маска нулевая.
-
Что касается маршрутизации: здесь есть две проблемы. Первая проблема состоит в очень простом вопросе: мы выяснили, что наш пакет на уровне IP, мы его хотим послать абоненту, который не находится в нашей локальной сети. Что дальше? Видимо, послать его куда-то, причём в надежде, что оно пошло ещё дальше, и ещё дальше и так далее. В нашей сети не все <strike>йогурты</strike> абоненты одинаковы.
+
-
Это значит, что мы должны взять за правило все пакеты не для нашей сети посылать определенной машине. Это и есть акт маршрутизации. Очень часто бывает, что это пластиковая мыльница, которая лампочками мигает и маршрутизирует.
+
Некое утверждение: когда мы гвоорим про адрес сети, мы должны понимать, чтоккак минимум два адреса абонента зарещервированы: адрес абонента не может иметь из всех нулей и из всех единиц. Из нулей — собственно адрес сети, и не может исп., чот же касается адреса, сост. из адреса сети и всех единиц, то это широков. адрес сетевого уровня, broadcast. Кстати сказать, этот параметр, вычисл. из маски, но его можно задавать вручную по-другому.
-
==== Утилита ip ====
+
В случае соед. точка-точка, нам вообще не нужно польз. механизмом сеть-подсеть. Если это подкл. не точка-точка, то сколько тогда надо бит? 2, не 1. Сеть /30. Это к тому, наск. максимум подсетей можно разрезать подсеть класса C: не на 256, и не на 128, а на 64, или даже 63.
-
При этом что нужно сделать на клиенте: на ней нужно создать специальную запись, опять таки, внутри таблиц ядра, которая именовала эту машину маршрутизатором для... Есть команда '''ip route''', которая позволяет просмотреть все маршруты. Выполнив её...
+
-
Возвращаемся к вопросу идентификации. Мы помним, что все сетевые интерфейсы можно просмотреть командой '''ip link'''. С помощью '''ip addr''' можно просмотреть список всех интерфейсов и всю информацию, касающуюся сетевого уровня, присвоенную этим интерфейсам. По крайней мере, с точки зрения линукса, должен быть интерфейс, и на него уже навешивать параметры уровня сетевого. Для того, чтобы добавить адрес к интерфейсу, достаточно сказать '''ip addr add 210.11.70.8/24 dev eth0'''.
+
АЛг. маршр. достаточно прост: мы просм. строчки таблицы маршрутизации, где сначала абоненты лок сети, потом записи вида пересылки через абонентов и посл. будет по умолч. Это всё станд. алг. маршрутизации, если не исп. хитрые штуки ip route. Ибо не зря iproute2. Ибо такой способ маршр. весьма неэфф в случае сложной маршрутизации. В случае настр. простой маршр. он вполне хорош.
-
Некоторые узнают в этом синтаксис ifconfig. Естественно, поскольку ip это в первую очередь замена ему, и умеет всё и ещё больше. Только в ifconfig для добавления нескольких адресов необходимо было создать виртуальные интерфейсы... проделывать некое упражнение.
+
Напеример, в случае, когда нужно предост. разл. скорость доступа для разных категорий польз., для опр. того, куда пересылать пакет, нужно изучать адрес отпр., а не адрес получателя. Тут мы наталк. на ситуапцию, что в адресе отпр. ничего про это не гвоорится. Эта задача одна из первых возн. в задаче принуд. маршр., оа называется source-based routing. Разумеется, раз пошла такая пьянка, то пошли всякий примеси. Напр., пакеты одного класса можно пересылать через быстрый и онкий канал, другого — через тонкий и медленный. Или если пакет из привелиг. сеанса, от обр. его привелигерованно. Вообще говоря, можно подменить ст. процесс маршр., маршр. по правилам какое сост. в системе и какими свойствами обл. приехавший пакет.
-
...
+
Пристальный анализ док. к утилите ip покажет, что там дост. много разных действий.
-
==== Таблицы маршрутизации ====
+
-
За каждую локальную сеть, которая навешана на интернет, будет отвечать запись в таблице маршрутизатора, примерно следующего содержания: ... сеть такая-то, передавать через то-то.
+
-
В случае, когда есть несколько записей, таблица будет просмотрена следующим образом: чем более общая маска, тем позже она будет просмотрена: сначала, записи хост-хост, дальше для маленьких сетей и так далее до записи default, где маска нулевая.
+
Осалось 5 минут на проблему глоб. маршрутизации. У нас есть.. в реальности тот же интернет не явлется деревом. Поск. если это было ы дерево, то был бы маршрутизатор всего интернета, к которому в очередь выстраивались бы терросристы, желающие обрушить весь интернет.
-
Некое утверждение: когда мы говорим про адрес сети, мы должны понимать, что как минимум два адреса абонента зарезервированы: адрес абонента не может иметь из всех нулей и из всех единиц. Из нулей — собственно адрес сети, и не может использоваться, что же касается адреса, состоящего из адреса сети и всех единиц, то это широковещательный адрес сетевого уровня, broadcast. Кстати сказать, этот параметр, вычислим из маски, но его можно задавать вручную по-другому.
+
В реальности имеются некие облачка (внутри которых уже очень часто бывают деревья), и между ними неплохо было бы устр. какую-то сеть, и поддерживать инф. о
-
 
+
-
В случае соединения точка-точка, нам вообще не нужно пользоваться механизмом сеть-подсеть. Если это подключение не точка-точка, то сколько тогда надо бит? 2, не 1. Сеть /30. Это к тому, насколько максимум подсетей можно разрезать подсеть класса C: не на 256, и не на 128, а на 64, или даже 63.
+
-
 
+
-
Алгоритм маршрутизации достаточно прост: мы просматриваем строчки таблицы маршрутизации, где сначала абоненты локальной сети, потом записи вида пересылки через абонентов и последней будет по умолчанию. Это всё стандартный алгоритм маршрутизации, если не использовать хитрые штуки '''ip route'''. Ибо не зря iproute2. Ибо такой способ маршрутизации весьма неэффективен в случае сложной маршрутизации. В случае настройки простой маршрутизации он вполне хорош.
+
-
 
+
-
Например, в случае, когда нужно предоставить различную скорость доступа для разных категорий пользователей, для определения того, куда пересылать пакет, нужно изучать адрес отправителя, а не адрес получателя. Тут мы наталкиваемся на ситуацию, что в адресе отправителя ничего про это не говорится. Эта задача одна из первых возникает в задаче принудительной маршрутизации, она называется source-based routing. Разумеется, раз пошла такая пьянка, то пошли всякий примеси. Например, пакеты одного класса можно пересылать через быстрый и тонкий канал, другого — через тонкий и медленный. Или если пакет из привилегированного сеанса, от обработать его привилегированно. Вообще говоря, можно подменить стандартный процесс маршрутизации, маршрутизируя по правилам какое состояние в системе и какими свойствами обладает приехавший пакет.
+
-
 
+
-
Пристальный анализ документации к утилите ip покажет, что там достаточно много разных действий.
+
-
 
+
-
=== Глобальная маршрутизация ===
+
-
Осталось 5 минут на проблему глобальной маршрутизации. В реальности тот же интернет не является деревом. Если это было бы дерево, то был бы маршрутизатор всего интернета, к которому в очередь выстраивались бы террористы, желающие обрушить весь интернет.
+
-
 
+
-
В реальности имеются некие облачка (внутри которых уже очень часто бывают деревья), и между ними неплохо было бы устроить какую-то сеть, и поддерживать информацию о:
+
* Достижимости
* Достижимости
* Стоимости этого дела
* Стоимости этого дела
-
* Уметь в случае пропадания достижимости гибко перестраивать этот маршрут
+
* Уметь в случае пропадения достижимости гибко перестраивать этот маршрут
-
С точки зрения деревообр. кусочка это выглядит так: сначала передавали их через одно место, потом через другое.
+
С точки зрения деревообр. кусочка это выгл. так: сначала передавали их через одно место, потом через другое.
-
 
+
-
Если бы не было такой стратегии разю. интернета на авт. системы и отслеживания достижимости, то никакого интернета бы не было. Эта проблема это тоже проблема маршрутизации. Первая проблема — маршрутизация изнутри, вторая — маршрутизация снаружи.
+
-
 
+
-
Существует несколько протоколов разной степени замшелости, которые описывают поведение авт. систем: BGP, RIP, RIP2, EGP. Реализация такого протокола есть функция не столько рабочей машины, скорее всего вы даже такую машину не увидите, это очень редкий компьютер, и на нём совсем не обязательно линукс или что-то юникс-подобное. Сущ. прогр. продукты, которые реализуют эти протоколы маршрутизации, наиболее известный это Zebra и выросщий из неё ... . Проблема в том, что это вообще не очень часто решающаяся задача, и если юникс-гуру дали такую задачу, то он возьмёт ту же ..., посидит над неё неделю и сделает так, что бы оно работало. Но есть фирмы, которые занимаются продажей такого железа.
+
-
 
+
-
О протоколах этого уровня в следующий раз.
+
-
 
+
-
<hr />
+
-
= Конспект Kda =
+
-
<div style="font-size:50%">
+
-
 
+
-
Сегодня приступаем к уровню IP.
+
-
Есть ощущение, что можем не уложиться в семестр.
+
-
Прикладные вещи, такие как DNS, возможно, придется отложить на следующий семестр.
+
-
 
+
-
Начнем с небольшого повторения того, что было раньше.
+
-
Мы добрались до сетевого уровня, на котором решаются задачи идентификации всех абонентов сети и задача доставки пакета в случае, если отправитель и получатель отделены друг от друга последовательностью СПД с различным администрированием.
+
-
Идентификация и маршрутизация.
+
-
 
+
-
Если бы СПД была одна, этого уровня не было бы.
+
-
Есть механизм порождения уникальных Ethernet-идентификаторов, их можно было бы задействовать.
+
-
 
+
-
Сетевой уровень не должен зависеть от интерфейсного уровня.
+
-
Для идентификации на сетевом уровне вводится понятие IP-адреса.
+
-
Состоит из 4 байтов, часто их любят записывать в десятичном виде.
+
-
Можно записывать в шестнадцатеричном, двоичном виде.
+
-
В последнем случае долго писать.
+
-
Каждый адрес присваивается некому сетевому интерфейсу, той «дырке», на которой происходит переход на нижний уровень.
+
-
 
+
-
Принято различать адрес компьютера и адрес сети.
+
-
Сеть и абонент сети.
+
-
Предполагалось, что первый байт будет адресом сети, а остальное — адресом компьютера.
+
-
Реально столько компьютеров в одной сети нет.
+
-
Сейчас система следующая:
+
-
первый бит 0 — класс A, первый 1, второй 0 — класс B, первые две единицы, затем 0 — класс C.
+
-
Сейчас ничего по-человечески не используется.
+
-
Даже если у нас в первом байте 10, скорее всего, все равно будет 24 бита на сеть.
+
-
Есть класс D — начинается с 1110 — Multicast.
+
-
 
+
-
Должна быть сетевая маска — число, определяющее, сколько битов является адресом сети, а сколько — адресом компьютера.
+
-
Не все их нормально умеют обрабатывать, считается, что задается количество первых бит.
+
-
Адрес 210.111.18.2/24 — первые 24 бита — адрес сети.
+
-
 
+
-
Предполагается, что весь Интернет разделен на мелкие СПД.
+
-
Впрочем, на одной СПД можно завести несколько сетей и так иногда делается.
+
-
Если мы перенумеровали всех абонентов, теоретически, можно передать данные от любого абонента к любому.
+
-
Главная проблема — как выяснить адрес своего компьютера.
+
-
Провайдер сказал.
+
-
А откуда он узнал?
+
-
Точнее, как провайдер узнал, что у него есть сеть.
+
-
Где-то есть специальный орган, занимающийся раздачей адресов.
+
-
Выдается диапазон адресов, например, Китаю.
+
-
Обращаясь с специальную службу, мы спрашиваем, чей это адрес (210.***).
+
-
Они говорят, не знаем, вопросы к китайцам.
+
-
Китайцы говорят, у нас этим занимается мелкий китайский провайдер (десяток-другой провинций).
+
-
Уже (210.111.***).
+
-
Далее находим китайскую деревеньку.
+
-
То есть получается такая иерархическая топология.
+
-
Абоненты одной локальной сети, считаем, в одной сети.
+
-
 
+
-
Есть некий шаблон поведений или способ работы с компьютерами, который не требует, чтобы для каждого из компьютеров регистрировался IP-адрес, а может быть адрес даже не известен.
+
-
Есть компьютерный класс, в котором мы работаем.
+
-
У нас нет серверов, нет спама, ничего нет.
+
-
Если нужно добавить десяток компьютеров, было бы неудобно регистрировать компьютеры в Интернете.
+
-
Заявление о регистрации нежелательно.
+
-
Было бы хорошо, чтобы не надо было регистрироваться у провайдера, но даже скрывать внутренние адреса.
+
-
Есть один внешний адрес, на нем может быть даже расположен сервер.
+
-
Но информация о компьютерах в сети либо никому не интересна, либо даже засекречена.
+
-
 
+
-
Мы не знаем, имеют ли все компьютеры Интернета уникальные адреса.
+
-
Реально неизвестных компьютеров очень много.
+
-
Сегодня IP-адресов не хватает на всех.
+
-
Организация неохотно выдает новый диапазон, их надо покупать за большие деньги.
+
-
Типичный пример, когда нам не нужен постоянный IP-адрес.
+
-
Это когда подключение к Интернету временное.
+
-
Раньше Москва подключалась в основном через диалап.
+
-
Мы осуществляем подключение к Интернету, работаем, отключаемся и наш адрес выдают еще кому-то.
+
-
 
+
-
Существует технология подмены IP-адреса.
+
-
Основная работа происходит на транспортном уровне.
+
-
NAT.
+
-
Суть проста — есть компьютер с IP-адресом.
+
-
Есть устройство.
+
-
Берет пакет, подменяет IP-адрес на свой и отправляет.
+
-
Когда приходит ответ, подменяет адрес обратно и отправляет обратно.
+
-
 
+
-
Есть локальная сеть.
+
-
На заре становления Интернета в МГУ.
+
-
Точнее, даже раннее утро.
+
-
Приехали XT.
+
-
В начале они приехали с отформатированными дисками.
+
-
В одной обнаружили два винчестера вместо одного.
+
-
На втором был бэкап, который можно развернуть.
+
-
Все XT были с адресами МИДа.
+
-
Но адреса были внутри, и это никого не волновало.
+
-
Реально есть разрешенные диапазоны для внутреннего использования.
+
-
Сеть 10.0.0.0/8 (255.0.0.0).
+
-
На Китай не хватит, но 16 млн компьютеров можно подключить.
+
-
172.16/12 (реально 16-31 во втором байте, 255.240.0.0).
+
-
169.254/16.
+
-
192.168/16.
+
-
 
+
-
Сети класса D — для широковещания.
+
-
Внутренние адреса в Интернете не встречаются, а даже если встречаются, первый же маршрутизатор отбросит их.
+
-
 
+
-
Что еще можно сказать про IP-адреса?
+
-
Поскольку, очевидно, есть некоторые неудобства, связанные с использованием IP-адресов, сейчас есть IPv6.
+
-
Новый протокол существенно сложнее.
+
-
Вопросы идентификации, маршрутизации решаются по-другому.
+
-
Старый протокол называется IPv4.
+
-
 
+
-
Есть понятие абонента локальной сети.
+
-
За сеть отвечает сетевая маска.
+
-
Есть довольно простой способ определить, принадлежит ли наш абонент локальной сети, или нет и с пакетом надо что-то делать.
+
-
Берем адрес отправителя и получателя, накладываем маску, если результаты не совпадают, адреса в разных сетях, иначе в одной.
+
-
 
+
-
Сравнили адреса, вычленили маску, выяснили, что сети совпадают.
+
-
Есть 210.111.70.1, передаем для 210.111.70.8.
+
-
Берем пакет, заворачиваем в Ethernet-фрейм и отсылаем.
+
-
Мы знаем, куда отсылать.
+
-
А откуда?
+
-
Есть адреса абонентов.
+
-
Пусть есть сеть, где абоненты всегда включены и не изменяются.
+
-
В реальной жизни все не так, компьютеры включаются и отключаются.
+
-
В общем случае нам неизвестен интерфейсный идентификатор, а только IP-адрес.
+
-
Для нахождения интерфейсного уровня в ядре есть таблица соответствия, есть протокол ARP, переводящий адреса сетевого уровня в адреса интерфейсного уровня.
+
-
В том числе он переводит IP в MAC, но не только.
+
-
ARP должен работать у любого устройства сети.
+
-
 
+
-
Мы захотели передать, а MAC-адрес не знаем.
+
-
Вместо фрейма с пакетом передаем специальный широковещательный фрейм (в адресе все единички).
+
-
Этот пакет — ARP-запрос.
+
-
У меня есть IP, отзовитесь, чей он.
+
-
Передают на уровень выше.
+
-
В ответном фрейме ничего не содержится, кроме идентификатора ARP-запроса (адрес отправителя уже есть).
+
-
 
+
-
На интерфейсном уровне посылается широковещательный запрос с сетевым адресом.
+
-
Получаем ответ, таблица соответствия пополняется.
+
-
Таблица динамическая, записи живут недолго, минуту или около того.
+
-
 
+
-
В Линуксе есть информация о том, сколько осталось жить записи в таблице.
+
-
При передаче первым делом лезем в таблицу, если там нет адреса, делаем запрос, пополняем таблицу и после этого отправляем.
+
-
Утилита IP — часть iproute2, который занимается в том числе маршрутизацией.
+
-
У утилиты есть команда ip neighbour.
+
-
Выполнив, увидим таблицу.
+
-
Внимательное изучение документации покажет, что можно проделать разные вещи.
+
-
Можно добавить статическую запись (неустаревающую).
+
-
Например, чтобы не посылать постоянно широковещательные запросы.
+
-
Можно все прописать статически и отключить везде ARP, чтобы сбить с толку злоумышленника.
+
-
Можно прописать чужой IP-адрес на свой MAC-адрес.
+
-
 
+
-
Есть машина, подключенная к Интернету, есть PPP канал.
+
-
Нужно организовать доступ.
+
-
Можем воспользоваться этой возможностью, чтобы не включать NAT.
+
-
Чужой IP становится частью нашей СПД, чтобы не заморачиваться на трансляцию адресов.
+
-
Мы добавляем информацию о том, что ip2 — тоже наш адрес.
+
-
При получении пакета, обнаруживаем, что он не нам и делаем банальную маршрутизацию.
+
-
Два адреса принадлежат одной и той же локальной сети.
+
-
 
+
-
Достаточно поговорили об идентификации, сейчас обсуждаем маршрутизацию.
+
-
Мы выяснили, что абонент-получатель находится в другой локальной сети.
+
-
Что делать?
+
-
Послать куда-то, потом еще куда-то.
+
-
В итоге пакет должен попасть куда надо.
+
-
Мы должны взять за правило все пакеты, не принадлежащие локальной сети, пересылать определенной машине.
+
-
Такая машина работает маршрутизатором.
+
-
Это может быть просто коробочка, в которой, впрочем, может стоять тот же Линукс.
+
-
 
+
-
Нужно создать специальную запись, которая бы явно именовала маршрутизатором некую машину.
+
-
 
+
-
Упустили важную вещь, возврат назад.
+
-
Мы уже помним, что все сетевые интерфейсы можно посмотреть с помощью ip link.
+
-
С помощью ip addr мы можем посмотреть список всех интерфейсов и параметры, присвоенные этим интерфейсам.
+
-
Есть интерфейс и на этот интерфейс навешиваются различные параметры.
+
-
Интерфейс loopback есть всегда.
+
-
В работающей системе с высокой вероятностью будет интерфейс lo (loopback) для соединения с самим собой.
+
-
Мы можем обращаться по 127.0.0.1.
+
-
Это еще один необщий адрес.
+
-
Адресов 127.0.0.1 больше всего, почти столько же, сколько компьютеров.
+
-
 
+
-
Команда ip addr показывает список адресов, навешенных на интерфейс.
+
-
ip addr add 210.111.70.8/24 dev eth0.
+
-
Все, что умел ifconfig, умеет ip addr, и даже больше.
+
-
Раньше приходилось создавать алиасные интерфейсы, потом в ядре что-то переписали, сделали ip addr и все стало проще.
+
-
Можно навесить сколько угодно ip-адресов.
+
-
При отсылке пакета будет сканироваться каждая возможность отослать в локальную сеть.
+
-
Это уже не на уровне идентификации, а на уровне ip route.
+
-
 
+
-
ip route выдаст как минимум две записи, одна — для локальной сети, а вторая — для всего остального.
+
-
За каждую локальную сеть, навешенную на интерфейс будет отвечать некая запись в таблице маршрутизации.
+
-
Сеть такая-то, передавать для таких-то адресов.
+
-
Для маршрутизатора запись другая: адреса такие-то, передавать через машину такую-то.
+
-
Для всего Интернета — сеть 0.
+
-
При принятии решений таблица маршрутизаций просматривается так: чем больше сетевая маска, тем раньше будет проверена соответствующая альтернатива.
+
-
Бывает даже «такой-то ip» через «такой-то IP».
+
-
Небольшая сеть, потом большая сеть, потом весь Интернет.
+
-
 
+
-
Некое утверждение.
+
-
Состоит в следующем.
+
-
Когда мы говорим о сети, мы должны понимать, что как минимум два адреса зарезервированы.
+
-
Он не может состоять из всех нулей и всех единиц.
+
-
Адрес из всех нулей — это адрес собственно сети.
+
-
Из всех единиц — широковещательный адрес.
+
-
Если адрес сети состоит из нашей сети, а адрес абонента — все единицы, мы шлем в нашу сеть широковещательный запрос.
+
-
Не все на него прореагируют.
+
-
Есть соединение точка-точка.
+
Если бы не было такой стратегии разю. интернета на авт. системы и отслеж. достижимости, то никакого интернета бы не было. Эта проблема это тоже проблема маршрутизации. Перваыя проблема — марш. изнутри, вторая — марш. снаружи.
-
То есть, два абонента.
+
-
Какого размера подсеть надо выделить, чтобы сеть верно заработала с точки зрения TCP/IP?
+
-
Ничего не нужно, только два адреса.
+
-
Если же это сеть с двумя абонентами, то длина сети будет 30, а не 31.
+
-
Потому что нужны два зарезервированных адреса.
+
-
Сеть класса C можно разделить на 64, а то и 63 сети.
+
-
Еще раз про маршрутизацию.
+
Существует неск. протоколов разн. степени замшелости, которые опис. поведение авт. систем: BGP, RIP, RIP2, EGP. Реализ. такого протокола есть функция не столько рабочей машины, скорее всего вы даже такую машину не увидите, это очень редкий компьютер, и на нём совсем не обязательно линукс или что-то юникс-подобное. Сущ. прогр. продукты, которые реализ эти протокколы маршрутизации, наиб. известный это Zebra и вырослий из неё ... . Проблема в том, что это вообще не очень часто решающаяся задача, и если юникс-гуру дали такую задачу, то он возьмёт ту же ..., посидит над неё неделю и сделает так, чотбы оно работало. Но есть фирмы, которые занимаются продажей такого железа.
-
Алгоритм прост — просматриваем записи с точки зрения количетсва битов в сетевой маске.
+
-
Чем меньше бит в маске, тем меньше приоритет.
+
-
Это стандартный алгоритм маршрутизации, если не используется iproute.
+
-
Есть iproute2.
+
-
Такой способ неэффективен при сложных задачах по передаче пакетов.
+
-
Представим ситуацию: есть пользователи, которые заплатили за Интернет, и которые не платят за Интернет, но которым его нужно предоставлять.
+
-
Маршрутизатор один, и есть два канала, один толще.
+
-
Тем, кто платит, канал толще.
+
-
Если у нас исключительно ip-адресация, то очевидно, что не определим, как маршрутизировать.
+
-
Чтобы определить, куда пересылать пакет, нужно анализировать не адрес получателя, а адрес отправителя.
+
-
Это — одна из первых задач принудительной маршрутизации.
+
О протоколах этого уровня в след. раз.
-
Еще пример.
+
-
Пакеты одного класса можно пересылать через быстрый, но тонкий канал, а другого класса через медленный, но толстый канал.
+
-
Возможна маршрутизация по правилам.
+
-
Многие из этих задач решает ip route.
+
-
Стандартный процесс маршрутизации — иерархический, более сложный — для более сложных задач.
+
-
Можно читать документацию по iproute.
+
-
Можно принимать сведения от файрволла.
+
-
Вспомним про проблемы глобальной маршрутизации.
 
-
Если бы было дерево, то был бы «маршрутизатор всего Интернета».
 
-
Вокруг него были бы террористы.
 
-
Есть «облачка», соединенные между собой.
 
-
Было бы неплохо если не соединять каждое с каждым, то хотя бы устроить между ними какую-то сеть, уже не в виде дерева и поддерживать информацию о достижимости одного облачка из другого, стоимости доставки (не в деньгах; предлагается в баррелях).
 
-
Есть автономные системы, и есть достижимость между ними.
 
-
Принятие решений о использовании одного или другого канала в случае пропадания достижимости.
 
-
Если бы не было стратегии разбиения Интернета на автономные системы и достиижимости между ними, Интернета бы не было.
 
-
Существует несколько протоколов, описывающих глобальную маршрутизацию.
 
-
BGP, RIP, RIP2, EGP и другие.
 
-
Их довольно много, они разной степени замшелости.
 
-
Реализация такого протокола не является функцией не только рабочего стола, рабочей машины.
 
-
Скорее всего, такой компьютер мы не увидим, разве что только мы работаем у провайдера.
 
-
Их мало.
 
-
Там вряд ли стоит Линукс, это может быть цисковская железка.
 
-
Тем не менее есть свободное ПО, которые более-менее нормально реализуют эти протоколы.
 
-
Это не часто встречающаяся задача.
 
-
Если возникает задача настроить под Линуксом такой протокол, профессионал посидит недельку и сделает все, что нужно.
 
-
</div>
 
{{UNИX, осень 2008}}
{{UNИX, осень 2008}}
{{Lection-stub}}
{{Lection-stub}}

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Разделы