Различия между версиями 18 и 19
Версия 18 от 2008-07-02 23:26:48
Размер: 7763
Редактор: PavelSutyrin
Комментарий:
Версия 19 от 2008-07-02 23:40:45
Размер: 8996
Редактор: PavelSutyrin
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
## Женя, как у нас с аудиозаписями?.. Я бы хотел воспользоваться ими для закрытия первых 20% по каждому куску. Отпиши мне в личку, что ли. Телефон у тебя не отвечает :)  ## Женя, как у нас с аудиозаписями?.. Я бы хотел воспользоваться ими для закрытия первых 20% по каждому куску. Отпиши мне в личку, что ли. Телефон у тебя не отвечает :)
Строка 4: Строка 4:
Исследуем сеть на физическом уровене. Пусть у нас сеть Ethernet. Для того, чтобы посмотреть, какие сетевые интерфейсы есть в системе, можно воспользоваться командой {{{ip link}}} или просто {{{ip l}}}:
{{{
[root@demo ~]# ip link
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 08:00:27:50:7a:b1 brd ff:ff:ff:ff:ff:ff
}}}
Видно два интерфейса, {{{lo}}}, и {{{eth0}}}. В Linux-машине, даже если нет физических сетевых адаптеров, один сетевой интерфейс есть всегда (впрочем, если может и не быть, в том случае, когда поддержка сети не включена в ядро) --- это так называемый loopback, обратная петля. Через него можно подключиться к этой же самой машине. Это удобно, например, для отладки программ, работающих с сетью, когда самой сети под рукой нет. Традиционно интерфейсы называются {{{ethN}}}, где {{{N}}} -- номер, и нумеруются с 0, т.е. {{{eth0}}}, {{{eth1}}}, и т.п.
Строка 5: Строка 14:
Исследуем сеть на физическом уровене. Пусть у нас сеть Ethernet. Для того, чтобы посмотреть, какие сетевые интерфейсы есть в системе, можно воспользоваться командой "ip link" или просто "ip l". Как можно видеть, один интерфейс есть в Linux-машине всегда --- это loopback. Оно просто позволяет подключаться любой программе, ориентированной на работу с сетью, к этой же самой машине, это удобно. С некоторых пор интерфейсы можно переименовывать, а традиционно они называются ethX и нумеруются с 0, т.е. eth0, eth1, и т.п. Далее указан MAC и broadcast-адрес. Далее указан MAC и broadcast-адрес каждого интерфейса. MAC-адрес --- это 6 байт, которые записываются в шестнадцатеричном виде через {{{:}}}. Видно, что у интерфейса {{{lo}}} его нет, а у {{{eth0}}} --- вполне определенный. Этот адрес присваивается сетевому адаптеру производителем. Первые три байта составляют код производителя, оставшиеся три байта --- код сетевого адаптера.
Строка 7: Строка 16:
Родилось определение, что локальная сеть --- это множество узлов, которые видят друг друга в рамках одной среды передачи данных. А то спорят все, какая локальная, какая не локальная.  Родилось определение, что локальная сеть --- это множество узлов, которые видят друг друга в рамках одной среды передачи данных. А то спорят все, какая локальная, какая не локальная.
Строка 11: Строка 20:
Опять второе свйство tcp/ip (инкапсуляция). Вот мы решили передать данные, скармливаем их программе, например, ftp-клиенту, он оформляет некоторым образом их соответствии с протоколом ftp. Далее движемся вниз по уровням. В тот момент, когда возникает необходимость осуществить ftp-обмен, этот массив режется на фрагменты в соответствии с требованиями tcp. Каждый фрагмент передается вниз, на уровень tcp и заворачивается там в tcp-пакет -- к нему добавляются служебные данные, специфичные для tcp.
На этом дело не останавливается. Допустим, по правилам маршрутизации нашего сетевого уровня выяснилось, что следующий компьютер --- это один из наших соседей.
Тогда каждый из tcp-пакетов режется на куски того размера, который диктует нам уровень ip, и передается ему вниз, где каждый кусок заворачивается в ip-пакет, в котором содержатся еще служебные данные, характерные для ip. И снова повторяется эта операция --- разрезания и заворачивания частей в пакеты более низкого уровня, в данном случае, например, ethernet-фреймы.
Опять второе свйство tcp/ip (инкапсуляция). Вот мы решили передать данные, скармливаем их программе, например, ftp-клиенту, он оформляет некоторым образом их соответствии с протоколом ftp. Далее движемся вниз по уровням. В тот момент, когда возникает необходимость осуществить ftp-обмен, этот массив режется на фрагменты в соответствии с требованиями tcp. Каждый фрагмент передается вниз, на уровень tcp и заворачивается там в tcp-пакет -- к нему добавляются служебные данные, специфичные для tcp.  На этом дело не останавливается. Допустим, по правилам маршрутизации нашего сетевого уровня выяснилось, что следующий компьютер --- это один из наших соседей.  Тогда каждый из tcp-пакетов режется на куски того размера, который диктует нам уровень ip, и передается ему вниз, где каждый кусок заворачивается в ip-пакет, в котором содержатся еще служебные данные, характерные для ip. И снова повторяется эта операция --- разрезания и заворачивания частей в пакеты более низкого уровня, в данном случае, например, ethernet-фреймы.
Строка 15: Строка 22:
Таким образом, происходит инкапсуляция пакетов от протоколов верхнего уровня в пакеты протоколов более низких уровня.  Таким образом, происходит инкапсуляция пакетов от протоколов верхнего уровня в пакеты протоколов более низких уровня.
Строка 19: Строка 26:
В некоторых случаях может быть так, что ip-пакеты собираются до tcp, чтобы решить, что делать дальше. Это налдо всегда иметь в виду.  В некоторых случаях может быть так, что ip-пакеты собираются до tcp, чтобы решить, что делать дальше. Это налдо всегда иметь в виду.
Строка 21: Строка 28:
Главное, что известно: фактически по сети передаётся существенно больше данных, чем запланировано на верхнем уровне.  Главное, что известно: фактически по сети передаётся существенно больше данных, чем запланировано на верхнем уровне.
Строка 23: Строка 30:
Еще про Ethernet.  Еще про Ethernet.
Строка 25: Строка 32:
Сравнение mac-адреса получателя фрейма и mac-адреса сетевого адаптера делается на аппаратном уровне, поэтому операционная система, которая общается с адаптером со своей стороны, даже не узнает, что какие-то фреймы он отбросил как чужие.  Сравнение mac-адреса получателя фрейма и mac-адреса сетевого адаптера делается на аппаратном уровне, поэтому операционная система, которая общается с адаптером со своей стороны, даже не узнает, что какие-то фреймы он отбросил как чужие.
Строка 27: Строка 34:
В некоторых случаях бывает полезно перевести адаптер в так называемый promiscuous (неразборчивый) режим. В этом случае адаптер будет принимать все пакеты, которые пробегают мимо него, в частности, чужие. Вообще говоря, именно таким спсобом сканируют чужой траффик и выковыривают пароли... Допустим, Вы вчера посидели в аське, а завтра в аське сидит Петька. Есть, впрочем, метод выявляения таких шпионов: пишется программа, которая генерит немыслимое количество фреймов, которые предназначены никому. Адаптеры в обычном режиме их спокойно проигнорирут, а вот если в сети есть узел, адаптер которого прослушивает весь траффик, то характеристики его заметно изменятся, он будет хуже отвечать на пинг, и т.п.  В некоторых случаях бывает полезно перевести адаптер в так называемый promiscuous (неразборчивый) режим. В этом случае адаптер будет принимать все пакеты, которые пробегают мимо него, в частности, чужие. Вообще говоря, именно таким спсобом сканируют чужой траффик и выковыривают пароли... Допустим, Вы вчера посидели в аське, а завтра в аське сидит Петька. Есть, впрочем, метод выявляения таких шпионов: пишется программа, которая генерит немыслимое количество фреймов, которые предназначены никому. Адаптеры в обычном режиме их спокойно проигнорирут, а вот если в сети есть узел, адаптер которого прослушивает весь траффик, то характеристики его заметно изменятся, он будет хуже отвечать на пинг, и т.п.

Физический и канальный уровни

Исследуем сеть на физическом уровене. Пусть у нас сеть Ethernet. Для того, чтобы посмотреть, какие сетевые интерфейсы есть в системе, можно воспользоваться командой ip link или просто ip l:

[root@demo ~]# ip link
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 08:00:27:50:7a:b1 brd ff:ff:ff:ff:ff:ff

Видно два интерфейса, lo, и eth0. В Linux-машине, даже если нет физических сетевых адаптеров, один сетевой интерфейс есть всегда (впрочем, если может и не быть, в том случае, когда поддержка сети не включена в ядро) --- это так называемый loopback, обратная петля. Через него можно подключиться к этой же самой машине. Это удобно, например, для отладки программ, работающих с сетью, когда самой сети под рукой нет. Традиционно интерфейсы называются ethN, где N -- номер, и нумеруются с 0, т.е. eth0, eth1, и т.п.

Далее указан MAC и broadcast-адрес каждого интерфейса. MAC-адрес --- это 6 байт, которые записываются в шестнадцатеричном виде через :. Видно, что у интерфейса lo его нет, а у eth0 --- вполне определенный. Этот адрес присваивается сетевому адаптеру производителем. Первые три байта составляют код производителя, оставшиеся три байта --- код сетевого адаптера.

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

Далее поднимаемся на уровень сетевой. Тут мы должны выполнить две задачи: перенумеровать все компьютеры в интернете, чтобы отличать их друг от друга, и организовать маршрутизацию данных от одного компьютера к другому, т.к. вообще говоря, между отправителем и получателем данные могут идти по нескольким СПД.

Опять второе свйство tcp/ip (инкапсуляция). Вот мы решили передать данные, скармливаем их программе, например, ftp-клиенту, он оформляет некоторым образом их соответствии с протоколом ftp. Далее движемся вниз по уровням. В тот момент, когда возникает необходимость осуществить ftp-обмен, этот массив режется на фрагменты в соответствии с требованиями tcp. Каждый фрагмент передается вниз, на уровень tcp и заворачивается там в tcp-пакет -- к нему добавляются служебные данные, специфичные для tcp. На этом дело не останавливается. Допустим, по правилам маршрутизации нашего сетевого уровня выяснилось, что следующий компьютер --- это один из наших соседей. Тогда каждый из tcp-пакетов режется на куски того размера, который диктует нам уровень ip, и передается ему вниз, где каждый кусок заворачивается в ip-пакет, в котором содержатся еще служебные данные, характерные для ip. И снова повторяется эта операция --- разрезания и заворачивания частей в пакеты более низкого уровня, в данном случае, например, ethernet-фреймы.

Таким образом, происходит инкапсуляция пакетов от протоколов верхнего уровня в пакеты протоколов более низких уровня.

После фактической передачи происходит обратное путешествие: этот фарш восстанавливается обратно: из нескольких eth-фреймов получаем ip-пакет, узнаём, допустим, что его надо отправтиь дальше, запаковываем и отправляем обратно. И так до целевой машины, котрая из нескольких ip-пакетов соберёт tcp-пакет и обработает его на уровне tcp и, возможно выше.

В некоторых случаях может быть так, что ip-пакеты собираются до tcp, чтобы решить, что делать дальше. Это налдо всегда иметь в виду.

Главное, что известно: фактически по сети передаётся существенно больше данных, чем запланировано на верхнем уровне.

Еще про Ethernet.

Сравнение mac-адреса получателя фрейма и mac-адреса сетевого адаптера делается на аппаратном уровне, поэтому операционная система, которая общается с адаптером со своей стороны, даже не узнает, что какие-то фреймы он отбросил как чужие.

В некоторых случаях бывает полезно перевести адаптер в так называемый promiscuous (неразборчивый) режим. В этом случае адаптер будет принимать все пакеты, которые пробегают мимо него, в частности, чужие. Вообще говоря, именно таким спсобом сканируют чужой траффик и выковыривают пароли... Допустим, Вы вчера посидели в аське, а завтра в аське сидит Петька. Есть, впрочем, метод выявляения таких шпионов: пишется программа, которая генерит немыслимое количество фреймов, которые предназначены никому. Адаптеры в обычном режиме их спокойно проигнорирут, а вот если в сети есть узел, адаптер которого прослушивает весь траффик, то характеристики его заметно изменятся, он будет хуже отвечать на пинг, и т.п.


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

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

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

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

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

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

Level

Maintainer

Start date

20

1

1

1

1

PavelSutyrin

02.07.2008


PspoClasses/080702/03Ethernet (последним исправлял пользователь VsevolodKrishchenko 2008-08-21 00:18:56)