Differences between revisions 26 and 27
Revision 26 as of 2008-07-04 14:59:31
Size: 25237
Comment:
Revision 27 as of 2008-07-04 15:05:54
Size: 23922
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
IP-адрес устройства в сети состоит из четырех байт, которые обычно записываются как четыре десятичных числа от 0 до 255, разделенные точками. Распределением IP-адресов занимается организация IANA. Эта организация выделяет диапазоны адресов другим организациям, затем эти диапазоны делятся на более мелкие диапазоны и в конце концов присваиваются компьютерным сетям, и внутри сети устройствам присваиваются адреса из присвоенного этой сети диапазона. Диапазоны организуются так, что у всех компьютеров сети первые несколько бит адреса совпадают, то есть адрес можно разделить на две части: одна из них адресует сеть(т.е одинакова для всех устройств в сети), а другая -- хост в сети, т. е. конкретное устройство. Записывается это следующим образом: после собственно адреса указывается количество бит, адресующих сеть, например 127.0.0.1/8 или 192.168.200.10/24. Рассмотрим устройство TCP/IP.
 
IP-адрес устройства в сети состоит из четырех байт, которые обычно записываются как четыре десятичных числа от 0 до 255, разделенные точками. Распределением IP-адресов занимается организация IANA. Эта организация выделяет диапазоны адресов другим организациям, затем эти диапазоны делятся на более мелкие диапазоны и в конце концов присваиваются компьютерным сетям, и внутри сети устройствам присваиваются адреса из присвоенного этой сети диапазона. Диапазоны организуются так, что у всех компьютеров сети первые несколько бит адреса совпадают, то есть адрес можно разделить на две части: одна из них адресует сеть(т.е одинакова для всех устройств в сети), а другая -- хост в сети, т. е. конкретное устройство. Записывается это следующим образом: после собственно адреса указывается количество бит, адресующих сеть, например 127.0.0.1/8 или 192.168.200.10/24.  Количество бит идентификатора хоста (k) позволяет вычислить количество машин в сети: оно равно 2^k-2.
Line 10: Line 12:
Раньше использовалась другая система. Было установлено несколько классов сетей. В сети класса A адреса имели вид N.H.H.H, где N - это адрес сети, H - адрес хоста. Адреса сетей класса A начинались с бита 0. В сетях класса B использовались адреса вида N.N.H.H, первые два бита адреса должны были равняться 10, для класса C адреса имели вид N.N.N.H и начинались с последовательности 110. Раньше использовалась другая, классовая, система. 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-адрес класса А.
Line 21: Line 29:
Рассмотрим устройство TCP/IP. Как уже было сказано, на уровне IP идентификация производится при помощи IP-адреса, занимающего 4 байта. В старых книжках по TCP/IP пишут, что IP-адреса бывают четырех классов: A, B, C, D и E. В общем, система классов характеризуется следующим подходом: IP-адрес делится на две части - идентификатор сеть и идентификатор абонента сети. Если адрес сети двух компьютеров совпадает, то передача между ними является локальной, иначе необходимо выяснить, какой маршрутизатор может передать эти данные.  
Line 23: Line 31:
Принадлежность к тому или иному классу определяется следующим образом: рассмотрим 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-адрес класса А.

Однако сейчас классовая система не используется. Вместо нее применяется система диапазонов адресов, которые раздаются по мере надобности. Таким образом, под идентификатор сети можно отводить разное количество бит. Количество бит идентификатора хоста (k) позволяет вычислить количество машин в сети: оно равно 2^k-2. Если адрес хоста состоит только из единиц, то это широковещательный пакет.
Line 32: Line 33:
После

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

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-адрес: 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-03 22: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

MaximByshevskiKonopko, ОльгаТочилкина


PspoClasses/080702/04IP (last edited 2008-10-04 07:24:12 by VsevolodKrishchenko)