| Amarao ( @ 2008-09-28 04:26:00 |
Компьютерные сети - простейшие основы принципов работы (часть 7)
Ура. Второй уровень закончился, приходит третий уровень (я хотел было написать про 802.1X, про протокол идентификации по паролю на канальном уровне, но, честно говорю, "я о нём только читал", и объяснение его сочетания с всякими крипто-заморочками в WiFi приведёт к ахинее, так что просто упомянем, что такой протокол есть).
Третий уровень. Сетевой. Уровень, на котором происходит самое важное и сложное.
Напомню, в кратце. На первом (физическом) уровне определяется как именно кодировать биты в шипение/моргание. На втором уровне у нас появляется понятие "устройство" (точнее, его номер), "кадр" (и возможность проверить, правильно ли мы приняли его).
Третий уровень - уровень сетевой, позволяет передавать данные между устройствами через "третьих лиц". Главная, важнейшая особенность третьего уровня - маршрутизация.
Заметим, на втором уровне есть некие робкие зачатки этого (коммутатор умеет определять в какой именно порт передать кадр), но сделать сеть на 100000 человек из одних только коммутаторов не получится. Потому что сам протокол не подразумевает "разумного выбора" в направлении передачи данных.
Для определения как именно передавать данные и был создан третий уровень.
В принципе, как и всех остальных, протоколов третьего уровня, есть несколько видов. Но главным, основным и фундаментальным является Протокол Интернета. IP. Протокол, который связывает между собою всех, кто пользуется интернетом.
О маршрутизации мы поговорим чуть позже, пока остановимся на "формате имён". В настоящий момент используется версия 4 протокола, хотя горячие головы порываются перейти на ipv6, всё нижеследующее касается ipv4.
IP-адрес состоит из двух частей: номер сети и номер узла. (Примерно так можно считать, что почтовый адрес (бумажный) состоит из индекса и фамилии получателя). В Большом Интернете (той его части, которую никогда не увидит простой человек у себя дома) используется ещё более важная величина - автономная система, но об этом мы (может быть) поговорим потом. Для дальнейшей терминологии, мы добавим помимо слов "устройство" и "порт", слово "узел" (как объект принимающий/отправляющий данные на третьем уровне).
Пока что, с точки зрения IP, важно деление на номер сети и узла. В силу крохоборства создателей протокола, номер сети и номер узла тщательно упихивается в 4 байта, при этом граница между номером сети и узла проходит (обычно) не по границе байта. Так что без двоичной системы нам не обойтись.
Основное условие - комбинация номера узла и номера сети должна давать 4 байта. Ровно.
Номер сети указывается первым, за ним указывается номер узла. Сети бывают разного размера (от 1 узла до сотен тысяч), так что для определения "где сеть, а где узел" используется маска сети. Если кто знает двоичное счисление, то вот простые формулы (формула применяется к каждому биту по-очереди).
NET=IP AND MASK
HOST = IP AND NOT MASK
Если кто не знает, то вот (занудное) объяснение:
Представим себе адрес (4 байта) в двоичном виде (что такое двоичная система счисления объяснять не буду, из принципа).
Часть из этих нулей и единиц - номер сети, часть номер узла. Для отделения одного от другого мы создаём ещё 4 байта, у которых все биты, которые указывают на номер сети, равны 1, а все биты, указывающие на номер узла - нулю. Так как номер сети идёт первым, все маски вначале имеют единицы, а нули потом (и ни в коем случае не в перемешку или в обратном порядке). Другими словами, после первого нуля в маске больше не может быть единиц.
ИП адрес и маску принято записывать не как число, а как 4 однобайтовых числа через точку.
Например, 192.168.15.4. Маска при этом 255.255.255.0 (т.е. три байта состоят из чистых единиц, четвёртый байт из нулей, это означает, что три байта это номер сети 192.168.15.0, а последний байт - номер узла (.4)).
Повторю, что число бит в номерах может быть не кратным 8. Например, 192.168.129.44 при маске сети 255.255.128.0 будет иметь номер сети 192.168.128, и номер узла 1.44.
Сказать честно, в реальной жизни, это немного неудобно.
Кстати, обратите внимание, маска 255.255.255.255 означает сеть, в которой есть только 1 узел (на самом деле 0, но для удобства работы принято считать, что 1), а маска 0.0.0.0 означает "весь интернет".
Деление на "сеть" и "узел" с одной стороны важно (почему - в следующем уроке), с другой стороны, довольно условно. Например, если у нас есть две сети 192.168.1.0 и 192.168.2.0, то в некоторых случаях, мы их можем объявить одной сетью 192.168.0.0. Это можно сделать только в некоторых случаях (подробности потом).
Заметим, так как биты в маске сети должны идти до победного конца (без промежуточных нулей), то глупо записывать их в длинной форме, когда можно просто указать количество этих самых единиц. Это делают через дробь. Например, 192.168.1.1/24 это то же самое, что 192.168.1.1 mask 255.255.255.0.
ИП адреса бывают 4 видов. Во-первых, это адреса "обратной петли" (т.е. адреса, назначенные узлу для самого себя, т.е. не использующиеся для общения с устройствами снаружи). К таковым относятся адреса 127.0.0.0/8 (/8 - это очень много, это сеть с номером 127 и 2^(3*8) = 24 миллиона адресов).
Во-вторых, это мультикастовые адреса. Об этом мы не скажем ни слова (слишком запутанно, да и не нужно, важно знать, что они есть и для другого их использовать нельзя).
В третьих, это адреса для "частного использования" (т.е. адреса, которые может использовать любой желающий, при условии, что в интернет данные с такими адресами не попадут). Это 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12).
Ну и в четвёртых, это обычные адреса, которые используются в интернете. Заметим, они постепенно кончаются, именно по этой причине товарищи рвутся сделать ipv6, в котором на адрес отводится аж 16 байт, так что "хватит всем" (они наивные).
Что это за "частное использование адресов"? Дело в том, что иногда надо сделать локальную сеть без выхода в интернет (в рамках третьего уровня). Для таких сетей (например, для вашей личной сети в пределах квартиры) и выделены частные адреса.
Можно ли использовать другие адреса? Да, можно. Хотите 89.0.0.0/8 для домашней сети? Нет проблем. Только не обижайтесь, если при этом у вас не будет связи с 3/4 питера. Частные адреса нужны, чтобы быть уверенным, что используя этот адрес, не оказаться в ситуации, что с этим номером у вас и локальная машина, и удалённая (с которой вам очень хочется связаться).
С этой проблемой, кстати, сталкиваются домонетки, в которых есть пирринг между сетями. Если у вас в одной сети адреса 192.168.10.0/24, и в другой 192.168.10.0/24, то связи между ними не будет 100%.
Да и вообще, использование "частных" адресов в домонетках - дурной тон. Хотя бы потому, что для домашнего пользователя это уже не частные сети, а внешние (публичные).
Ура. Второй уровень закончился, приходит третий уровень (я хотел было написать про 802.1X, про протокол идентификации по паролю на канальном уровне, но, честно говорю, "я о нём только читал", и объяснение его сочетания с всякими крипто-заморочками в WiFi приведёт к ахинее, так что просто упомянем, что такой протокол есть).
Третий уровень. Сетевой. Уровень, на котором происходит самое важное и сложное.
Напомню, в кратце. На первом (физическом) уровне определяется как именно кодировать биты в шипение/моргание. На втором уровне у нас появляется понятие "устройство" (точнее, его номер), "кадр" (и возможность проверить, правильно ли мы приняли его).
Третий уровень - уровень сетевой, позволяет передавать данные между устройствами через "третьих лиц". Главная, важнейшая особенность третьего уровня - маршрутизация.
Заметим, на втором уровне есть некие робкие зачатки этого (коммутатор умеет определять в какой именно порт передать кадр), но сделать сеть на 100000 человек из одних только коммутаторов не получится. Потому что сам протокол не подразумевает "разумного выбора" в направлении передачи данных.
Для определения как именно передавать данные и был создан третий уровень.
В принципе, как и всех остальных, протоколов третьего уровня, есть несколько видов. Но главным, основным и фундаментальным является Протокол Интернета. IP. Протокол, который связывает между собою всех, кто пользуется интернетом.
О маршрутизации мы поговорим чуть позже, пока остановимся на "формате имён". В настоящий момент используется версия 4 протокола, хотя горячие головы порываются перейти на ipv6, всё нижеследующее касается ipv4.
IP-адрес состоит из двух частей: номер сети и номер узла. (Примерно так можно считать, что почтовый адрес (бумажный) состоит из индекса и фамилии получателя). В Большом Интернете (той его части, которую никогда не увидит простой человек у себя дома) используется ещё более важная величина - автономная система, но об этом мы (может быть) поговорим потом. Для дальнейшей терминологии, мы добавим помимо слов "устройство" и "порт", слово "узел" (как объект принимающий/отправляющий данные на третьем уровне).
Пока что, с точки зрения IP, важно деление на номер сети и узла. В силу крохоборства создателей протокола, номер сети и номер узла тщательно упихивается в 4 байта, при этом граница между номером сети и узла проходит (обычно) не по границе байта. Так что без двоичной системы нам не обойтись.
Основное условие - комбинация номера узла и номера сети должна давать 4 байта. Ровно.
Номер сети указывается первым, за ним указывается номер узла. Сети бывают разного размера (от 1 узла до сотен тысяч), так что для определения "где сеть, а где узел" используется маска сети. Если кто знает двоичное счисление, то вот простые формулы (формула применяется к каждому биту по-очереди).
NET=IP AND MASK
HOST = IP AND NOT MASK
Если кто не знает, то вот (занудное) объяснение:
Представим себе адрес (4 байта) в двоичном виде (что такое двоичная система счисления объяснять не буду, из принципа).
Часть из этих нулей и единиц - номер сети, часть номер узла. Для отделения одного от другого мы создаём ещё 4 байта, у которых все биты, которые указывают на номер сети, равны 1, а все биты, указывающие на номер узла - нулю. Так как номер сети идёт первым, все маски вначале имеют единицы, а нули потом (и ни в коем случае не в перемешку или в обратном порядке). Другими словами, после первого нуля в маске больше не может быть единиц.
ИП адрес и маску принято записывать не как число, а как 4 однобайтовых числа через точку.
Например, 192.168.15.4. Маска при этом 255.255.255.0 (т.е. три байта состоят из чистых единиц, четвёртый байт из нулей, это означает, что три байта это номер сети 192.168.15.0, а последний байт - номер узла (.4)).
Повторю, что число бит в номерах может быть не кратным 8. Например, 192.168.129.44 при маске сети 255.255.128.0 будет иметь номер сети 192.168.128, и номер узла 1.44.
Сказать честно, в реальной жизни, это немного неудобно.
Кстати, обратите внимание, маска 255.255.255.255 означает сеть, в которой есть только 1 узел (на самом деле 0, но для удобства работы принято считать, что 1), а маска 0.0.0.0 означает "весь интернет".
Деление на "сеть" и "узел" с одной стороны важно (почему - в следующем уроке), с другой стороны, довольно условно. Например, если у нас есть две сети 192.168.1.0 и 192.168.2.0, то в некоторых случаях, мы их можем объявить одной сетью 192.168.0.0. Это можно сделать только в некоторых случаях (подробности потом).
Заметим, так как биты в маске сети должны идти до победного конца (без промежуточных нулей), то глупо записывать их в длинной форме, когда можно просто указать количество этих самых единиц. Это делают через дробь. Например, 192.168.1.1/24 это то же самое, что 192.168.1.1 mask 255.255.255.0.
ИП адреса бывают 4 видов. Во-первых, это адреса "обратной петли" (т.е. адреса, назначенные узлу для самого себя, т.е. не использующиеся для общения с устройствами снаружи). К таковым относятся адреса 127.0.0.0/8 (/8 - это очень много, это сеть с номером 127 и 2^(3*8) = 24 миллиона адресов).
Во-вторых, это мультикастовые адреса. Об этом мы не скажем ни слова (слишком запутанно, да и не нужно, важно знать, что они есть и для другого их использовать нельзя).
В третьих, это адреса для "частного использования" (т.е. адреса, которые может использовать любой желающий, при условии, что в интернет данные с такими адресами не попадут). Это 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12).
Ну и в четвёртых, это обычные адреса, которые используются в интернете. Заметим, они постепенно кончаются, именно по этой причине товарищи рвутся сделать ipv6, в котором на адрес отводится аж 16 байт, так что "хватит всем" (они наивные).
Что это за "частное использование адресов"? Дело в том, что иногда надо сделать локальную сеть без выхода в интернет (в рамках третьего уровня). Для таких сетей (например, для вашей личной сети в пределах квартиры) и выделены частные адреса.
Можно ли использовать другие адреса? Да, можно. Хотите 89.0.0.0/8 для домашней сети? Нет проблем. Только не обижайтесь, если при этом у вас не будет связи с 3/4 питера. Частные адреса нужны, чтобы быть уверенным, что используя этот адрес, не оказаться в ситуации, что с этим номером у вас и локальная машина, и удалённая (с которой вам очень хочется связаться).
С этой проблемой, кстати, сталкиваются домонетки, в которых есть пирринг между сетями. Если у вас в одной сети адреса 192.168.10.0/24, и в другой 192.168.10.0/24, то связи между ними не будет 100%.
Да и вообще, использование "частных" адресов в домонетках - дурной тон. Хотя бы потому, что для домашнего пользователя это уже не частные сети, а внешние (публичные).