Одним из ключевых элементов любой сети является схема адресации. Именно она определяет как информация от источника попадет к получателю. Рассмотрим этот вопрос более-детально на примере университета. В университете есть много факультетов, на факультете есть несколько курсов, на курсе есть несколько групп, а группе есть десяток студентов, у каждого студента есть свое уникальное имя, по которому можно его однозначно определить. Стоит задача: один студент должен передать другому книжку, например. Если оба студента учатся в одной группе, то с этим проблем не будет, все всех знают. А вот если студенты учатся на разных факультетах, то здесь уже сложней. Запомнить как зовут каждого студента в университете, на каком факультете учится, на каком курсе, в какой группе почти не реально. Поэтому чтобы книжка попала от одного студента ко второму, первый должен знать на каком факультете, на каком курсе, в какой группе и как зовут второго студента. На таком же принципе построена работа локальной компьютерной сети. Работу локальной сети будем рассматривать на примере наиболее-распространенной технологии 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 уровней. Ее создали для упрощения понимания работы сети. Более-подробно о ней сказано в Википедии
TCP/IP Сетевую модель OSI не стоит путать со стеком протоколов OSI, это разные вещи. Сейчас активно на практике используется стек протоколов
В примере со студентом аналогом информации о факультете, группе, номера в списке служит 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-адреса были поделены на глобальные и приватные. К приватным относятся такие диапазоны адресов:
Эти адреса использоваться ТОЛЬКО в локальных сетях. В глобальной сети интернет они не используются. Это значит, что компьютера с адресами из приватных диапазонов и интернете нет. Если есть необходимость создать небольшую домашнюю или большую и не домашнюю ЛОКАЛЬНУЮ сеть - нужно использовать адреса из приватного диапазона!
Возникает вполне логичный вопрос: а как предоставить доступ в интернет компьютерам из локальной сети? У них ведь 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 обозначают просто как /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 - маска 11000000.10101000.00000000.00000000 - хостовая часть (жирным) меняем в хостовой части все нули на единицы, чтобы получить широковещательный адрес: 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-адрес интерфейса роутера, который обеспечивает связь с другими сетями. Если компьютеру нужно отправить сообщение на адрес, который расположен в другой сети, то компьютер отправляет его на адрес шлюза по умолчанию. В роутерах тоже есть такой параметр, как шлюз по-умолчанию. Если роутер не знает куда отправлять пакет, то он его отправляет на шлюз по умолчанию. Если он не задан, то пакет отбрасывается.