Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
rusldv
8 лет назад

Сетевой уровень и IP. Часть 2

Все, что еще нужно знать о IP



Для начала нужно понять что думает о IP-адресе компьютер (он же может быть маршрутизатором). Он видит этот адрес как и все остальное в виде последовательности нулей и единиц. В IP версии 4 его длина - 32 бита (4 байта). То что мы привыкли писать его в десятичной системе с точками - это для удобства. Компьютеру на это наплевать. Чтобы отправить пакет с одного компьютера на другой мы добавляем в пакет свой и его адреса IP. Компьютер получая пакет берет проверяет адрес кому направляется пакет и если не ему, то ничего не делает. Иначе обрабатывает его для извлечения данных для транспортного уровня. В прошлом посте я рассказал как путешествует пакет по локальной сети. Однако, что если нам нужно передать его в другую сеть (короче говоря в Интернет). Для того, чтобы сеть решила, оставлять ли пакет в локальной сети или передавать в Интернет используются 2 вещи. 1. Маска подсети. 2. Шлюз по умолчанию (default gateway). Не знаю почему почти все статьи об этом написаны через чур заумно, но работает это элементарно. Маска для компьютера это такая же последовательность из 32-бит. Только вначале у нее одни 1, а на хвосте только одни 0. (Например может быть такая 1111111111111111111100000000 = 255.255.255.0 = /24). Сама эта маска никуда не передается. Она используется на компьютере или роутере что бы получить номер сети из ip (так как он может быть разной длины). В нашем примере первые 3-байта - это сеть. А последний - хосты. Когда мы настраивали ip в прошлом посте. Мы неявно указывали маску /24 то есть она подразумневалась по умолчанию. Для компьютера это означала что он при отправке пакетов, как и положено отправляет его с указанным адресом, у нас был 0.0.0.2, но при этом он маскирует часть адреса, с помощью маски. Таким образом он разделяет IP адрес на 2 части - номер сети и хосты. Где у маски 1 - эта часть относится к сети, а где 0 - это хосты. Таким образом компьютер знает, что в локальной сети могут быт хосты от 0.0.0.1 до 0.0.0.254 (адрес 0.0.0.255 тоже относится к локальной сети, однако он широковещательный - то есть пакеты содержащие его в заголовке получателя, разошлются всем хостам ЛВС). Так вот, если мы укажем адрес для отправки, который не попадает под маску (например 0.0.1.1), то компьютер поймет, что это адрес для другой сети и отправит его на шлюз по умолчанию. Не поверите но это тоже IP-адрес, обычно заданный в интерфейсе коммутатора (связанный с одной из его сетевых карт). Таким образом куда этот пакет передавать дальше будет разбираться роутер. Настройка шлюза по умолчанию выполняется вторым параметром команды ip (ip address/mask gateway):
ip 0.0.0.1/24 0.0.0.8

тут мы предполагаем, что шлюз у нас роутер с ip 0.0.0.8 хотя никто не мешает задать в этом качестве какой нибудь ip другого компьютера - пусть ловит все что не для локальной сети предназначено и например сохраняет себе. У роутеров эта маска может и того быть совершенно разная по количеству 1 и 0 в 32 битах, это позволяет создавать иерархическую маршрутизацию. Более того роутер может даже отправить пакеты с одинаковым IP но разными масками на разные линии.
Маршрутизаторы призваны передавать пакеты между сетями. Ему достаточно определить только сеть, куда направляется пакет, а номер хоста уже будет использоваться для определения получателя уже когда пакет окажется в нужной сети.
Таким образом маршрутизатор смотрит на IP - адрес в пакете и применяет к нему маску. Затем ищет соответствие полученному адресу сети и отправляет пакет на нужную линию. Например, если адрес 162.63.45.201, и маска 255.255.0.0 - маршрутизатор закинет этот пакет в сеть, 162.63.0.0, а там например, другой маршрутизатор с маской 255.255.255.0, он этот адрес перекинет на конечную сеть 162.63.45.0 и там уже данный пакет отправится на хост с номером 201. Для примера создадим 2 локальные сети и соединим их маршрутизатором в GNS3. Как я упоминал выше номера сетей выдаются специальной службой, которая следит, чтобы они не совпадали. Однако нам не обязательно просить себе такой номер. Для локальных сетей можно использовать, например 192.168.*.*. Возьмем этот номер и создадим две сети (пока не связанные) 192.168.0.* и 192.168.1.*. Добавим на рабочую область 2 хаба (хотя можно и коммутатора) и подключим к ним по несколько компьютеров. Таким образом создав две разные локальные сети.

Затем в программу эмулятор нужно добавить образ роутера. Их можно скачать с официальных сайтов роутеров. Например Cisco. Добавляется они через меню достаточно просто. Можно поискать на хабре инструкции по настройки в зависимости от производителя маршрутизатора. После добавления его также нужно перетащить на рабочую область.
Наведем курсор мыши на наш маршрутизатор и вызовем его контекстное меню. Там перейдем на вкладку Slots. Тут мы типо вставляем всякие сетевые карты из тех, которые у нас есть в свободные разъемы маршрутизатора. Вставим в slot 1 микросхему PA-4E - это у нас 4 обычных Ethernet разъема. Поскольку мы собрались связать 2 хаба нам этого вполне хватит.

И соединим наш роутер с хабами. Я например линии Ethernet 1 и Ethernet 2 от роутера воткнул в разъемы 8 хабов. По сути не имеет значения. Так как наше оборудование выбрано так, что подходит. Хабы это вообще как тройники у розетки. То есть MAC-адреса есть только у Ethernet - выходов роутера и наших компьютеров (короче там где есть сетевые карты).

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


R1# configure terminal
R1(config)# int e1/0
R1(config-if)# ip address 192.168.0.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
R1(config)# int e1/1
R1(config-if)# ip address 192.168.1.1 255.255.255.0
R1(config-if)# no shutdown
R1(config-if)# exit
^Z (Ctrl+Z) - для выхода из настройки конфигурации



Чтобы убедиться что все работает пропингуем сетевые интерфейсы на самом роутере.

Теперь пропингуем еще не настроенный компьютер во второй сети (которая 192.168.1.*)
Как видно запросы к шлюзу (gateway) приходят. А дальше так как хост с таким адресом не настроен, сам хост нам не отвечает. Зато отвечает сам маршрутизатор. На его то IP и сетевуху через шлюз по умолчанию все доходит.

Для красоты я подписал настройки для каждого компьютера (маска везде 255.255.255.0)

Именно так их и следует настроить :)

Теперь мы можем пинговать хосты из одной сети через роутер в другой. Правда при первых отправках пакетов маршрутизатор немного отупляется (можете посмотреть в Wireshark), он там также сверяет по протоколу ARP аппаратные и сетевые адреса своих сетевых карт и хостов и записывает в таблицы. Зато затем он благополучно переправляет пакеты из одних сетей в другие.

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

Что еще нужно знать о маршрутизаторах


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

DHCP - протокол для динамической конфигурации IP - адресов


Этот протокол по принципу работы схож с ARP, однако если в ARP IP - адреса задаются сетевыми админами, то тут настройка происходит с помощью специального DHCP - сервера. Когда хост посылает широковещательным запросом в сеть пакет DHCP, то он туда кладет свой MAC-адрес и просьбу выдать ему IP и др. настройки (маску сети, адрес DNS сервера и т.п). Затем если в сети есть сервер DHCP сервер, он получает этот пакет, смотрит MAC-адрес отправителя, находит ему свободный IP-адрес и отправляет ему в ответ все нужные настройки. Такой адрес выдается хосту не навсегда, а на определенное время, иначе бы вскоре у небольшой сети могло не остаться свободных адресов. Через указанное время хост может попросить продлить время, чтобы его IP не передали другому хосту. Если же компьютер это не запросил, например он выключен. То выданный ему IP освобождается и может быть назначен другому хосту.

Внутренние и внешние протоколы шлюзов


Хотел вынести это в отдельную статью, но решил пока что не утруждать читателей, так как здесь много того, что не относится к технической стороне, которую на данный момент мы рассматриваем. Поэтому коротко расскажу основные моменты этих шлюзов, чтобы скорее перейти к транспортному уровню, а когда появится необходимость, рассмотрим их более подробно.
Эти протоколы описывают как должна происходить маршрутизация пакетов внутри сети (провайдера) и с внешними сетями провайдеров. Так чтобы маршрутизаторы могли договориться. С внутренними все просто. Так как провайдеру хочется - так он и настраивает маршрутизацию. Обычно это коммерческие всякие причиндалы. Например если у абонента абонентская плата большая, то ему предоставляется более высокий приоритет при передачи пакетов. Для 4G это когда для голосового вызова применяется специальное решение, типо коммутации по меткам. Когда пакеты передаются по специально выделенному маршруту, защищенному от перегрузок и.т.п
Внешнее взаимодействие характерно во-первых договоренностями между провайдерами (операторами), а также законами конкретных стран, через которые передаются пакеты.
Также внешним протоколом часто описывают политику прохода пакетов через разные страны. Например можно задать, чтобы пакеты направленные из военных ведомств одной страны НАТО в другую выбирали свой маршрут так, чтобы не проходили через Россию и Китай. Ну сами понимаете русские хакеры и все дела :) :) Например такой военный пакет из Японии в Турцию, пойдет в сторону Америки, по тихоакеанской магистрали, и из нее на трансатлантическую и дальше через ЕС попадет куда отправляли.
На этом мы пожалуй закончим изучение сетевого уровня. И переходим к одному из самых важных и интересных уровней - транспортному. Именно этот уровень используется приложениями для обмена между собой данными.

9
3.302 GOLOS
На Golos с November 2016
Комментарии (1)
Сортировать по:
Сначала старые