Немного информации о сетях

Очередной блог :)

Модератор: alibek

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Немного информации о сетях

Сообщение alibek » 07.07.2011 (Чт) 21:22

[placeholder]

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Немного информации о сетях

Сообщение alibek » 07.07.2011 (Чт) 22:03

Возникла у меня мысль написать о том, что мне известно о сетях IP.
Но все, что я знаю, писать бессмысленно — во-первых, в интернете это уже описано, причем лучше и полнее, чем напишу я, во-вторых, весь объем знаний нужно структурировать, прежде чем его изложить, а это займет много времени и усилий.

Поэтому писать я буду только о каких-то аспектах, какие-то области описывая довольно подробно, какие-то лишь поверхностно.
Какие именно — я еще окончательно не решил. Если читателей форума интересуют какие-то темы, пишите сюда, я постараюсь учесть эти пожелания.
После того, как я окончательно определюсь со структурой будущего поста, этот топик я разделю, оформив этот пост и все последующие в новый топик. А в текущем топике останется только первый пост.
Сразу скажу, что пост будет преимущественно текстовым, в нем будет минимум графиков, таблиц и схем.
Кому нужны справочники, могут поискать их в интернете, они гораздо более полные, чем та статья, которую я планирую составить.

По поводу литературы.
Если есть желание почитать что-то дополнительное, могу порекомендовать три основных источника.
1. Поисковик с адекватными запросами. Введите в гугле "маршрутизация ip", в результатах на первых трех страницах будет достаточно информации, чтобы во всех деталях разобраться с этим вопросом.
2. Книга "Принципы маршрутизации в Internet", автор Сэм Хелеби. Лично в моем рейтинге одна из самых лучших книг в теме. В частности, станет понятно, что адреса 127.0.0.1, 192.168.1.4, 224.0.0.1 и т.п. взяты не на пустом месте. Приоритет в книге отдан вопросам маршрутизации (а это основное в IP), но много и другой дополнительной информации.
3. Могу также посоветовать эту книгу: http://nag.ru/projects/book/
Книга, которую довольно интересно читать и в которой имеется множество информации (правда информация подается несколько хаотично). Правда некоторые (многие) моменты в книге устарели и были актуальны лет 15-20 назад, но читать книгу все-равно стоит.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Немного информации о сетях

Сообщение alibek » 07.07.2011 (Чт) 22:06

ЧЕРНОВИК


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



Редакция: 6
Обновлено: 2011-07-16, 14:30



Оглавление

  • Введение
  • Терминология
  • Немного об OSI
    • 1 уровень
    • 2 уровень
    • 3 уровень
    • 4 уровень
    • 5,6,7 уровень
  • Немного об IP
    • Адресация
    • Протоколы, порты
    • Транспортный уровень
  • Маршрутизация
    • Простые случаи
    • Маршрутизация в сетях
    • Маршрутизация в интернет
  • Взаимодействие сетей

Изображение

Введение

Прежде всего, данная статья — не справочник. Она также не претендует на то, чтобы ввести в курс дела читателя, который совершенно не представляет себе, что такое компьютерные сети. Кроме того, она не является универсальной и 90% сказанного будет относиться к современным сетям, в которых используется протокол TCP/IP и которые строятся на технологии Ethernet.

Терминология

По возможности, будет применяться терминология, ставшая общеупотребительной в русскоязычной среде. Значение терминов может быть различным в разных контекстах (например, под "устройством" на втором уровне OSI может пониматься хаб, а на третьем уровне компьютер, L3-коммутатор или маршрутизатор).
  • Сеть
    В общем случае сеть — это совокупность различных устройств, соединенных каналами связи, по которым возможно осуществлять обмен данными между устройствами. В некоторых случаях под сетью могут подразумеваться непосредственно каналы связи.
  • Канал связи
    Канал связи представляет собой некую физическую среду (медный провод, оптическое волокно, эфир), в которой возможна передача сигнала (например, от одного устройства к другому). В более широком смысле канал связи это не только физическая среда, но и технические решения (устройства, протоколы), обеспечивающие передачу сигналов.

Немного об OSI

OSI — это семиуровневая сетевая модель, используемая для описания коммуникаций и сетевых протоколов.
Лично я не вижу смысла глубоко вдаваться в изучение этой модели, достаточно просто представлять себе суть этой модели.
Суть довольно проста и ее проще всего передать в виде аналогий и примеров.

1 уровень
Этот уровень еще называется физическим. На этом уровне описывается среда передачи сигналов, способы формирования сигнала; это стык между информацией и ее физическим воплощением. Протоколы этого уровня описывают алгоритмы и методы кодирования цифровых сигналов. Примеры протоколов: V.35 (Dial-Up модем), RS-232 (последовательный порт COM), Ethernet, 802.11 (беспроводная связь Wi-Fi). На этом уровне описывается напряжение сигнала для логической единицы и логического нуля, длительность интервалов, частоты радиосвязи, тип модуляции и т.п.
Этот уровень как правило реализуется аппаратно, соответствующим устройством (сетевой картой, контроллером UART, нормальным модемом), и интереса для программиста не представляет (разве что для кристальщика).
На этом с первым уровнем я думаю закончить.

2 уровень
Этот уровень называется канальным. Чтобы проще было понять, это уровень физических соединений, когда два устройства, обменивающиеся информацией, имеют непосредственную связь друг с другом. Поскольку статья в первую очередь о сетях IP, то это уровень коммуникации между сетевыми интерфейсами (например, между двумя компьютерами, соединенными патч-кордом).
На этом уровне данные передаются во фреймах Ethernet, для адресации применяются MAC-адреса (аппаратные адреса).
MAC-адреса должны быть уникальны в пределах одного физического сегмента Ethernet — сегмента, в котором устройства связаны друг с другом непосредственно или через устройства первого или второго уровня (повторители, хабы, свитчи).
В заголовке каждого пакета данных (фрейма) присутствуют поля "MAC-адрес отправителя" и "MAC-адрес получателя", поэтому возможна доставка пакетов в разделяемой среде передачи данных (когда все устройства используют одну и ту же физическую среду передачи данных); любое устройство может определить, ему ли предназначен прибывшый пакет и кто его отправитель.
Как правило, сеть Ethernet строится на хабах (концентраторах) или свитчах (коммутаторах). Обычно под хабами и свитчами понимают следующее.
Хаб — это очень простое устройство, которое работает на первом уровне OSI. Принцип его работы простой — полученный с одного порта пакет данных копируется во все остальные порты. При этом этот пакет данных получают все устройства, подключенные к хабу, но т.к. в пакете указан MAC-адрес получателя, они сравнивают этот адрес со своим MAC-адресом и игнорируют пакеты, если адреса различаются. В связи с этой особенностью у хабов есть три основные проблемы: коллизии (когда на один порт одновременно приходят два пакета), безопасность (злоумышленних может просматривать весь трафик, проходящий через хаб) и перегрузка сети (т.к. пакеты копируются на все порты, это приводит к лавинообразному росту трафика).
Свитч — устройство более интеллектуальное, которое работает на втором уровне OSI. Если упрощенно, то свитч ведет учет MAC-адресов на каждом своем порту и в каждый момент времени знает, какой из подключенных MAC-адресов на каком порту находится; эта информация пополняется динамически, при поступлении пакета. При обработке пакета данных свитч сверяется со своей таблицей MAC-адресов и копирует пакет только на тот порт, за которым находится получатель пакета. Если MAC-адрес отсутствует в таблице MAC-адресов, пакет копируется на все порты.
Различают управляемые и неуправляемые коммутаторы. Управляемые коммутаторы обычно более интеллектуальны и позволяют задавать более сложные правила коммутации пакетов. Отдельно можно выделить коммутаторы третьего уровня (Level 3 Switch), которые позволяют управлять коммутацией пакетов на третьем уровне OSI.

3 уровень
Этот уровень обычно называют сетевым. В нашем частном случае к этому уровню относится IP.
На этом уровне определяется логическая адресация и определение пути передачи данных (маршрутизация). Кроме того, на этом уровне также осуществляется трансляция логических адресов (третий уровень) в физические адреса (второй уровень).
Если второй уровень отвечал за коммутацию пакетов между непосредственно соединенными устройствами в одном сегменте сети, то третий уровень отвечает за коммутацию пакетов между разными сегментами. При этом на стыке сегментов работает роутер (маршрутизатор), который и осуществляет маршрутизацию пакетов.
Для адресации в протоколе IP применяются IP-адреса. IP-адрес представляет собой значение из 4 байт / 32 бит (IP версии 4) или 16 байт / 128 бит (IP версии 6), которое должно быть уникальным в пределах сети.
Раньше применялась классовая адресация, которая определяла пять классов сетей; класс определял, какие биты в адресе указывали на номер сети, а какие биты указывали на номер хоста (например класс C определяет сеть емкостью в 256 хостов, таких сетей в глобальном пространстве IPv4 может быть около двух миллионов). Более подробно можно почитать в Википедии, статья там неплохая.
Сейчас применяется бесклассовая адресация, в которой принадлежность к сети или хосту задается сетевой маской. Если преобразовать IP-адрес и сетевую маску в двоичные числа и расположить их в столбик, то установленные биты сетевой маски соответствуют номеру сети, а снятые биты сетевой маски соответствуют номеру хоста в сети. Для указания IP-адреса и маски обычно используют одну из двух форм записи: 10.0.0.1/255.0.0.0 (IP-адрес 10.0.0.1, маска 255.0.0.0) или 10.0.0.1/8 (IP-адрес 10.0.0.1, номера сети задаются в первых 8 битах адреса). Следует также знать, что адрес, в котором все биты хоста равны 0 используется для указания адреса непосредственно сети (например 10.0.0.0/8), а адрес, в котором все биты хоста равны 1 используется для указания широковещательного адреса, который будет доставлять пакеты всем хостам сети (например 10.255.255.255/8). Для указания адреса сети иногда применяют также сокращенную запись, не указывая октеты хостов (т.е. 10.0.0.0/8 эквивалентно 10/8).
Оба принципа адресации используются для того, чтобы определить, принадлежит ли получатель пакета к той же сети, что и отправитель, или нет. В последнем случае получатель недостижим для отправителя непосредственно и доставку пакета будет осуществлять маршрутизатор.

Важно понимать, что IP-адрес является логическим адресом, а непосредственно коммутация пакетов осуществляется на втором уровне. И устройство, которое будет осуществлять отправку или прием пакета данных (сетевая плата) для адресации будет использовать физический адрес (MAC-адрес). Поэтому на третьем уровне также определяется протокол ARP, отвечающий за трансляцию логических адресов в физические.
В принципе действия ARP нет ничего сложного — каждое сетевое устройство хранит в памяти ARP-таблицу соответствий IP-адреса MAC-адресу (какому IP-адресу какой MAC-адрес соответствует). Если для нужного IP-адреса запись в ARP-таблице найдена, то в сформированном пакете данных в поле получателя записывается MAC-адрес из этой таблицы. Если запись в ARP-таблице не найдена, то сетевое устройство делает ARP-запрос, который можно перевести как "Кто 10.0.0.1?". Этот запрос доставляется всем хостам в сети и хост с нужным IP-адресом отвечает спросившему "Я 10.0.0.1, мой MAC 10-00-00-00-00-01", после чего спросивший обновляет свою ARP-таблицу.

В принципе, в этом разделе можно написать 80% того, что я планировал написать в статье, т.к. именно на третьем уровне определяется маршрутизация пакетов. Но лучше эту информацию структурировать и изложить в последующих главах. А на этом с третьим уровнем пока все.
Lasciate ogni speranza, voi ch'entrate.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2853
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Немного информации о сетях

Сообщение Proxy » 07.07.2011 (Чт) 22:19

5,6,7 уровень сразу как один представлены, как и ожидалось :D
Follow the white rabbit.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Немного информации о сетях

Сообщение alibek » 07.07.2011 (Чт) 22:23

Proxy писал(а):5,6,7 уровень сразу как один представлены, как и ожидалось :D

Ну да. И про первый уровень будет очень мало.
Впрочем, будут примеры того, как все эти три уровня задействовать.
Lasciate ogni speranza, voi ch'entrate.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2853
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Немного информации о сетях

Сообщение Proxy » 07.07.2011 (Чт) 22:42

Побольше информации об IPv6 (особенности процесса перехода, поддержка оборудованием и ОС, вообще особенности IPv6) отличало бы от рядового справочника (написанного в лохматые годы). Плюс насчёт 1 и 2 уровня: пускай побольше информации по WiFi (IEEE 802.11, но уже и не только) будет, думаю актуально (и подробной информации почти нигде и нет на самом деле, в т.ч. вся соль про ширину канала 20 и 40 MHz, автоматическую смену каналов и т.д только на англоязычных источниках присутствует, плюс я так и не нашёл нигде когда возникли и стали использоваться каналы выше 11 (2467 и 2472MHz) и что за ограниченный для использования в США 2.5 GHz).
Про маршрутизацию я вот только совсем недавно начал читать, до этого мои знания про маршрутизацию ограничивались одной методичкой, прочитанной на раз. На самом деле тоже информации толковой не так уж и много, собрать в кучу и как-то агрегировать не помешает, возможно поделюсь парой источников (а может найду что полезного и тут).
Последний раз редактировалось Anonymous 07.07.2011 (Чт) 22:47, всего редактировалось 1 раз.
Follow the white rabbit.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Немного информации о сетях

Сообщение alibek » 07.07.2011 (Чт) 22:47

Proxy писал(а):Плюс насчёт 1 и 2 уровня: пускай побольше информации по WiFi (IEEE 802.11, но уже и не только) будет, думаю актуально (и подробной информации почти нигде и нет на самом деле, в т.ч. вся соль про ширину канала 20 и 40 MHz, автоматическую смену каналов и т.д только на англоязычных источниках присутствует, плюс я так и не нашёл нигде когда возникли и стали использоваться каналы выше 11 (2467 и 2472MHz)).

Это уже конкретика, причем специфичная. Если я и буду писать на таком уровне про WiFi или ADSL, то в конце статьи.
Lasciate ogni speranza, voi ch'entrate.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2853
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Немного информации о сетях

Сообщение Proxy » 07.07.2011 (Чт) 22:49

alibek писал(а):Это уже конкретика, причем специфичная. Если я и буду писать на таком уровне про WiFi или ADSL, то в конце статьи.

Можно как в вики просто ссылками. И сделать отдельные темы обо всём подробно. Тогда получится и про физический+канальный уровень написать довольно много и про прикладной (про прикладные протоколы тоже как-то глупо писать в кучу, пусть будет отдельная статья для каждого с примерами сессий и т.д, их актуальных по-сути бесчисленное множество и почти все сколько-нибудь интересны для большей части пользователей этой конференции имхо).
Follow the white rabbit.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16107
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Немного информации о сетях

Сообщение Хакер » 11.07.2011 (Пн) 17:53

alibek писал(а):Этот уровень называется канальным. Чтобы проще было понять, это уровень физических соединений, когда два устройства, обменивающиеся информацией, имеют непосредственную связь друг с другом.

Я думаю, что «чтобы проще было понять» оказалось неудачным. Особенно фраза «уровень физических соединений». Почему два устройства, обменивающихся информацией?

С позиции человека, ничего не знающих об отнесении той или иной ситуации к соотв. уровням, спросим: когда Алибек говорит, два устройства, он имеет в виду два компьютера? Или хабы и свитчи он тоже считает устройствами? Он говорит о связе Комп1—Хаб (одна пара) или Хаб—Комп2 (другая)? Или он говорит о паре Комп2—Комп1 (хаб есть, но он не берётся в расчёт).

Почему ты написал «два устройства», тогда как Ethernet предоставляет CSMA/CD-среду, и устройства может быть не два? Когда ты написал «непосредственно», возникает вопрос: непосредственно — это исключительно одним пачкородом? А если два устройства связаны через репитер — это будет считаться непосредственной связью двух устройств? Или это будет считаться двумя непосредственными связями?

alibek писал(а):На этом уровне данные передаются во фреймах Ethernet, для адресации применяются MAC-адреса (аппаратные адреса).

Не рассмотрено, что Ethernet на уровне 2 — это только один из доступных вариантов, и есть другие, которые устроены совершенно не так. Тот же Token Ring.

Не расказано, что же такое фрейм. Особенно это пораждает путаницу, когда наряду с фреймом употребляют слова кадр, пакет. Это одно и то же?

Что касается MAC-адрес. Не сказано, зачем он вообще нужен. Потому что не сказано, что Ethernet на уровне 2 предоставляет пользователям не канал между двумя устройствами, а среду для многих устройств. И модель взаимодействия строится по правилу: один сказал, все остальные услышали, один из них воспринял. Общую для всех среду, иначе говоря. И вот тут то и приходит MAC-адрес, который определяет, кто из всех тех, кто имеет доступ к общей среде кто услышал (принял) пакет, должен его воспринять. Даже сама аббревиатура MAC расшифровывается как Media Access Control — контроль доступа к среде.

alibek писал(а):MAC-адреса должны быть уникальны в пределах одного физического сегмента Ethernet — сегмента, в котором устройства связаны друг с другом непосредственно или через устройства первого или второго уровня (повторители, хабы, свитчи).

Вот здесь очень стоило бы сказать, а что будет, если будет два участника Ethernet-взаимодействия с одинаковыми MAC-адресами. Важно не только говорить, какие есть правила и ограничения, а ещё говорить, почему и зачем они введены, что будет, если их нарушить.

alibek писал(а):В заголовке каждого пакета данных (фрейма) присутствуют поля "MAC-адрес отправителя" и "MAC-адрес получателя", поэтому возможна доставка пакетов в разделяемой среде передачи данных (когда все устройства используют одну и ту же физическую среду передачи данных); любое устройство может определить, ему ли предназначен прибывшый пакет и кто его отправитель.

Вот тут уже появилась расшифровка слова «фрейм», появился термин «среда». Но почему-то не говорится об Ethernet-широковещании (а потом, когда придёт время поговорить об IP-широковещательных пакетах, нужно указать, что это разные вещи, хоть и с общей идеей), которые используется и в ARP, и в PPPoE.

alibek писал(а):Как правило, сеть Ethernet строится на хабах (концентраторах) или свитчах (коммутаторах).

Правда, но ведь это только Ethernet -10(0)(0)Base-T. Он наиболее популярен, но не единственный возможный из Ethernet-ов.
И неплохо бы объяснить, зачем вообще хабы и свитчи нужны: кто-то подумает, что можно сэкономить, и просто соединить все компьютеры «в параллель», скрутив жилы витой пары.

alibek писал(а):Хаб — это очень простое устройство, которое работает на первом уровне OSI.

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

alibek писал(а):Если упрощенно, то свитч ведет учет MAC-адресов на каждом своем порту и в каждый момент времени знает, какой из подключенных MAC-адресов на каком порту находится; эта информация пополняется динамически, при поступлении пакета.

И тут возникает вопрос: а как считч узнаёт, на каком из его портов какой MAC висит? (Когда-то я тоже понять не могу). А что произойдёт, если мы переткнём кабель в другой порт после того, как свитч построил соответствие MAC→Порт?

alibek писал(а):Этот уровень обычно называют сетевым. В нашем частном случае к этому уровню относится IP.
На этом уровне определяется логическая адресация и определение пути передачи данных (маршрутизация).

Вот здесь человек, который очень плохо знает тему, если он привык задавать вопросы, спросит: а, собственно, зачем вообще было городить этот IP? Зачем было вводить какие-то IP-адреса, в то время как уже есть MAC-адрес, которые, к тому же, обеспечивают бОльшую уникальность. Почему бы не строить гигантскую сеть на базе протокола Ethernet и огромного числа свитчей?

То есть стоило бы рассказать, что IP предполагает, что под ним может быть любой другой канальный протокол. Или даже не совсем протокол (IP посредством почтовых голубей).

Стоило бы рассказать, что IP есть и используется потому, что решает проблемы, свойственные канальному протоколу Ethernet: стройся интернет на Ethernet-е, коммутаторы должны были бы хранить нереалистично большие таблицы, чтобы определять, куда переслать пакет. Ну и что обучение коммутатора при таких объёмах трафика, какие имеются в современном интернете, было бы невозможным и привело бы как невозможности его нормального, по нынешним меркам, функционирования.

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

Такая формулировка хорошо для того, кто и так это всё знает. Тому, кто не разбирается в теме, она мало что говорит.

Мне кажется, лучше подходить с той позиции, что раз IP строится поверх Ethernet, и тоже представляет среду для передачи данных, то есть устройство уровня три, которое по своей идее соответствует устройству-коммутатору уровня два: решить, на основе пакета, по определённому закону, куда дальше передать этот пакет. И указать, что с точки зрения уровня 2 маршрутизатор ничем не отличается от любого друго частника Ethernet-взаимодействия. И что Ethernet-среда маршрутизатором заканчивается, а, грубо-говоря, IP-среда — как-раз наоборот.

alibek писал(а):Раньше применялась классовая адресация, которая определяла пять классов сетей; класс определял, какие биты в адресе указывали на номер сети, а какие биты указывали на номер хоста (например класс C определяет сеть емкостью в 256 хостов, таких сетей в глобальном пространстве IPv4 может быть около двух миллионов).

Вот здесь ты заходишь с конца. Плохо разбирающийся в теме бы спросил: а зачем вообще нужна классовая или бесклассовая адресация. А для чего вообще кому-то пришло в голову определять, какие биты в адресе указывают номер сети, а какие номер хоста? Да и вообще сам термин «номер сети» содержит в себе термин «сеть», значение которой ещё не раскрыто.

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

Тут есть выделенный курсивом фрагмент, к нему задаётся вопрос: если в IP — абстрактные узлы IP-адресами, а в Ethernet — вполне конкретные сетевые устройства с MAC-адресами, и при том как бы там ни было, для передачи IP-пакета всегда используется Ethernet-передача, как же определить MAC-адрес, по которому нужно слать Ethernet-посылку, чтобы тот сетевой адаптер, который получит его, оказался принадлежащим тому узлу, который владеет IP-адресом?

И тут мы начинаем: поскольку IP всегда надстраивается над каким-то канальным протоколом, например над Ethernet-ом, и при каждой IP-передачи совершается передача с помощью нижележащего протокола, а адреса у IP-протокола и подлежащего протокола скорее всего совершенно разные, вводится специальный служебный протокол, который бы позволил перевести абстрактный IP-адрес, в конкретный физический (того вида, который используется в подлежащем протоколе).

Ну и по второму кругу: если узел из той же IP-сети, что и этот, он достижим через нижележащий протокол (Ethernet), а его MAC-адрес из IP-адреса может быть получен через ARP. Поэтому IP-пакет пересылается «через» Ethernet-фрейм непосредственно по нужному MAC-адресу.

А если узел из другой IP-сети, он не достижим через нижележащий протокол. И его MAC-адрес нельзя получить, по той же причине: для выяснения MAC-адреса тоже используется нижележащий протокол, а он, как уже сказано, недостижим. Поэтому IP-пакет пересылается «через» Ethernet-фрейм, но не узлу, а маршрутизатор, который в отличие от целевого узла, достижим.

В этом месте уже не возникает вопрос, а зачем нужно выделять из IP-адреса индекс сети. Понятное дело, зачем: чтобы знать, которыми, двумя из вышеперечисленных способов, «расправиться» с пакетом.

alibek писал(а):Сейчас применяется бесклассовая адресация, в которой принадлежность к сети или хосту задается сетевой маской. Если преобразовать IP-адрес и сетевую маску в двоичные числа и расположить их в столбик, то установленные биты сетевой маски соответствуют номеру сети, а снятые биты сетевой маски соответствуют номеру хоста в сети.

По-моему логичнее было бы сказать, что два узла считаются принадлежащими одной и той же сети, если выполняется улосвие:
(ip1 & mask) == (ip2 & mask) (где & — операция побитового «и», а == означает равенство). А уж побитовое И пусть те, кто не знают, рассматривают через примеры с записями в столбик.

alibek писал(а):Для указания IP-адреса и маски обычно используют одну из двух форм записи: 10.0.0.1/255.0.0.0 (IP-адрес 10.0.0.1, маска 255.0.0.0) или 10.0.0.1/8 (IP-адрес 10.0.0.1, номера сети задаются в первых 8 битах адреса).

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

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

О, вот и то, о чём я говорил. Но почему-то оно оказалось в самом конце.

alibek писал(а):В принципе действия ARP нет ничего сложного — каждое сетевое устройство хранит в памяти ARP-таблицу соответствий IP-адреса MAC-адресу (какому IP-адресу какой MAC-адрес соответствует).

Вот здесь я бы осторожно использовал слово «устройство». Потому что у мало разбирающегося в теме может возникнуть мысль, что хабы и свитчи (они же тоже устройства) хранят ARP-таблицу. Или что сетевая плата хранить ARP-таблицу. А это неверно.

Стоит уточнить, что если какое-то устройство работает на уровнее 3, вернее работает, используя протокол IP, то та часть, которая обеспечивает работу IP, хранит кеш ARP-преобразований. Это ведь именно кеш, и для него свойственна та же проблема, что и для всех кешей: когда-нибудь некоторые данные в кеше становятся уже неактуальными, и нужно позаботиться о способе определить, когда некоторые данные из кеша должны быть обновлены или выброшены как устаревшие.

Стоит упомнять о ситуации, когда у узла остаётся IP, но у его сет. адаптера меняется MAC. При этом в чужих ARP-таблицах остаётся старый MAC, и узлы вдруг становятся недоступными. Стоит рассказать о придуманных для предотвращения этого «ARP announcement-ах».

______

Возможно я сделал много незначительных придирок, или вообще старался переделать чужую статью так, как если бы писал её сам. Но у меня цель: зацепиться за как можно больше число мест, где не разбирающиеся в теме могут всё истолковать (своим богатым воображением) всё совершенно по-своему.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Немного информации о сетях

Сообщение alibek » 11.07.2011 (Пн) 19:10

Понятно.
Вообщем в статью явно нужно добавить раздел "Список используемых терминов".
Ну и частично ее переработать.
Слишком подробно писать пожалуй не стоит, она станет необъятной, но некоторые параграфы перепишу.
Lasciate ogni speranza, voi ch'entrate.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2853
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Немного информации о сетях

Сообщение Proxy » 20.07.2011 (Ср) 8:32

alibek писал(а):Ну и частично ее переработать.

Я не прочитал всё то, о чём написал Хакер, но думаю это
alibek писал(а):Чтобы проще было понять, это уровень физических соединений, когда два устройства, обменивающиеся информацией, имеют непосредственную связь друг с другом.

Звучит вполне себе однозначно и не стоит добавочно усложнять (обычно в литературе примерно так и написано). И про бридж в т.ч. тут упоминать не стоит, лучше не в этом разделе. Ну а насчёт "непосредственной", то это подразумевает, что имеется возможность передачи сигнала (физ. уровень) между устройствами (и пока бриджи откинем, хотя и с ними вполне себе складно).
ЗЫ. Как жаль, что у нас нет тут вики, там бы гораздо удобнее было располагать подобные статьи.
Follow the white rabbit.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Немного информации о сетях

Сообщение alibek » 20.07.2011 (Ср) 11:02

Замечания Хакера вполне по делу, часть этих замечаний будет учтена, как только появится немного свободного времени.
Но, конечно, всеобъемлющего руководства от азов до BGP не будет, да и не вижу смысла в таком руководстве. Человек усваивает информацию по частям и на каждом уровне понимания оптимальным будет свой способ подачи материала.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14101
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Немного информации о сетях

Сообщение alibek » 31.10.2013 (Чт) 15:50

Давно не брал я в руки шашки.
На правах черновика, который пока не знаю, куда встроить, но который когда-нибудь доработаю и куда-нибудь добавлю.

Принципы работы сети на уровнях L1-L4 для начинающих

Дисклаймер
Как известно, все абстракции дырявы.
Но если не ждать об абстракции чуда и всеобъемлющей эквивалентности, то она облегчает восприятие новых малознакомых понятий.
Ниже будет опубликован пример такой абстракции, которая (по идее) должна упростить понимание того, что происходит в вычислительных сетях.
И да, приводимые абстракции отталкиваются от TCP/IP в среде Ethernet.

L1
Допустим, есть множество организаций, которые обмениваются между собой информацией.
Для удобства работы они договорились между собой, что все сообщения могут быть написаны следующим образом:
1. Черными чернилами, на бумажном листке размером 5x5 сантиметров
2. Черным маркером на пластиковой карточке размером 9x4 сантиметра
3. Черным маркером на стикере размером 1x4 сантиметра

Эти договоренности (и их практическое воплощение) представляют собой уровень L1 модели OSI (стандарты IEEE 802.3, IEEE 802.11 и их воплощения в виде Ethernet, WiFi и т.п.).

L2
Итак, со способом обмена информацией определились.
В организации работает какое-то количество сотрудников. У сотрудников есть фамилии (Иванов, Петров). Сотрудники работают в кабинетах, которые имеют номера (кабинет 1, кабинет 2). У организаций есть почтовый адрес (Первомайская 1, Первомайская 2), некоторые сотрудники имеют свои собственные почтовые адреса (а/я 1, а/я 2). Доставку корреспонденции между организациями осуществляет почтовая служба, в организации есть по меньшей мере один выделенный сотрудник, отвечающий за работу с такой корреспонденцией (пусть называется курьер, хотя это и не совсем правильно). Доставку корреспонденции в кабинеты осуществляет секретарь. В каждой организации заведено правило, что ошибочно доставленные секретарем сообщения должны игнорироваться (то есть если сообщение, адресованное Петрову, получит Сидоров, то Сидоров не должен на него отвечать). Также сотрудники организации могут не знать друг друга в лицо, им известны только фамилии сотрудников.

Итак, приемная. В приемной есть множество дверей в разные кабинеты, над дверями написаны номера кабинетов. Допустим, 16 дверей с номерами от 1 по 16. Также у секретаря на столе лежит листок с заголовком FIB и с таблицей, в которой есть графы «Сотрудник», «Кабинет» и «Внесен»; изначально (в начале рабочего дня) таблица пустая.
За дверью 2 (в кабинете 2) сидит Иванов. Иванов пишет сообщение Петрову, сообщение выглядит примерно так:

Отправитель: Иванов
Кому: Петров
Тематика: Запрос
Пришлите отчет за прошедший квартал.

Листок с сообщением Иванов складывает самолетиком и кидает в дверь. Секретарь ловит самолетик из двери кабинета 2, разворачивает его.
Затем ищет в своем листке FIB Иванова. Если Иванова в таблице не находится, в таблицу добавляется новая строчка, в которой указывается фамилия (Иванов), номер кабинета (2). Если Иванов в таблице уже есть, но указан другой кабинет, то номер кабинета исправляется на 2. В обоих случаях в графу «Внесен» добавляется время, когда пришло сообщение.
Затем секретарь ищет в своем листке Петрова. Если Петров находится, то секретарь запускает самолетик в ту дверь, номер которой указан у Петрова. Если в списке Петрова не находится, то секретарь делает 15 записок, в которых пишет «Петров, отзовитесь» и отправляет их во все кабинеты, кроме кабинета 2 (из которого пришло сообщение). Петров, который работает в кабинете 5, в ответ на это сообщение отправляет записку секретарю, в остальных кабинетах записку игнорируют. Секретарь записывает в своей таблице FIB Петрова, номер его кабинета, время ответа и отправляет исходное сообщение в кабинет 5. Если спустя какое-то оговоренное время отклика от Петрова не было получено, то секретарь выкидывает записку в мусорную корзину и (возможно) пишет записку Иванову во 2 кабинет о том, что Петрова найти не удалось.
Параллельно секретарь периодически просматривает весь свой список FIB и вычеркивает из него тех сотрудников, последнее сообщение от которых было получено более чем оговоренное время назад (например более часа назад).

Описанный выше пример примерно соответствует коммутации сетевых пакетов на уровне L2. В роли коммутатора работает секретарь, двери кабинетов это порты коммутаторов. Фамилии отправителей и получателей это MAC-адреса. Таблица в графами «Сотрудник», «Кабинет» и «Внесен» это таблица FIB (forwarding information base), в которой коммутатор хранит информацию об известных ему MAC-адресах. В некоторых случаях в организации за кабинетом может быть закреплен фиксированный список сотрудников, которые могут там работать, в ином случае коммутатор автоматически запоминает MAC-адреса, которые приходят в порта, этот процесс называется mac-learning.

Обмен сообщениями посредством секретаря лучше всего работает при условии, что в каждом кабинете работает только один сотрудник.
Если же в одном кабинете работает более одного сотрудника, чтобы обеспечитьт обмен сообщениями внутри этого кабинета, необходимо использовать один из следующих подходов:
1. Когда работник отправляет сообщение секретарю, он также должен продублировать его всем остальным сотрудникам в кабинете. В этом случае адресат получит сообщение либо от секретаря, либо от непосредственного отправителя.
2. Этот кабинет делится на несколько суб-кабинетов (с номерами 2.1, 2.2, 2.3 и т.д.) и суб-приемной с секретарем, которая будет обслуживать только эти суб-кабинеты. У секретаря в списке FIB за этим кабинетом будет числиться несколько работников и при поступлении сообщения к любому из них секретарь перешлет его в кабинет 2. Там его получит суб-секретарь (со своим списком FIB) и перешлет в нужный суб-кабинет.

Первый вариант соответствует использованию концентраторов (хабов) в сети; одно из отличий хаба от коммутатора заключается в том, что он работает на уровне L1 и просто копирует пакет во все порты (кроме порта отправителя).
Второй вариант соответствует использованию каскадов коммутаторов; все коммутаторы хранят таблицы MAC-адресов, просто у вышестоящих коммутаторов на порту может быть несколько MAC-адресов, а у нижестоящих коммутаторов (которые доставляют сообщение непосредственному получателю) на аплинке будут видны MAC-адреса остальной сети.

L3
Пока что весь обмен сообщениями совершался в пределах одной организации и для доставки сообщения отправителю достаточно было знать фамилию получателя, а секретарю номер кабинета получателя.
Но иногда при обмене сообщениями сотрудники используют не фамилии сотрудников, а названия кабинетов (приемная, бухгалтерия). Каждый сотрудник для этой цели ведет список, называемый ARP, в котором есть графы «Фамилия» и «Кабинет», этот список в чем-то похож на список FIB, который ведет секретарь. Если нужного кабинета в списке не находится, то сотрудник Иванов рассылает по всей организации сообщение «Кто у нас в бухгалтерии» и Попов отвечает Иванову сообщением «Я в бухгалтерии» (фамилия Попова указана на листочке в графе «Отправитель»), после чего Иванов вносит в свой список ARP запись «Попов, бухгалтерия» и затем Иванов пишет сообщение, адресованное Попову. Если бухгалтерия уже была записана в таблице ARP, тогда Иванов запросы не рассылает, а сразу пишет сообщение, адресованное Попову.

В данном примере в роли названий кабинетов выступают IP-адреса в сегменте сети. В ARP-таблице (которая должна быть у каждого сетевого устройства) хранится соответствие между MAC-адресом и IP-адресом.

Когда сотруднику нужно отправить сообщение в другую организацию, он не знает ни фамилии получателя, ни его кабинета. Эту информацию может знать только специальный сотрудник другой организации, который отвечает за корреспонденцию между организациями (курьер). В организации Иванова тоже есть курьер Сидоров, который отвечает за корреспонденцию между организациями. Иванов пишет такое письмо:

Отправитель: Иванов
Получатель: Сидоров
Тематика: Запрос
Адрес: Первомайская 2
Пришлите отчет за прошедший квартал

Иванов отправляет это сообщение, его получает секретарь и доставляет его Сидорову, который работает в одном из кабинетов (например в кабинете 7).
В кабинете 7 Сидоров читает это письмо и видит указанный адрес. Он вкладывает письмо в конверт, пишет на конверте адрес «Первомайская 2», пишет обратный адрес «Первомайская 1» и бросает его в почтовый ящик.
В некоторых случаях у Сидорова может быть несколько почтовых ящиков (например есть отдельные ящики для стран Испания и Италия, из которых почта в эти страны доставляется гораздо быстрее), но это скорее исключение, обычно у Сидорова только один почтовый ящик.
Письмо в почтовом ящике обрабатывает почтовая служба и доставляет его в почтовый ящик по адресу Первомайская 2. Там это письмо получает курьер и обрабатывает его в соответствии с регламентом (например распечатывает конверт и отдает листок секретарю). В организации некоторые сотрудники могут иметь собственные почтовые адреса (например «а/я 2»), в этом случае сообщение адресуется этому получателю.

В этом примере в роли глобальных (публичных) IP-адресов выступает почтовый адрес. Сидоров выполняет роль интернет-шлюза, он обеспечивает маршрутизацию пакетов данных между минимум двумя сетями (глобальной и локальной), в качестве глобальной сети в примере фигурирует почтовая служба, в качестве локальной фигурирует секретарь и внутренняя адресация в виде названий должностей.
Тут просвечивают некоторая дырявость аналогий, поскольку в IP-сетях процедура и распределение ролей выглядят немного иначе.

L4
В организации должность сотрудника определяет то, с какими задачами он работает. Например бухгалтер занимается денежным учетом, а директор руководит предприятием.
Поэтому если организация получает письмо, в котором в качестве адреса получателя указано «Первомайская 2, директору», то это письмо может быть доставлено вне зависимости от того, какой конкретно сотрудник является директором. Например при получении подобного письма Сидоров справляется в своем журнале о том, какой сотрудник в настоящее время работает в качестве директора, и направляет письмо именно ему. И эта должность также может быть указана в обратном адресе, чтобы ответ на письмо был доставлен сразу нужному получателю.
Чем то это похоже на индивидуальные почтовые адреса (абонентские ящики), но в данном случае конечный получатель определяется должностью.
Кроме того, возможна такая ситуация. Например Иванов пишет такое сообщение:

Отправитель: Иванов
Получатель: Сидоров
Тематика: Запрос
Адрес: Первомайская 2, бухгалтерия
Пришлите отчет за прошедший квартал

Это сообщение поступает Сидорову, Сидоров вкладывает письмо в конверт и пишет на конверте адрес «Первомайская 2, бухгалтерия», пишет обратный адрес «Первомайская 1, приемная-1» и бросает его в почтовый ящик. А также у себя в журнале делает запись «Иванов, Первомайская 2, бухгалтерия, приемная-1». И когда приходит ответ, адресованный «приемная-1», то Сидоров в журнале находит эту запись и перенаправляет этот ответ Иванову.

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

Итого
Листочки — среда передачи данных.
Организации — локальные (приватные) сети, домен коллизий.
Кабинеты — порты коммутаторов или хабов.
Фамилии сотрудников — MAC-адреса сетевых узлов.
Почтовые адреса — IP-адреса глобальные.
Наименования кабинетов — IP-адреса локальные (в пределах сети).
Должности — сокеты.
Lasciate ogni speranza, voi ch'entrate.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Немного информации о сетях

Сообщение Debugger » 31.10.2013 (Чт) 19:20

Занятно :)
Сейчас как раз в университете поднимаем "кусочек Интернета" на виртуальных машинах - статья немного помогла разобраться, что к чему.
Программист - это локальный бог (С) Я


Вернуться в Alibek

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron