15361
Комментарий:
|
23736
|
Удаления помечены так. | Добавления помечены так. |
Строка 1: | Строка 1: |
Что касается уровня сетевого. | == Сетевой уровень == |
Строка 3: | Строка 3: |
Задача пронумеровть все сетевые устр. в сети (поск. мы так передаём, то это идент. стеевонг устр-ва) --- задача невыполнима. Эту задачу надо перераспределить, чтобы не в одном конкр. месте выдавались все адреса, а выработать некоторую жисциплину, чтобы решения принимались в локальном порядке. Для этого устр. некоторую пирамидку. Есть некая организация, которая выдаёт списки сетевых адресов. Эта организация (ICANN?). Потом этот список режется на кусочки и раздаётся другим людям и так далее. В концеп концов некий конечний сисадмин получает группу адресов так, чтобы это работало в интернете. IP-адрес это 4 байта, которые записываются через точку в десятичнм виде. Если набрать ip addr, то увидим дополнительную строку, в которой есть инф пр ip. В частности, ip адрес. | '' Cпасибо VladimirLysikov за неожиданную помощь :) ''-- ОльгаТочилкина |
Строка 5: | Строка 5: |
## Педедыв | С развитием концепции глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны Задачей протокола IP является передача данных между устройствами, которые, вообще говоря, не находятся в одной среде передачи данных. Для этого необходимо определить, во-первых, механизм адресации, чтобы можно было выделить среди множества компьютеров тот, которому предназначены данные, и, во-вторых, механизм маршрутизации, позволяющий доставку пакетов между различными сетями. Рассмотрим подробнее каждую из этих двух функций протокола IP. |
Строка 7: | Строка 8: |
Мы приступаем к тому, как устроен tcp/ip. Уже было сказано, что на уровне ip идентификация произв. 4 байтами. В старых книжках по tcp/ip мжно обнаружить рассказ про то, что адреса бывают разнвх классов: A, B, C, D. Но в реальности адреса редко порезаны так, как это предполагается этими классами. Вохьмём адрес как строку битов и отделим от неё те адреса, у которых первый бит --- 0. Все сети, у которых самый старший бит 0 --- сети класса А, и условно внутри локальной сети на одной среде передачи данных нахдится сразу 16 млн. компьютеров, т. к. под адрес абонента отводится 3 байта. Соответственн, на адрес сети остаётся один байт. И вообще, если СПД и сеть не настоящая, то можно сколоько угодно адресов завести, илшь бы мощности позволили. В общем, система классов вот в чём: адрес делится на адрес сети и адрес абонента сети, и если адрес сети совп., то передача локальна, иначе надо выяснять, какй марш. может передать эти данные. Сеть класса b --- 10/14/16, c --- 110/21/8, сеть класса d --- 1110/28 --- используются для мультикастинга, когда пакеты попадают некоторым адресатам, но не всем. | Рассмотрим устройство TCP/IP. IP-адрес устройства в сети состоит из четырех байт, которые обычно записываются как четыре десятичных числа от 0 до 255, разделенные точками. Распределением IP-адресов занимается организация IANA. Эта организация выделяет диапазоны адресов другим организациям, затем эти диапазоны делятся на более мелкие диапазоны и в конце концов присваиваются компьютерным сетям, и внутри сети устройствам присваиваются адреса из присвоенного этой сети диапазона. Диапазоны организуются так, что у всех компьютеров сети первые несколько бит адреса совпадают, то есть адрес можно разделить на две части: одна из них адресует сеть(т.е одинакова для всех устройств в сети), а другая -- хост в сети, т. е. конкретное устройство. Записывается это следующим образом: после собственно адреса указывается количество бит, адресующих сеть, например 127.0.0.1/8 или 192.168.200.10/24. Количество бит идентификатора хоста (k) позволяет вычислить количество машин в сети: оно равно 2^k-2. |
Строка 9: | Строка 12: |
Как это выглядит в жизни: 127.0.0.1 --- адрес класса A, и /8 показывает количество битов, которые идентифицируют сеть. Сейас классы не исп., исп. диапазоны адресов, которые разд по мере надобности. Соответственн, под идент. сети можно отводить разное количество бит. | Раньше использовалась другая, классовая, система. IP-адреса соответствовали четырем классов: A, B, C, D и E. В общем, система классов характеризуется следующим подходом: IP-адрес делится на две части - идентификатор сеть и идентификатор абонента сети. Если адрес сети двух компьютеров совпадает, то передача между ними является локальной, иначе необходимо выяснить, какой маршрутизатор может передать эти данные. |
Строка 11: | Строка 14: |
Сколько машин в сети? n-2, возн. два спец. адреса: если все единички в поле абонент, то пакет широковещательный. | Принадлежность к тому или иному классу определяется следующим образом: рассмотрим IP-адреса как строку битов и выберем те, у которых первый (старший) бит - 0. Сети с такими адресами являются сетями класса А; их адрес может быть представлен в виде N.H.H.H, где N - cеть (network), H - хост (host). Под адрес абонента отводится 3 байта, это означает, что внутри локальной сети может находиться сразу 16 млн компьютеров. Соответственно, адрес сети занимает 1 байт. В связи с тем, что адреса класса А имеют 8-разрядный сетевой префикс (т.е. сеть индентифицируется 8 битами), их обозначают записью /8. Cетям класса B (N.N.H.H) соответствуют IP-адреса, начальные биты которых - 10, сетям класса C (N.N.N.H) - адреса, начальные биты которых - 110. Аналогично обозначению сетей класса А, сети классов B, C, D обозначаются /16 и /24. |
Строка 13: | Строка 16: |
Как настраивать сеть: ip addr add 192.168.200.117/24 dev eth0 После этого можно сказать ip addr, чтобы посмотреть, что получилсь. В числе прочего, мы научились вручную настраивать сеть. Данный адрес класса c, это значает, что все компьютеры с адресами 192.168.200.xxx будут считаться принадлежащим нашей сети, а стальные --- другой. Дальше мжно проверить работоспособность сети, например,ЮЮ пингшануть 192.168.200.1. |
Сетям класса D соответствуют адреса, начальные биты которых - 1110. Такие сети используются для мультикастинга, т.е. для групповой передачи данных, при которой не все абоненты получат информацию. Существуют также сети класса E, их старшие биты - 1111, это экспериментальные сети. |
Строка 16: | Строка 18: |
Зедсь мжно вспмнить о такомпонятии как протокол. Вообще, протокол это документ, который описывает, как происх. взаим. п сети в разных случаях. Таких протоколов очен много. В частности, на каждом из уровней есть свои протоолкы. На уровне сетевом (где есть задачи пронумеровать все машины и орг. маршрут.) тже есть свои протоколы, которые позв. решать какие-то задачи. Главная задача, которая должна здесь решаться --- задача передачи диаг. сообщ. Например, невозм. организация маршрута. Причём, про это не знает ни наша мешина, ни сосдедняя, а только в середине маршрута. Тогда надо послать диаг. сообщение оттуда, что пакет не будет дост. Эт одна из чень мнгих задач, которые надо рещать, когда нам надо посл. диаг. о происх. Этот протокол называется ICMP, Internet Connection Management Protocol. Это происх. прямо на уровне ip. В частности, команда ping пользуется одиним из типов таких собщ., на посылает спец. пакет, ICMP-пакет, в котором написано "ответь мне пожалуйста". Ну, там есть ещё некая инф. о том, какой номер такого пакета. Согласно протоколу icmp получатель бязан отослать по получении ответ. | На практике это выглядит следующим образом: 127.0.0.1/8 - IP-адрес класса А. |
Строка 18: | Строка 20: |
Несмотря на очеаидный системный характер протокола ICMP --- он не несёт никаких данных, чрезвычайно вредно уроезать его. При этм действительно нужно знать, какие типы ICMP действительно нужны, а какие --- нет. | Для операций с IP-адресами машины в системе Linux можно использовать команду {{{ip addr}}}. Примерный вывод этой команды имеет следующий вид: {{{ 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:46:43:09:11 brd ff:ff:ff:ff:ff:ff }}} |
Строка 20: | Строка 29: |
Чтобы закрыть вопрос с IP-адресами, лектор добавит вот что: задача перенумеровать все компьютеры адресами невыполнима. Например, есть большое количество компьютеров, которым внешние адреса не нужны. С одной стороны есть преобразование адресов, с другой стороны, есть адресов, которые неуникальны в интернете. В частности, у каждого сетевого интерфейса есть loopback и адрес 127.0.0.1. Диапазон адресов класса A, который начинается на 10., также неуникален. Кроме того адреса в диапазоне, 192.168.0.0/16 тоже можно раздавать без трукдностей. Другое дело, что любой маршрутизатор вам скажет, что компьютеров с такими адресами быть не может. Также локальны 127.0.0.0/8, 172.16.0.0/12. | Рассмотрим теперь, как приписать интерфейсу IP-адрес: {{{ip addr add 192.168.200.117/24 dev eth0}}} После этого введем {{{ip addr}}}, чтобы посмотреть, что получилсь. {{{ [root@vaio ~]# ip addr add 192.168.200.117/24 dev eth0 [root@vaio ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:46:43:09:11 brd ff:ff:ff:ff:ff:ff inet 192.168.200.117/24 scope global eth0 }}} -- В числе прочего, мы научились вручную настраивать сеть. Данный адрес класса 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. |
Строка 24: | Строка 57: |
Прежде чем переходить к марш., решим один очень важный впрос. В случае, если несколько компьютеров объединены СПД, то каждое устойство может каждому передавать каие-т устройства. Но у нас-то маршрутизация сущ. на третьем, стевом, определяющим является не IP, а MAC-адрес, более того, может так случиться, что для MAC-адреса мжет меняться IP, а для IP может меняться MAC. Поэтому не совсем понятно, как может приниматься решение, куда передавать ethernet-frame, ибо мы знаем про абонента только IP. Тут мы встречаемся с понятием сетевой службы, поскольку прежде чем передача данных, должна произойти операция по выяснению того, куда необх. отпр. данные. | Прежде чем переходить к маршрутизации, решим один очень важный вопрос. В случае, если несколько компьютеров объединены СПД, то каждое устройство может каждому передавать какие-то данные. Но у нас-то маршрутизация существует на третьем, сетевом уровне, а в СПД определяющим является не IP, а MAC-адрес, более того, может так случиться, что для MAC-адреса может меняться IP, а для IP может меняться MAC. Поэтому не совсем понятно, как может приниматься решение, куда передавать ethernet-frame, ибо мы знаем про абонента только IP. Тут мы встречаемся с понятием сетевой службы, поскольку прежде чем начнётся передача данных, должна произойти операция по выяснению того, куда необходимо отправить данные. |
Строка 26: | Строка 59: |
Для того, чтобы в теч. некрго времени зранить данные о тм, какому IP соотв. какие MAС, служат ARP-таблицы. Если сказать ip n, то можно увидеть своих соседей. Если попинговать соседнюю тачку и после этого сказать, то можно увидеть свою ARP-таблицу. | Для того, чтобы в течение некоторого времени хранить данные о том, какому IP соответствуют какие MAС, служат ARP-таблицы. Если сказать {{{ip n}}}, то можно увидеть своих соседей. Если попинговать соседнюю тачку и после этого сказать, то можно увидеть свою ARP-таблицу. {{{[root@vaio ~]# ip n 192.168.200.1 dev eth0 lladdr 00:10:dc:63:fc:c0 REACHABLE }}} |
Строка 28: | Строка 64: |
Если сказать tcpdump arp, то при пинге какой-то тачки можно увидеть, что происх. в сети. Вообще, tcpdump ввергает карточку в сост. просл. всей сети, для того, чтбы знать, что в сети происходит. | |
Строка 30: | Строка 65: |
tcpdump arp говорит. что мы слушаем arp. Когда мы пинговали 192.168.200.10, мы выяснили что: | Если сказать tcpdump arp, то при пинге какой-то тачки можно увидеть, что происходит в сети. Вообще, {{{tcpdump}}} ввергает карточку в состояние прослушивания всей сети (promiscous mode), для того, чтбы знать, что в сети происходит. {{{[root@vaio ~]# tcpdump arp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 18:38:02.331053 arp who-has 192.168.200.10 tell vaio.local 18:38:02.331257 arp reply 192.168.200.10 is-at 00:a0:c9:b2:ef:c4 (oui Unknown) 18:38:07.331993 arp who-has vaio.local tell 192.168.200.10 18:38:07.332021 arp reply vaio.local is-at 08:00:46:43:09:11 (oui Unknown) 4 packets captured 4 packets received by filter 0 packets dropped by kernel }}} {{{tcpdump arp}}} говорит, что мы слушаем arp. Когда мы пинговали 192.168.200.10, мы выяснили что: |
Строка 32: | Строка 82: |
* Надо выяснить ARP-адрес этой машины, псылаем широковещательный eth-фрейм, который гворит следующее: "мужики! адрес 192.168.200.10 у кого? Отвечай!" * Получатели принимают этот пакет, пдонимают на уровень ядра, видят, что это за запрос и отвечают: Дорогой 192.168.200.117, MAC у 192.168.200.10 такой. * Когда удалённая машина отвечает на пинг, т она проводит аналгичную операцию. |
* Надо выяснить MAC-адрес этой машины, посылаем широковещательный eth-фрейм (ARP-запрос), который говорит следующее: "мужики! адрес 192.168.200.10 у кого? Отвечай!" * Получатели принимают этот пакет, понимают на уровень ядра, видят, что это за запрос и отвечают: Дорогой 192.168.200.117, MAC у 192.168.200.10 такой. * Когда удалённая машина отвечает на пинг, то она проводит аналогичную операцию. |
Строка 36: | Строка 86: |
Этот протокол отчасти уровня интерфейсного, потму чт происх. обмен eth-фреймами. | Этот протокол отчасти уровня интерфейсного, потому что происх. обмен eth-фреймами. |
Строка 38: | Строка 88: |
Переходим к второй задаче ip, а именно маршрутизации. Мы сейчас всё это время имели дело с локальнй машиной. Что будет, если мы захотим переслать пакет удалённой машине? Ни одной машине в лок. сети этот пакет не нужен. А кому нужен? Маршрутизатору. В сети должны быть одна или неск. машин, которые занимаются тем, что перекладывают пакеты с одного интерфейса на другой. Общий алгоритм очень простой. Сущ. некие правила, по которым в лок. сети выбирается машины, которым передаются пакеты, не адр. машинам данной сети. Эти правила и наз. маршрутизацией. И дальше написания таблички, что за пересылку пакетов в интернет отвечает эта машина, а за пересылку пакетов в жругой класс --- эта, не идёт. | Переходим к второй задаче IP, а именно маршрутизации. Мы сейчас всё это время имели дело с локальной сетью, то есть машинами в той же СПД. Что будет, если мы захотим переслать пакет удалённой машине (в другую СПД)? Ни одной машине в локальной сети этот пакет не нужен. А кому нужен? Маршрутизатору. В сети должны быть одна или несколько машин, которые занимаются тем, что перекладывают пакеты с одного интерфейса на другой. Общий алгоритм очень простой. Существуют некие правила, по которым в локальной сети выбирается машины, которым передаются пакеты, не адресованные машинам данной сети. Эти правила и называются маршрутизацией. И дальше написания таблички, что за пересылку пакетов в интернет отвечает эта машина, а за пересылку пакетов в другую сеть--- эта, дело и не идёт. У обычных хостов содержимое таблички ограничивается одним или несколькими локальными маршрутизаторами. |
Строка 40: | Строка 90: |
Тем не менее, самих правил, связанных с усл., по которым не будет проходить маршгрутизация. По умолчанию, пользовтаелю надо только указать машину, которая является шлюзом (а в случае с DHCP вообще ничего не надо делать): ip route add default via 192.168.200.1. После чего в ip route увидим два маршрута, второй появился автоматом для локальных адресов. В таблице маршрутизации указывается, на какие машины послуать пакеты для каких адресов. Маршруты сортируются по величине маски. | Для указания маршрутизатора по умолчанию, пользователю надо только указать машину, которая является шлюзом (а в случае с DHCP вообще ничего не надо делать): {{{ip route add default via 192.168.200.1}}}. После чего в {{{ip route}}} увидим два маршрута, второй появился автоматом для локальных адресов. В таблице маршрутизации указывается, на какие машины посылать пакеты для каких адресов. Маршруты сортируются по величине маски (количеству бит в маске). |
Строка 42: | Строка 92: |
Как в рещультате форм. маршрут пакета? Это штука вполне динамическая. В каждой точке маршрутизации принимается решение, куда пакет дальше отправить. | Как в результате формируется маршрут пакета? Это штука вполне динамическая. В каждой точке маршрутизации принимается решение, куда пакет дальше отправить. |
Строка 44: | Строка 94: |
Чтобы увидеть, как ходит пакет, можно сделать, например, traceroute 89.188.104.91. Как это реализовано? В принципе, в пакете ip есть флаг record route, но его никто не записывает. Вместо этого используется ttl, который уменьшается на 1 каждую секунду и при каждом прохождении через маршрутизатор. Соответственно, сначала посылается ICMP-пакет с ttl=1, и при первом прохождении через маршрутихзатор ttl обнкляется, о чём маршрутизатор посъылает соообщение. Далее посылается пакет с ttl=2. При этом надо понимать, что этот маршщрут не обязан быть таким, но даёт представление о маршруте. | Чтобы увидеть, как ходит пакет, можно сделать, например, traceroute 89.188.104.91. Как это реализовано? В принципе, в пакете IP есть флаг record route, но его никто не записывает (иначе при больших маршрутах пакет бы перерос сам себя). Вместо этого используется ttl (Time To Live), который уменьшается на 1 каждую секунду или при каждом прохождении через маршрутизатор. Соответственно, сначала посылается ICMP-пакет с ttl=1, и при первом прохождении через маршрутизатор ttl обнуляется, о чём маршрутизатор посылает ICMP-сообщение. Далее посылается пакет с ttl=2. При этом надо понимать, что этот маршрут не обязан быть таким, но даёт представление о маршруте. ==== Хмм ==== Вот что написал, пока заметил, что майнтейнер уже есть. Думаю, поможет. -- VladimirLysikov <<DateTime(2008-07-03T22:08:24Z)>> Задачей протокола IP является передача данных между устройствами, которые, вообще говоря, не находятся в одной среде передачи данных. Для этого необходимо определить, во-первых, механизм адресации, чтобы можно было выделить среди множества компьютеров тот, которому предназначены данные, и, во-вторых, механизм маршрутизации, позволяющий доставку пакетов между различыми сетями. Рассмотрим подробнее каждую из этих двух функций протокола IP. IP-адрес устройства в сети состоит из четырех байт, которые обычно записываются как четыре десятичных числа от 0 до 255, разделенные точками. Распределением IP-адресов занимается организация IANA. Эта организация выделяет диапазоны адресов другим организациям, затем эти диапазоны делятся на более мелкие диапазоны и в конце концов присваиваются компьютерным сетям, и внутри сети устройствам присваиваются адреса из присвоенного этой сети диапазона. Диапазоны организуются так, что у всех компьютеров сети первые несколько бит адреса совпадают, то есть адрес можно разделить на две части: одна из них адресует сеть(т.е одинакова для всех устройств в сети), а другая -- хост в сети, т. е. конкретное устройство. Записывается это следующим образом: после собственно адреса указывается количество бит, адресующих сеть, например 127.0.0.1/8 или 192.168.200.10/24. Раньше использовалась другая система. Было установлено несколько классов сетей. В сети класса A адреса имели вид N.H.H.H, где N - это адрес сети, H - адрес хоста. Адреса сетей класса A начинались с бита 0. В сетях класса B использовались адреса вида N.N.H.H, первые два бита адреса должны были равняться 10, для класса C адреса имели вид N.N.N.H и начинались с последовательности 110. Для операций с IP-адресами машины в системе Linux можно использовать команду {{{ip addr}}}. Примерный вывод этой команды имеет следующий вид: {{{ 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:46:43:09:11 brd ff:ff:ff:ff:ff:ff }}} |
Строка 51: | Строка 119: |
|| 0 || 1 || 1 || 1 || || 1 || || || | || 30 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, ОльгаТочилкина || || |
Сетевой уровень
Cпасибо VladimirLysikov за неожиданную помощь -- ОльгаТочилкина
С развитием концепции глобальной сети в уровень были внесены дополнительные возможности по передаче из любой сети в любую сеть, независимо от протоколов нижнего уровня, а также возможность запрашивать данные от удалённой стороны Задачей протокола IP является передача данных между устройствами, которые, вообще говоря, не находятся в одной среде передачи данных. Для этого необходимо определить, во-первых, механизм адресации, чтобы можно было выделить среди множества компьютеров тот, которому предназначены данные, и, во-вторых, механизм маршрутизации, позволяющий доставку пакетов между различными сетями. Рассмотрим подробнее каждую из этих двух функций протокола IP.
Рассмотрим устройство TCP/IP.
IP-адрес устройства в сети состоит из четырех байт, которые обычно записываются как четыре десятичных числа от 0 до 255, разделенные точками. Распределением IP-адресов занимается организация IANA. Эта организация выделяет диапазоны адресов другим организациям, затем эти диапазоны делятся на более мелкие диапазоны и в конце концов присваиваются компьютерным сетям, и внутри сети устройствам присваиваются адреса из присвоенного этой сети диапазона. Диапазоны организуются так, что у всех компьютеров сети первые несколько бит адреса совпадают, то есть адрес можно разделить на две части: одна из них адресует сеть(т.е одинакова для всех устройств в сети), а другая -- хост в сети, т. е. конкретное устройство. Записывается это следующим образом: после собственно адреса указывается количество бит, адресующих сеть, например 127.0.0.1/8 или 192.168.200.10/24. Количество бит идентификатора хоста (k) позволяет вычислить количество машин в сети: оно равно 2^k-2.
Раньше использовалась другая, классовая, система. IP-адреса соответствовали четырем классов: A, B, C, D и E. В общем, система классов характеризуется следующим подходом: IP-адрес делится на две части - идентификатор сеть и идентификатор абонента сети. Если адрес сети двух компьютеров совпадает, то передача между ними является локальной, иначе необходимо выяснить, какой маршрутизатор может передать эти данные.
Принадлежность к тому или иному классу определяется следующим образом: рассмотрим IP-адреса как строку битов и выберем те, у которых первый (старший) бит - 0. Сети с такими адресами являются сетями класса А; их адрес может быть представлен в виде N.H.H.H, где N - cеть (network), H - хост (host). Под адрес абонента отводится 3 байта, это означает, что внутри локальной сети может находиться сразу 16 млн компьютеров. Соответственно, адрес сети занимает 1 байт. В связи с тем, что адреса класса А имеют 8-разрядный сетевой префикс (т.е. сеть индентифицируется 8 битами), их обозначают записью /8. Cетям класса B (N.N.H.H) соответствуют IP-адреса, начальные биты которых - 10, сетям класса C (N.N.N.H) - адреса, начальные биты которых - 110. Аналогично обозначению сетей класса А, сети классов B, C, D обозначаются /16 и /24.
Сетям класса D соответствуют адреса, начальные биты которых - 1110. Такие сети используются для мультикастинга, т.е. для групповой передачи данных, при которой не все абоненты получат информацию. Существуют также сети класса E, их старшие биты - 1111, это экспериментальные сети.
На практике это выглядит следующим образом: 127.0.0.1/8 - IP-адрес класса А.
Для операций с IP-адресами машины в системе Linux можно использовать команду ip addr. Примерный вывод этой команды имеет следующий вид:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:46:43:09:11 brd ff:ff:ff:ff:ff:ff
Рассмотрим теперь, как приписать интерфейсу IP-адрес: ip addr add 192.168.200.117/24 dev eth0 После этого введем ip addr, чтобы посмотреть, что получилсь. {{{ [root@vaio ~]# ip addr add 192.168.200.117/24 dev eth0
- [root@vaio ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
- link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
- link/ether 08:00:46:43:09:11 brd ff:ff:ff:ff:ff:ff inet 192.168.200.117/24 scope global eth0
- }}}
--
В числе прочего, мы научились вручную настраивать сеть. Данный адрес класса 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-таблицу. {{{[root@vaio ~]# ip n 192.168.200.1 dev eth0 lladdr 00:10:dc:63:fc:c0 REACHABLE }}}
Если сказать tcpdump arp, то при пинге какой-то тачки можно увидеть, что происходит в сети. Вообще, tcpdump ввергает карточку в состояние прослушивания всей сети (promiscous mode), для того, чтбы знать, что в сети происходит.
{{{[root@vaio ~]# tcpdump arp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 18:38:02.331053 arp who-has 192.168.200.10 tell vaio.local 18:38:02.331257 arp reply 192.168.200.10 is-at 00:a0:c9:b2:ef:c4 (oui Unknown) 18:38:07.331993 arp who-has vaio.local tell 192.168.200.10 18:38:07.332021 arp reply vaio.local is-at 08:00:46:43:09:11 (oui Unknown)
4 packets captured 4 packets received by filter 0 packets dropped by kernel }}}
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. При этом надо понимать, что этот маршрут не обязан быть таким, но даёт представление о маршруте.
Хмм
Вот что написал, пока заметил, что майнтейнер уже есть. Думаю, поможет. -- VladimirLysikov 2008-07-04 01:08:24
Задачей протокола IP является передача данных между устройствами, которые, вообще говоря, не находятся в одной среде передачи данных. Для этого необходимо определить, во-первых, механизм адресации, чтобы можно было выделить среди множества компьютеров тот, которому предназначены данные, и, во-вторых, механизм маршрутизации, позволяющий доставку пакетов между различыми сетями. Рассмотрим подробнее каждую из этих двух функций протокола IP.
IP-адрес устройства в сети состоит из четырех байт, которые обычно записываются как четыре десятичных числа от 0 до 255, разделенные точками. Распределением IP-адресов занимается организация IANA. Эта организация выделяет диапазоны адресов другим организациям, затем эти диапазоны делятся на более мелкие диапазоны и в конце концов присваиваются компьютерным сетям, и внутри сети устройствам присваиваются адреса из присвоенного этой сети диапазона. Диапазоны организуются так, что у всех компьютеров сети первые несколько бит адреса совпадают, то есть адрес можно разделить на две части: одна из них адресует сеть(т.е одинакова для всех устройств в сети), а другая -- хост в сети, т. е. конкретное устройство. Записывается это следующим образом: после собственно адреса указывается количество бит, адресующих сеть, например 127.0.0.1/8 или 192.168.200.10/24.
Раньше использовалась другая система. Было установлено несколько классов сетей. В сети класса A адреса имели вид N.H.H.H, где N - это адрес сети, H - адрес хоста. Адреса сетей класса A начинались с бита 0. В сетях класса B использовались адреса вида N.N.H.H, первые два бита адреса должны были равняться 10, для класса C адреса имели вид N.N.N.H и начинались с последовательности 110.
Для операций с IP-адресами машины в системе Linux можно использовать команду ip addr. Примерный вывод этой команды имеет следующий вид:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 08:00:46:43:09:11 brd ff:ff:ff:ff:ff:ff
Сведения о ресурсах
Готовность (%) |
Продолжительность (ак. ч.) |
Подготовка (календ. ч.) |
Полный текст (раб. д.) |
Предварительные знания |
Level |
Maintainer |
Start date |
30 |
1 |
1 |
1 |
|
1 |
|