Одним из ключевых элементов любой сети является схема адресации. Именно она определяет как информация от источника попадет к получателю.
Рассмотрим этот вопрос более-детально на примере университета. В университете есть много факультетов, на факультете есть несколько курсов, на курсе есть несколько групп, а группе есть десяток студентов, у каждого студента есть свое уникальное имя, по которому можно его однозначно определить. Стоит задача: один студент должен передать другому книжку, например. Если оба студента учатся в одной группе, то с этим проблем не будет, все всех знают. А вот если студенты учатся на разных факультетах, то здесь уже сложней. Запомнить как зовут каждого студента в университете, на каком факультете учится, на каком курсе, в какой группе почти не реально. Поэтому чтобы книжка попала от одного студента ко второму, первый должен знать на каком факультете, на каком курсе, в какой группе и как зовут второго студента. На таком же принципе построена работа локальной компьютерной сети.
Работу локальной сети будем рассматривать на примере наиболее-распространенной технологии Ethernet.
Примечание: технология Ethernet описывается стандартом 802.3 и соответствует 1 и 2 уровням эталонной модели OSI. Она описывает метод доступа к общей среде CSMA/CD, процедуры LLC, методы передачи данных и др. Изначально она разрабатывалась под коаксиальный кабель с полудуплексным режимом передачи данных и механизмом выявления коллизий (это когда два устройства начинают одновременно что-то передавать и информация сильно искажается). В условиях полнодуплексных сетей коллизий нет. Сейчас в основном используются стандарты 100BASE-T и 1000BASE-T (100 МБит и 1 ГБит Ethernet с использованием витой пары). Для стандарта 100BASE-T задействуются только витые 2 пары из 4, для 1000BASE-T используются все 4 пары. В качестве среды передачи может так же выступать оптоволокно. Технология Wi-Fi (802.11) очень похожа на Ethernet. Отличия сводятся к тому, что используется другая среда передачи информации, как следствие — другой метод доступа к среде CSMA/CA, а также изменен формат фрейма.
У каждого компьютера, который подключен к сети, есть два основных адреса: IP-адрес и MAC-адрес. Если вспомнить пример с студентами, то MAC-адрес будет соответствовать имени студента, а IP адрес будет указывать на каком факультете, курсе, группе учится студент и какой он по списку. Основная задача MAC-адреса — это однозначная идентификация конкретного устройства. По MAC-адресу можно однозначно идентифицировать устройство, которое подключено в сеть. MAC-адреса имеют линейную структуру, то есть по имени студента невозможно сказать где он учится, с кем он учится итд. MAC-адрес прошит в сетевую плату и его изменить невозможно (хотя существуют разные методы обхода этого ограничения ). MAC-адрес состоит из 48 бит, которые сгруппированы в 12 шестнадцатиразрядных чисел. Первые 6 задают производителя сетевой карты, последние 6 задают конкретное устройство.
Примечание: MAC-адреса используются для адресации на канальном уровне модели OSI в рамках одной сети. Всего в этой модели 7 уровней. Ее создали для упрощения понимания работы сети. Более-подробно о ней сказано в Википедии. Сетевую модель OSI не стоит путать со стеком протоколов OSI, это разные вещи. Сейчас активно на практике используется стек протоколов TCP/IP
В примере со студентом аналогом информации о факультете, группе, номера в списке служит IP-адрес. В отличие от MAC-адресов, IP-адреса имеют четкую иерархическую структуру. Это значит, что по IP-адресу можно точно определить на каком континенте, в какой стране, в каком населенном пункте, на какой улице и в какой квартире находится компьютер с определенным IP-адресом. Возникает вполне логичный вопрос: а зачем тогда MAC-адреса, если точно определить конкретный компьютер можно только по IP-адресу? Ответ довольно прост: очень часто IP-адреса присваиваются в сети динамически. Процесс выглядит примерно так: компьютер посылает запрос на получение IP-адрес на сервер. Но тут же возникает проблема: кому отправлять ответ? Адреса у запросившей станции нет. Вот для этого и были разработаны MAC-адреса. IP-адрес состоит из четырех восьмибитных чисел от 0 до 255. В IPv6 адрес состоит из четырех 32-битных чисел.
Примечание: IP-адреса используются для адресации на сетевом уровне модели OSI в рамках глобальных и локальных сетей.
Теперь запустим Командную строку (сделать это можно через меню Пуск или введя в окошко Выполнить команду cmd). Вводим команду ipconfig /all и нажимаем Enter
На экран вывелась информация о сетевых подключениях. Здесь можно увидеть IP-адрес, физический адрес (он же MAC-адрес) интерфейсов. Как видим, ноутбук сейчас подключен к домашней Wi-Fi сети, а также подключен к интернету.
Как и MAC-адрес, так и IP-адрес должны быть уникальными для каждого устройства в сети, иначе она просто не будет правильно работать. В этом кроется еще одна проблема. IP-адрес состоит из 32-бит (4 числа по 8 бит), что в сумме дает около 4 миллиардов комбинаций. Возникает вполне предсказуемая проблема: а что делать, если число компьютеров, которые должны быть обьеденены в сети превысит 4 миллиарда? Одним из решений является переход с IPv4 на IPv6. Число возможных комбинаций резко увеличивается (чуть меньше за 2 в 128 степени ). Это один из выходов. Но и существует другой способ. Не всем компьютерам нужен доступ в интернет. Некоторые из них вполне могут обойтись и локальной сетью. Для этих целей все IP-адреса были поделены на глобальные и приватные.
К приватным относятся такие диапазоны адресов:
— 10.0.0.0 — 10.255.255.255
— 172.16.0.0 — 172.31.255.255
— 192.168.0.0 — 192.168.255.255
Эти адреса использоваться ТОЛЬКО в локальных сетях. В глобальной сети интернет они не используются. Это значит, что компьютера с адресами из приватных диапазонов и интернете нет. Если есть необходимость создать небольшую домашнюю или большую и не домашнюю ЛОКАЛЬНУЮ сеть — нужно использовать адреса из приватного диапазона!
Возникает вполне логичный вопрос: а как предоставить доступ в интернет компьютерам из локальной сети? У них ведь IP-адреса из приватного диапазона, которые в интернете не используются. Вот здесь на помощь приходят NAT-сервера. Задачей NAT-сервера является преобразование внутренних приватных адресов локальной сети в глобальные адреса интернета. То есть, на таком сервере есть таблица соответствия адресов в локальной сети и глобальных адресов интернета. Например, адресу 111.111.111.110 интернета будет соответствовать 192.168.10.10, адресу 111.111.111.111 будет соответствовать адрес 192.168.10.11 итд. Если компьютеру нужно передать информацию в интернет, то он отправляет пакеты на NAT-сервер, тот меняет IP-адрес отправителя c 192.168.10.10 на 111.111.111.110 и пакетик спокойно передается в пункт назначения. Когда приходит ответ на адрес 111.111.111.110, то NAT-сервер автоматически меняет 111.111.111.110 на 192.168.10.10 и передает его в локальную сеть. Если же нужно обеспечить доступ в интернет для целой локальной сети, имея всего один глобальный IP-адрес, то используется механизм PAT, что очень напоминает по принципу действия NAT. Дело в том, что кроме IP-адреса есть еще и адрес порта, который соответствует транспортному уровню модели OSI. Адрес порта указывает для какой программы на компьютере этот пакет предназначен и что это вообще за пакет. Более-подробно о номерах портов описано в Википедии. Например, у нас есть сеть из 2 компьютеров и оба они подключены к интернету через один NAT/PAT сервер (им может быть как роутер, так и один из компьютеров). Пускай IP-адреса у компьютеров будут 192.168.0.1 и 192.168.0.2. Первый из них подключен к интернету через IP-адрес 111.111.111.111 и на нем запущен NAT/PAT-сервер. Возьмем типичную ситуацию. Оба эти компьютера одновременно занимаются серфингом в интернете. Вводит один и второй пользователь в браузере адрес www.acerfans.ru и оба компьютера отправляют HTTP-запрос на сервер www.acerfans.ru. В запросе обязательно указывается адрес отправителя и адрес получателя. С адресом получателя все ясно: это IP-адрес, который соответствует доменному имени www.acerfans.ru и порт 80, который соответствует протоколу HTTP. Адрес отправителя — 192.168.0.1, порт 1050 для одного компьютера и 192.168.0.2, порт 1050 для второго. Эти два запроса получает NAT/PAT-сервер, подставляет в поле адреса отправителя свой IP-адрес (111.111.111.111), а в поле номера порта для одного компьютера ставит 1050, для второго — 1051. У себя в таблице он отмечает, что порту 1050 компьютера с IP-адресом 192.168.0.1 будет соответствовать порт 1050 с IP-адресом 111.111.111.111, а второму компьютеру — порт 1051. В результате два запроса от двух компьютеров со стороны выглядят как два запроса с компьютера с IP-адресом 111.111.111.111 и номерами портов отправителя 1050 и 1051. Когда с сервера придет ответ с помощью той же таблички соответствия NAT/PAT-сервер какой пакет какому компьютеру в сети предназначался.
Другой способ предоставления пользователям локальной сети доступа в интернет заключается в использовании прокси-сервера.
Более-подробно о том как настраивать общий доступ для локальной сети будет детально расписано в следующих материалах цикла
Прежде чем перейти непосредственно к маскам и шлюзам, стоит дать определения основным устройствам, которые используются в сети.
Сервер — это служба (программа, если хотите), которая запущена на компьютере.
Репитер (повторитель) — это устройство, которое предназначено для усиления сигнала. Используется для увеличения дальности соединения.
Хаб (концентратор) — это устройство, которое содержит несколько портов. При подаче сигнала на один порт — он усиливается и передается на остальные порты. Хаб — это по сути многопортовый репитер. И хаб, и репитер работают на первом (физическом) уровне модели OSI.
Бридж (мост) — это устройство, которое служит для фильтрации трафика по MAC-адресам. Он разделяет домены коллизий.
Свич (коммутатор) — это по сути многопортовый мост. Основной задачей коммутатора служит создание «виртуальных» каналов между устройствами на основе MAC-адресов.
Примечание: Дело в том, что технология Ethernet изначально рассчитывалась на сети с общей средой передачи данных — коаксиальным кабелем. В такой среде часто возникают ситуации, когда два устройства одновременно передают данные. Такая ситуация называется коллизией, а компьютеры в сети, которые подвержены колизии — называются доменом коллизии. Мост и коммутатор разбивают домен коллизии на меньшие части, а вот концентратор коллизии пропускает и в результате домен коллизии увеличивается. Кроме доменов коллизий есть еще и широковещательные домены. Широковещательные рассылки и мост и коммутатор пропускают. И мост, и коммутатор работают исключительно с MAC-адресами. В каждом мосте и коммутаторе существует таблица коммутации. Она представляет по сути таблицу, где каждому порту соответствует определенный набор MAC-адресов. В каждом пакете (точней, фрейме), который пересылается по сети, указан MAC-адрес назначения и MAC-адрес отправителя. Когда такой пакет попадает на порт коммутатора, последний считывает MAC-адрес получателя. Если такого в таблице коммутации нету, то пакет рассылается на все порты, кроме того, откуда он пришел. Адрес отправителя записывается в таблицу коммутации и ему ставится в соответствие порт, на который пакет поступил. Таким образом через некоторое время в таблице коммутации моста или коммутатора будут все MAC-адреса компьютеров в сети, а также порта, к которым последние подключены. Чтобы избавится от «петель» коммутаторы используют протокол STP
Роутер (маршрутизатор) — это устройство, которое предназначено для соединения сетей, фильтрации по IP-адресам, обеспечения политик безопасности, а также многих других функций (DHCP, NAT/PAT…). Роутер работает с IP-адресами пакетов. Каждый роутер должен иметь таблице маршрутизации, где указано какой пакет куда отправлять (или не отправлять ) Таблица маршрутизации может заполнятся как вручную, так и с помощью протоколов маршрутизации (RIP, OSPF, IGRP, EIGRP…). В таблице маршрутизации указывается на какой интерфейс отправлять пакет, который адресован на тот или иной адрес. Именно для роутера огромное значение имеют маски подсети. К каждому интерфейсу роутера должны подключатся разные сети, иначе он может некорректно работать. Коммутатор и мост ни с IP-адресами, ни с масками подсети не работают. Для них это всего лишь данные, которые нужно передать. В этом и состоит основное отличие между маршрутизатором и коммутатором
Вот мы и подошли к такому понятию как маска подсети. Маска подсети — это 32-битное число, которое указывает где в IP-адресе адрес сети, а где адрес компьютера в сети. Выглядит маска сети примерно так: 255.255.255.0 или так 255.255.192.0, или даже так: 255.240.0.0
Особенностью маски подсети является то, что если записать ее в двоичной форме, то слева будут только единички, а справа — нули. Это обязательное условие!
Вот запишем в двоичной форме приведенные выше маски:
255.255.255.0 — 11111111.11111111.11111111.00000000
255.255.192.0 — 11111111.11111111.11000000.00000000
255.240.0.0 — 11111111.11110000.00000000.00000000
Как видим, есть четкая граница между нулями и единицами. Иногда маску 255.255.255.0 обозначают просто как /24 — 24 единицы, вторая маска будет обозначатся как /18, третья в моем примере — /12. В итоге адрес записывают так 192.168.0.1 /24
Все IP-адреса делятся на 5 классов: A, B, C, D и E
A — 0.0.0.0 — 127.255.255.255
B — 128.0.0.0 — 191.255.255.255
C — 192.0.0.0 — 223.255.255.255
D — 224.0.0.0 — 239.255.255.255
E — 240.0.0.0 — 255.255.255.255
Для первых трех классов установлены маски по-умолчанию. Для А — 255.0.0.0 или /8, для В — 255.255.0.0 или /16, для С — 255.255.255.0
Использование других масок тоже разрешено
Примечание: иногда бывают случаи, когда использование масок по-умолчанию нерационально. Яркий пример: соединение двух роутеров. Для соединения нужно всего два IP-адреса. Чтобы избежать нерационального использования IP-адресов и были придуманы сетевые маски переменной длинны — VLSM.
Как я уже отметил, сетевая маска нужна для выделения из IP-адреса компьютера IP-адреса сети или подсети. Делается это побитовой операцией логического И между IP-адресом и маской подсети. Стоит отметить, что IP-адреса, в хостовой части которых все нули являются адресами подсетей и использовать их в качестве IP-адресов компьютеров НЕЛЬЗЯ. Например: IP-адрес 192.168.0.16 с маской 255.255.255.240
будет адресом подсети. Чтобы в этом убедится запишем в двоичной форме сам адрес, а внизу маску подсети:
11000000.10101000.00000000.00010000 — адрес (синим указана хостовая часть адреса, красным — сетевая согласно маске подсети)
11111111.11111111.11111111.11110000 — маска
Как видим, в хостовой части (последние 4 бита) у нашего адреса все нули, следовательно, он является адресом подсети и назначить его назначить его на компьютер не получится. Именно поэтому невозможно назначить компьютеру адрес 192.168.0.0.
Кроме адреса подсети есть еще и широковещательный адрес. Если компьютеру нужно отправить сообщение всем компьютерам в сети, то вместо того, чтобы отправлять сообщение каждому из них, компьютер отправляет сообщение на адрес, в хостовой части которого все единицы. Для сети 192.168.0.0 с маской 255.255.255.0 это будет адрес 192.168.0.255. Для той же сети с маской 255.255.255.240 это будет уже 192.168.0.15
Объясню почему. Запишем опять адрес в двоичной форме:
11000000.10101000.00000000.00000000 — адрес
11111111.11111111.11111111.11110000 — маска
хххххххх. хххххххх. хххххххх. хххх0000 — хостовая часть (жирным)
меняем в хостовой части все нули на единицы, чтобы получить широковещательный адрес:
11000000.10101000.00000000.00001111
и переводим полученное число в десятеричный вид. Получим адрес 192.168.0.15. Аналогично определяются и адреса подсетей.
Примечание: Широковещательные адреса и адреса подсетей нельзя указывать в качестве IP-адресов компьютеров!!!
Вот пример разбиения сети на подсети с помощью масок подсети:
Как видим, у нас есть большая приватная сеть 10.0.0.0/8. Ее разбили на три подсети поменьше: 10.1.0.0, 10.2.0.0 и 10.3.0.0. Сеть 10.2.0.0 разбили 10.2.1.0, 10.2.2.0 и 10.2.3.0. Из этого примера четко видно, что IP-адреса имеют иерархическую структуру.
Если Вам что-нибудь не ясно в вопросах о подсетях и масках — спрашиваем в этом разделе форума
А теперь перейдем к шлюзам. Шлюз — это устройство, которое обеспечивает связь между сетями. Шлюзом, как правило, выступает роутер, один интерфейс которого подключен к одной сети, а второй — к другой.
Шлюз по умолчанию — это параметр, который указывает IP-адрес интерфейса роутера, который обеспечивает связь с другими сетями. Если компьютеру нужно отправить сообщение на адрес, который расположен в другой сети, то компьютер отправляет его на адрес шлюза по умолчанию. В роутерах тоже есть такой параметр, как шлюз по-умолчанию. Если роутер не знает куда отправлять пакет, то он его отправляет на шлюз по умолчанию. Если он не задан, то пакет отбрасывается.