Различия между версиями 32 и 33
Версия 32 от 2008-07-05 19:43:56
Размер: 11649
Редактор: eSyr
Комментарий:
Версия 33 от 2008-07-06 16:14:05
Размер: 11655
Редактор: Allena
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:
Исследуем сеть на физическом уровене. Пусть у нас сеть Ethernet. Для того, чтобы посмотреть, какие сетевые интерфейсы есть в системе, можно воспользоваться командой {{{ip link}}} или просто {{{ip l}}}:
{{{
Исследуем сеть на физическом уровене. Рассмотрим сеть Ethernet.
Увид
еть имеющиеся в системе сетевые интерфейсы можно воспользовавшись командами {{{ip link}}} или {{{ip l}}}.

''Пример''

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

Даже если физические сетевые адаптеры отсутствуют, ОС Linux, если в ней присутствует поддержка сети, предоставляет один сетевой интерфейс -- так называемый loopback (обратная петля). Этот интерфейс предоставляет возможность подключения к самому себе. Подобное может быть удобно, например, при отладке работающих с сетью программ в условиях отсутствия сети из нескольких компьютеров.

Традиционно интерфейсы Ethernet-адаптеров именуются {{{ethN}}}: {{{eth0}}}, {{{eth1}}}, и т.п.

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

Исследуем сеть на физическом уровене. Рассмотрим сеть 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

}}}

В данном примере в системе есть 2 интерфейса:lo и eth0.

Даже если физические сетевые адаптеры отсутствуют, ОС Linux, если в ней присутствует поддержка сети, предоставляет один сетевой интерфейс -- так называемый loopback (обратная петля). Этот интерфейс предоставляет возможность подключения к самому себе. Подобное может быть удобно, например, при отладке работающих с сетью программ в условиях отсутствия сети из нескольких компьютеров.

Традиционно интерфейсы Ethernet-адаптеров именуются ethN: eth0, eth1, и т.п.

После link/loopback и link/ether указаны MAC-адреса интерфейсов. MAC-адрес --- это 6 байт, которые записываются в шестнадцатеричном виде через :. Видно, что у интерфейса lo его нет (нулевой), а у eth0 --- вполне определенный. Физическим сетевым адаптерам этот адрес присваивается производителем. Первые три байта составляют код производителя, оставшиеся три байта --- код сетевого адаптера. Современные адаптеры позволяют его изменять, но этого делать не рекомендуется.

После brd указан еще один MAC-адрес --- это так называемый broadcast (широковещательный) адрес. Он используется для того, чтобы послать некоторый фрейм сразу всем адаптерам, подключенным к данной среде. У lo его по понятным причинам нет, а у eth0 он состоит из все единиц в двоичном представлении.

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

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

Можно дать такое определение: локальная сеть --- это множество узлов, которые равноправно общаются между собой через одну среду передачи данных.

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

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

  1. Однозначно идентифицировать все компьютеры в глобальной сети, чтобы их адресовать и отличать друг от друга,
  2. Организовать маршрутизацию данных от одного компьютера к другому через некоторое количество промежуточных узлов.

Инкапсуляция протоколов TCP/IP

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

Например, пусть у нас работает FTP-клиент. Будучи сам на прикладном уровне, он приготовил FTP-специфический массив данных, например, большой файл и собирается его передать, воспользовавшись услугами нижнего, транспортного уровня (допустим, TCP). Для передачи по TCP этот массив должен быть разбит на фрагменты определенного размера. Каждый такой фрагмент инкапсулируется в TCP-пакет и снабжается дополнительной служебной информацией, характерной для протокола TCP. На этом дело не останавливается. Для передачи каждого TCP-пакета средствами IP он должен быть, в свою очередь разбит на фрагменты определенного размера (характерного для IP). Каждый из этих фрагментов инкапсулируется в IP-пакет и снабжается своей служебной информацией, на этот раз характерной для протокола IP. Допустим, по правилам маршрутизации выяснилось, что нам нужно передать этот пакет нашему ближайшему соседу по сети. Операция повторяется снова --- IP-пакет разбивается и инкапсулируется в несколько пакетов физического уровня, например, ethernet-фреймов.

После передачи фреймов по физическому каналу происходит обратное преобразование: из "фарша" восстанавливается "корова": протокол физического уровня Ethernet составляет из нескольких своих фреймов некоторый набор данных, который передает на уровень выше. Протокол IP в этом наборе данных узнаёт IP-пакет и интерпретирует служебную информацию, в частности IP-адрес. Предположим, по правилам маршрутизации IP-пакет надо отправить следующему соседу. Тогда он снова передаётся на физический уровень, где инкапсулируется в несколько фреймах, и т.д. Если IP-протокол решит, что именно эта машина является получателем, то он из нескольких IP-пакетов соберёт некоторый набор данных, и передает его на уровень TCP, который узнает в этом наборе TCP-пакет и обработает его подобающим образом.

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

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


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

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

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

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

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

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

Level

Maintainer

Start date

30

1

1

1

1

PavelSutyrin, Allena

02.07.2008


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