Различия между версиями 7 и 9 (по 2 версиям)
Версия 7 от 2008-07-02 23:05:54
Размер: 16488
Редактор: MaximByshevskiKonopko
Комментарий: Второй проход со спеллчекером.
Версия 9 от 2008-07-03 00:50:59
Размер: 16987
Редактор: MaximByshevskiKonopko
Комментарий: Вроде бы 20.
Удаления помечены так. Добавления помечены так.
Строка 5: Строка 5:
Задача --- пронумеровать все сетевые устройства в сети (поск. мы так передаём, то это идент. сетевого устр-ва) --- в общем случае невыполнима. Эту задачу надо перераспределить, чтобы не в одном конкр. месте выдавались все адреса, а выработать некоторую дисциплину, чтобы решения принимались в локальном порядке. Для этого устр. некоторую пирамидку. Есть некая организация, которая выдаёт списки сетевых адресов. Эта организация --- IANA, подконтрольная ICANN. Потом этот список режется на кусочки и раздаётся другим людям и так далее. В конце концов некий конечный сисадмин получает группу адресов так, чтобы это работало в интернете. IP-адрес это 4 байта, которые записываются через точку в десятичном виде. Если набрать ip addr, то увидим дополнительную строку, в которой есть информация про IP. В частности, IP-адрес. Задача --- пронумеровать все сетевые устройства в сети (раздать им уникальные адреса) --- в общем случае невыполнима. Эту задачу надо перераспределить, чтобы не в одном конкретном месте выдавались все адреса, а выработать некоторую дисциплину, чтобы решения принимались в локальном порядке. Для этого выстраивается некая иерархия. Есть некая организация, которая выдаёт списки сетевых адресов. Эта организация --- IANA, подконтрольная ICANN. Потом этот список режется на кусочки и раздаётся другим людям и так далее. В конце концов некий конечный сисадмин получает группу адресов так, чтобы это работало в интернете. IP-адрес --- это 4 байта, которые записываются через точку в десятичном виде. Если набрать ip addr, то увидим дополнительную строку, в которой есть информация про IP. В частности, IP-адрес.
Строка 7: Строка 7:
## Педедыв ## Педедыв (саседа зебда?)
Строка 9: Строка 9:
Мы приступаем к тому, как устроен TCP/IP. Уже было сказано, что на уровне IP идентификация производится 4-мя байтами. В старых книжках по TCP/IP можно обнаружить рассказ про то, что адреса бывают разных классов: A, B, C, D. Но в реальности адреса редко порезаны (на сетевую и хостовую составляющие) так, как это предполагается этими классами. Возьмём адрес как строку битов и отделим от неё те адреса, у которых первый бит --- 0. Все сети, у которых самый старший бит 0 --- сети класса А (N.H.H.H) (N --- network, H --- host), и условно внутри локальной сети на одной среде передачи данных нахдится сразу 16 млн. компьютеров, т. к. под адрес абонента отводится 3 байта. Соответственно, на адрес сети остаётся один байт. И вообще, если СПД и сеть не настоящая (loopback), то можно сколоько угодно адресов завести, лишь бы мощности позволили. В общем, система классов вот в чём: адрес делится на части --- адресующую сеть и адресующую абонента сети, и если адрес сети совпадает, то передача локальна, иначе надо выяснять, какой маршрутизатор может передать эти данные. Сеть класса B --- (N.N.H.H) начальные биты адреса 10, C --- (N.N.N.H) начальные биты адреса 110, сеть класса D --- начальные биты адреса 1110 --- используются для мультикастинга, когда пакеты попадают некоторым адресатам, но не всем. Мы приступаем к тому, как устроен TCP/IP. Уже было сказано, что на уровне IP идентификация производится 4-мя байтами. В старых книжках по TCP/IP можно обнаружить рассказ про то, что адреса бывают разных классов: A, B, C, D. Но в реальности адреса редко порезаны (на сетевую и хостовую составляющие) так, как это предполагается этими классами. Возьмём адрес как строку битов и отделим от неё те адреса, у которых первый бит --- 0. Все сети, у которых самый старший бит 0 --- сети класса А (N.H.H.H) (N --- network, H --- host), и условно внутри локальной сети на одной среде передачи данных нахдится сразу 16 млн. компьютеров, т. к. под адрес абонента отводится 3 байта. Соответственно, на адрес сети остаётся один байт. И вообще, если СПД и сеть не настоящие (loopback), то можно сколько угодно адресов завести, лишь бы мощности позволили. В общем, система классов вот в чём: адрес делится на части --- адресующую сеть и адресующую абонента сети, и если адрес сети совпадает, то передача локальна, иначе надо выяснять, какой маршрутизатор может передать эти данные. Сеть класса B --- (N.N.H.H) начальные биты адреса 10, C --- (N.N.N.H) начальные биты адреса 110, сеть класса D --- начальные биты адреса 1110 --- используются для мультикастинга, когда пакеты попадают некоторым адресатам, но не всем.
Строка 11: Строка 11:
Как это выглядит в жизни: 127.0.0.1/8 --- адрес класса A, и /8 показывает количество битов, которые идентифицируют сеть. Сейас классы не исп., исп. диапазоны адресов, которые раздаются по мере надобности. Соответственно, под идент. сети можно отводить разное количество бит. Как это выглядит в жизни: 127.0.0.1/8 --- адрес класса A, и /8 показывает количество битов, которые идентифицируют сеть. Сейас классы не исп., исп. диапазоны адресов, которые раздаются по мере надобности. Соответственно, под идентификатор сети можно отводить разное количество бит.
Строка 15: Строка 15:
Как прописать интерфейсу IP-адрес: ip addr add 192.168.200.117/24 dev eth0 Как приписать интерфейсу IP-адрес: ip addr add 192.168.200.117/24 dev eth0 (вообще говоря, их там может быть много).
Строка 18: Строка 18:
Здесь можно вспомнить о таком понятии, как протокол. Вообще, протокол это документ, который описывает, как происх. взаимодействие по сети в разных случаях. Таких протоколов очень много. В частности, на каждом из уровней есть свои протоколы. На уровне сетевом (где есть задачи пронумеровать все машины и организовать маршрутизацию) тоже есть свои протоколы, которые позв. решать какие-то задачи. Одна из задач, которые должны здесь решаться --- задача передачи диаг. сообщ. Например, невозм. организация маршрута. Причём, про это не знает ни наша машина, ни ближайший маршрутизатор, а только некая в середине маршрута. Тогда надо послать диаг. сообщение оттуда, что пакет не будет доставлен. Это одна из многих задач, которые надо решать, когда нам надо посл. диаг. о происх. Протокол, решающий эти задачи, называется ICMP, Internet Connection Management Protocol. Это происх. прямо на уровне IP. В частности, команда ping пользуется одиним из типов таких собщ. Она посылает спец. пакет, ICMP-пакет, в котором написано "ответь мне пожалуйста". Там есть ещё некая инф. о том, какой номер такого пакета. Согласно протоколу ICMP получатель обязан отослать по получении ответ. Здесь можно вспомнить о таком понятии, как протокол. Вообще, протокол это документ, который описывает, как происходит взаимодействие по сети в разных случаях. Таких протоколов очень много. В частности, на каждом из уровней есть свои протоколы. На уровне сетевом (где есть задачи пронумеровать все машины и организовать маршрутизацию) тоже есть свои протоколы, которые позволяют решать какие-то задачи. Одна из задач, которые должны здесь решаться --- задача передачи диагностических сообщений. Например, невозможна организация маршрута (до получателя). Причём, про это не знает ни наша машина, ни ближайший маршрутизатор, а только некая в середине маршрута. Тогда надо послать диагностическое сообщение оттуда, что пакет не будет доставлен. Это одна из многих задач, которые надо решать, когда нам надо послать диагностику о происходящем. Протокол, решающий эти задачи, называется ICMP, Internet Connection Management Protocol. Это происходит прямо на уровне IP. В частности, команда ping пользуется одиним из типов таких сообщений (ICMP Echo Request). Она посылает специальный пакет, ICMP-пакет, в котором написано "ответь мне пожалуйста". Там есть ещё некая информация о том, какой номер такого пакета. Согласно протоколу ICMP получатель обязан отослать по получении ответ(ICMP Echo Reply).
Строка 26: Строка 26:
Прежде чем переходить к марш., решим один очень важный впрос. В случае, если несколько компьютеров объединены СПД, то каждое устойство может каждому передавать какие-то данные. Но у нас-то маршрутизация сущ. на третьем, сетевом уровне, а в СПД определяющим является не IP, а MAC-адрес, более того, может так случиться, что для MAC-адреса может меняться IP, а для IP может меняться MAC. Поэтому не совсем понятно, как может приниматься решение, куда передавать ethernet-frame, ибо мы знаем про абонента только IP. Тут мы встречаемся с понятием сетевой службы, поскольку прежде чем начнётся передача данных, должна произойти операция по выяснению того, куда необх. отпр. данные. Прежде чем переходить к маршрутизации, решим один очень важный вопрос. В случае, если несколько компьютеров объединены СПД, то каждое устройство может каждому передавать какие-то данные. Но у нас-то маршрутизация существует на третьем, сетевом уровне, а в СПД определяющим является не IP, а MAC-адрес, более того, может так случиться, что для MAC-адреса может меняться IP, а для IP может меняться MAC. Поэтому не совсем понятно, как может приниматься решение, куда передавать ethernet-frame, ибо мы знаем про абонента только IP. Тут мы встречаемся с понятием сетевой службы, поскольку прежде чем начнётся передача данных, должна произойти операция по выяснению того, куда необходимо отправить данные.
Строка 28: Строка 28:
Для того, чтобы в теч. некр-го времени хранить данные о том, какому IP соотв. какие MAС, служат ARP-таблицы. Если сказать ip n, то можно увидеть своих соседей. Если попинговать соседнюю тачку и после этого сказать, то можно увидеть свою ARP-таблицу. Для того, чтобы в течение некоторого времени хранить данные о том, какому IP соответствуют какие MAС, служат ARP-таблицы. Если сказать ip n, то можно увидеть своих соседей. Если попинговать соседнюю тачку и после этого сказать, то можно увидеть свою ARP-таблицу.
Строка 30: Строка 30:
Если сказать tcpdump arp, то при пинге какой-то тачки можно увидеть, что происх. в сети. Вообще, tcpdump ввергает карточку в сост. прослушивания всей сети (promiscous mode), для того, чтбы знать, что в сети происходит. Если сказать tcpdump arp, то при пинге какой-то тачки можно увидеть, что происходит в сети. Вообще, tcpdump ввергает карточку в состояние прослушивания всей сети (promiscous mode), для того, чтбы знать, что в сети происходит.
Строка 32: Строка 32:
tcpdump arp говорит. что мы слушаем arp. Когда мы пинговали 192.168.200.10, мы выяснили что: tcpdump arp говорит, что мы слушаем arp. Когда мы пинговали 192.168.200.10, мы выяснили что:
Строка 40: Строка 40:
Переходим к второй задаче IP, а именно маршрутизации. Мы сейчас всё это время имели дело с локальной сетью, то есть машинами в той же СПД. Что будет, если мы захотим переслать пакет удалённой машине (в другую СПД)? Ни одной машине в лок. сети этот пакет не нужен. А кому нужен? Маршрутизатору. В сети должны быть одна или неск. машин, которые занимаются тем, что перекладывают пакеты с одного интерфейса на другой. Общий алгоритм очень простой. Сущ. некие правила, по которым в лок. сети выбирается машины, которым передаются пакеты, не адр. машинам данной сети. Эти правила и наз. маршрутизацией. И дальше написания таблички, что за пересылку пакетов в интернет отвечает эта машина, а за пересылку пакетов в другую сеть--- эта, не идёт. У обычных хостов содержимое таблички ограничивается одним или несколькими локальными маршрутизаторами. Переходим к второй задаче IP, а именно маршрутизации. Мы сейчас всё это время имели дело с локальной сетью, то есть машинами в той же СПД. Что будет, если мы захотим переслать пакет удалённой машине (в другую СПД)? Ни одной машине в локальной сети этот пакет не нужен. А кому нужен? Маршрутизатору. В сети должны быть одна или несколько машин, которые занимаются тем, что перекладывают пакеты с одного интерфейса на другой. Общий алгоритм очень простой. Существуют некие правила, по которым в локальной сети выбирается машины, которым передаются пакеты, не адресованные машинам данной сети. Эти правила и называются маршрутизацией. И дальше написания таблички, что за пересылку пакетов в интернет отвечает эта машина, а за пересылку пакетов в другую сеть--- эта, дело и не идёт. У обычных хостов содержимое таблички ограничивается одним или несколькими локальными маршрутизаторами.
Строка 44: Строка 44:
Как в результате форм. маршрут пакета? Это штука вполне динамическая. В каждой точке маршрутизации принимается решение, куда пакет дальше отправить. Как в результате формируется маршрут пакета? Это штука вполне динамическая. В каждой точке маршрутизации принимается решение, куда пакет дальше отправить.
Строка 53: Строка 53:
|| 17 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko || || || 20 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko || ||

Сетевой уровень

Что касается уровня сетевого.

Задача --- пронумеровать все сетевые устройства в сети (раздать им уникальные адреса) --- в общем случае невыполнима. Эту задачу надо перераспределить, чтобы не в одном конкретном месте выдавались все адреса, а выработать некоторую дисциплину, чтобы решения принимались в локальном порядке. Для этого выстраивается некая иерархия. Есть некая организация, которая выдаёт списки сетевых адресов. Эта организация --- IANA, подконтрольная ICANN. Потом этот список режется на кусочки и раздаётся другим людям и так далее. В конце концов некий конечный сисадмин получает группу адресов так, чтобы это работало в интернете. IP-адрес --- это 4 байта, которые записываются через точку в десятичном виде. Если набрать ip addr, то увидим дополнительную строку, в которой есть информация про IP. В частности, IP-адрес.

Мы приступаем к тому, как устроен TCP/IP. Уже было сказано, что на уровне IP идентификация производится 4-мя байтами. В старых книжках по TCP/IP можно обнаружить рассказ про то, что адреса бывают разных классов: A, B, C, D. Но в реальности адреса редко порезаны (на сетевую и хостовую составляющие) так, как это предполагается этими классами. Возьмём адрес как строку битов и отделим от неё те адреса, у которых первый бит --- 0. Все сети, у которых самый старший бит 0 --- сети класса А (N.H.H.H) (N --- network, H --- host), и условно внутри локальной сети на одной среде передачи данных нахдится сразу 16 млн. компьютеров, т. к. под адрес абонента отводится 3 байта. Соответственно, на адрес сети остаётся один байт. И вообще, если СПД и сеть не настоящие (loopback), то можно сколько угодно адресов завести, лишь бы мощности позволили. В общем, система классов вот в чём: адрес делится на части --- адресующую сеть и адресующую абонента сети, и если адрес сети совпадает, то передача локальна, иначе надо выяснять, какой маршрутизатор может передать эти данные. Сеть класса B --- (N.N.H.H) начальные биты адреса 10, C --- (N.N.N.H) начальные биты адреса 110, сеть класса D --- начальные биты адреса 1110 --- используются для мультикастинга, когда пакеты попадают некоторым адресатам, но не всем.

Как это выглядит в жизни: 127.0.0.1/8 --- адрес класса A, и /8 показывает количество битов, которые идентифицируют сеть. Сейас классы не исп., исп. диапазоны адресов, которые раздаются по мере надобности. Соответственно, под идентификатор сети можно отводить разное количество бит.

Сколько машин в сети? n-2 (где n --- 2^k, где k --- количество бит адреса хоста), два спец. адреса: если все единички в поле адреса хоста, то пакет широковещательный.

Как приписать интерфейсу IP-адрес: ip addr add 192.168.200.117/24 dev eth0 (вообще говоря, их там может быть много). После этого можно сказать ip addr, чтобы посмотреть, что получилсь. В числе прочего, мы научились вручную настраивать сеть. Данный адрес класса C, это значит, что все компьютеры с адресами 192.168.200.xxx будут считаться принадлежащим нашей сети, а остальные --- другой. Дальше можно проверить работоспособность сети, например, попинговать 192.168.200.1.

Здесь можно вспомнить о таком понятии, как протокол. Вообще, протокол это документ, который описывает, как происходит взаимодействие по сети в разных случаях. Таких протоколов очень много. В частности, на каждом из уровней есть свои протоколы. На уровне сетевом (где есть задачи пронумеровать все машины и организовать маршрутизацию) тоже есть свои протоколы, которые позволяют решать какие-то задачи. Одна из задач, которые должны здесь решаться --- задача передачи диагностических сообщений. Например, невозможна организация маршрута (до получателя). Причём, про это не знает ни наша машина, ни ближайший маршрутизатор, а только некая в середине маршрута. Тогда надо послать диагностическое сообщение оттуда, что пакет не будет доставлен. Это одна из многих задач, которые надо решать, когда нам надо послать диагностику о происходящем. Протокол, решающий эти задачи, называется ICMP, Internet Connection Management Protocol. Это происходит прямо на уровне IP. В частности, команда ping пользуется одиним из типов таких сообщений (ICMP Echo Request). Она посылает специальный пакет, ICMP-пакет, в котором написано "ответь мне пожалуйста". Там есть ещё некая информация о том, какой номер такого пакета. Согласно протоколу ICMP получатель обязан отослать по получении ответ(ICMP Echo Reply).

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

Чтобы закрыть вопрос с IP-адресами, лектор добавит вот что: задача перенумеровать все компьютеры адресами невыполнима. Например, есть большое количество компьютеров, которым внешние адреса не нужны. С одной стороны есть преобразование адресов, с другой стороны, есть список адресов, которые не уникальны в интернете. В частности, у каждого сетевого интерфейса есть loopback и адрес 127.0.0.1. Диапазон адресов класса A, который начинается на 10., также не уникален. Кроме того адреса в диапазоне, 192.168.0.0/16 тоже можно раздавать без трудностей. Другое дело, что любой маршрутизатор вам скажет, что компьютеров с такими адресами быть не может. Также локальны 127.0.0.0/8, 172.16.0.0/12.

Вторая проблема, которую надо решить --- маршрутизация.

Прежде чем переходить к маршрутизации, решим один очень важный вопрос. В случае, если несколько компьютеров объединены СПД, то каждое устройство может каждому передавать какие-то данные. Но у нас-то маршрутизация существует на третьем, сетевом уровне, а в СПД определяющим является не IP, а MAC-адрес, более того, может так случиться, что для MAC-адреса может меняться IP, а для IP может меняться MAC. Поэтому не совсем понятно, как может приниматься решение, куда передавать ethernet-frame, ибо мы знаем про абонента только IP. Тут мы встречаемся с понятием сетевой службы, поскольку прежде чем начнётся передача данных, должна произойти операция по выяснению того, куда необходимо отправить данные.

Для того, чтобы в течение некоторого времени хранить данные о том, какому IP соответствуют какие MAС, служат ARP-таблицы. Если сказать ip n, то можно увидеть своих соседей. Если попинговать соседнюю тачку и после этого сказать, то можно увидеть свою ARP-таблицу.

Если сказать tcpdump arp, то при пинге какой-то тачки можно увидеть, что происходит в сети. Вообще, tcpdump ввергает карточку в состояние прослушивания всей сети (promiscous mode), для того, чтбы знать, что в сети происходит.

tcpdump arp говорит, что мы слушаем arp. Когда мы пинговали 192.168.200.10, мы выяснили что:

  • Эта машина в локальной сети, и можно передавать ей данные прямо так
  • Надо выяснить MAC-адрес этой машины, посылаем широковещательный eth-фрейм (ARP-запрос), который говорит следующее: "мужики! адрес 192.168.200.10 у кого? Отвечай!"
  • Получатели принимают этот пакет, понимают на уровень ядра, видят, что это за запрос и отвечают: Дорогой 192.168.200.117, MAC у 192.168.200.10 такой.
  • Когда удалённая машина отвечает на пинг, то она проводит аналогичную операцию.

Этот протокол отчасти уровня интерфейсного, потому что происх. обмен eth-фреймами.

Переходим к второй задаче IP, а именно маршрутизации. Мы сейчас всё это время имели дело с локальной сетью, то есть машинами в той же СПД. Что будет, если мы захотим переслать пакет удалённой машине (в другую СПД)? Ни одной машине в локальной сети этот пакет не нужен. А кому нужен? Маршрутизатору. В сети должны быть одна или несколько машин, которые занимаются тем, что перекладывают пакеты с одного интерфейса на другой. Общий алгоритм очень простой. Существуют некие правила, по которым в локальной сети выбирается машины, которым передаются пакеты, не адресованные машинам данной сети. Эти правила и называются маршрутизацией. И дальше написания таблички, что за пересылку пакетов в интернет отвечает эта машина, а за пересылку пакетов в другую сеть--- эта, дело и не идёт. У обычных хостов содержимое таблички ограничивается одним или несколькими локальными маршрутизаторами.

Для указания маршрутизатора по умолчанию, пользователю надо только указать машину, которая является шлюзом (а в случае с DHCP вообще ничего не надо делать): ip route add default via 192.168.200.1. После чего в ip route увидим два маршрута, второй появился автоматом для локальных адресов. В таблице маршрутизации указывается, на какие машины посылать пакеты для каких адресов. Маршруты сортируются по величине маски (количеству бит в маске).

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

Чтобы увидеть, как ходит пакет, можно сделать, например, traceroute 89.188.104.91. Как это реализовано? В принципе, в пакете IP есть флаг record route, но его никто не записывает (иначе при больших маршрутах пакет бы перерос сам себя). Вместо этого используется ttl (Time To Live), который уменьшается на 1 каждую секунду или при каждом прохождении через маршрутизатор. Соответственно, сначала посылается ICMP-пакет с ttl=1, и при первом прохождении через маршрутизатор ttl обнуляется, о чём маршрутизатор посылает ICMP-сообщение. Далее посылается пакет с ttl=2. При этом надо понимать, что этот маршрут не обязан быть таким, но даёт представление о маршруте.


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

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

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

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

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

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

Level

Maintainer

Start date

20

1

1

1

1

MaximByshevskiKonopko


PspoClasses/080702/04IP (последним исправлял пользователь VsevolodKrishchenko 2008-10-04 10:24:12)