Сети
Введение
Эта страница поможет вам с навигацией по статьям о компьютерных сетях.
Что такое Сеть
Сеть - это группа компьютеров или других устройств объединённых с помощью проводов или радиоволн.
Что такое Хост
Хост - это одно устройство в сети.
К хосту можно обратиться по сети.
Хост может посылать запросы к одному или нескольким хостам в сети.
Для обращения по сети к самому себе придуман специальный термин - обращение к localhost
Читайте также
rfc1122 - Requirements for Internet Hosts -- Communication Layers
Что такое Протокол
В основе обмена данными по сети лежит передача электрических импульсов. Их можно преобразовать в
числа. Например высокое напряжение принять за 1 а низкое за 0.
Можно договориться о том какие наборы из единиц и нулей нужно посылать для успешного обмена информацией.
Это будет называться протоколом. Протолов может быть много и они могут вкладываться друг в друга.
Примеры: TCP, IP, UPD,
SSH
,
SCP
,
XRDP
,
VNC
,
FTP и другие.
Наивный пример протокола, который я написал для демонстрации сути того, чем является
протокол вы можете изучить
здесь
IP
IP это протокол третьего (сетевого) уровня в модели OSI - Network Layer.
Пример IP адреса 8.8.8.8
Делится точками на четыре части - октета по 8 бит. Каждый октет может принимать значение от 0 до 255
203.0.113.10/24
/24 - это
Subnet Mask
или просто netmask - маска подсети.
С помощью
маски
адрес делится на две части Network Portion (адрес сети) и Host Portion (адрес хоста).
Величина Network Portion равна маске.
203.0.113 - это так называемая Network Portion
.10 - это Host Portion
Разобраться как происходит это разделение можно изучив подробнее раздел
Subnet Mask
Без маски IP не самодостаточен (пример)
Если вам нужно узнать ваш IP адрес, сделать это можно здесь
203 | 0 | 113 | 10 |
11001011 | 00000000 | 01110001 | 00001010 |
8 бит | 8 бит | 8 бит | 8 бит |
До 1995-го года использовалсь
Classful Addressing
После 1995-го Classless Addressing
Маска Подсети - Subnet Mask
203.0.113.10/24
В этом примере маска равняется 24. То есть занимает ровно три октета по восемь бит.
Значит первые три октета отвечают за адрес сети, а последний за адрес хоста внутри сети.
Если бы маска равнялась 16, то адрес делился бы пополам. Первая половина - сеть, вторая половина - хост.
Итак, 24 бита отведено под сетевую часть адреса и 8 бит под хосты (hosts, также употребляют термин nodes).
203.0.113 - это так называемая Network Portion
.10 - это Host Portion
Уменьшив маску можно увеличить размер Host Portion за счёт Network Portion.
IP в десятичном виде | 203 | 0 | 113 | 10 |
---|---|---|---|---|
IP в двоичном виде | 11001011 | 00000000 | 01110001 | 00001010 |
Маска в двоичном виде | 11111111 | 11111111 | 11111111 | 00000000 |
Маска в десятичном виде | 255 | 255 | 255 | 0 |
Маска также разбита на октеты. В таблице удобно расположены бинарный IP адрес и бинарная маска.
Если бит адреса находится над 0 маски - он соответствует Host Portion.
Если бит адреса находится над 1 маске - то это Network Portion
В соответствии с RFC 1519 маска должна состоять из идущих подряд единиц без нулей между ними.
An implementation following these rules should also be generalized, so that an arbitrary network number and mask are accepted for all routing destinations. The only outstanding constraint is that the mask must be left contiguous. Note that the degenerate route 0.0.0.0 mask 0.0.0.0 is used as a default route and MUST be accepted by all implementations. Further, to protect against accidental advertisements of this route via the inter-domain protocol, this route should never be advertised unless there is specific configuration information indicating to do so.
Примеры правильных масок:
10000000 00000000 00000000 00000000 # /1 11000000 00000000 00000000 00000000 # /2 11100000 00000000 00000000 00000000 # /3 … 11111111 11110000 00000000 00000000 # /12 11111111 11111111 11111111 00000000 # /16 11111111 11111111 11111111 00000000 # /24 11111111 11111111 11111111 11111110 # /31
Примеры неправильных масок с разрывами
10100000 00000000 00000000 00000000 11010000 00000000 00000000 00000000 11100001 00000000 00000000 00000000 … 11111111 11110001 00000000 00000000 11111111 11111111 11111101 11110100
Исключением из этого правила можно назвать так называемые Wildcard маски или обратные маски .
Чем меньше маска - тем больше уникальных хостов может быть в сети
В большой локальной сети не хочется тратить 24 бита на сетевую части и оставлять всего 8 бит на хосты.
Напомню, что 8 бит это всего 256 уникальных вариантов из которых первый .0 зарезервирован под
адрес самой сети (
Network Address
) а последний .255 зарезервирован под широковещательный адрес (
Broadcast Address
), о которых вы узнаете ниже, так что остаётся всего 254 уникальных IP для хостов
(
Host Address
).
Чтобы увеличить число уникальных адресов для хостов нужна другая маска. Например
11111111 | . | 00000000 | . | 00000000 | . | 00000000 |
255 | . | 0 | . | 0 | . | 0 |
В маске 255.0.0.0 всё наоборот: 8 бит под сетевую часть и 24 бита под хост
Пример IP адреса с такой маской
IP в десятичном виде | 10 | . | 0 | . | 0 | . | 10 |
---|---|---|---|---|---|---|---|
IP в двоичном виде | 00001010 | . | 00000000 | . | 00000000 | . | 00001010 |
Маска в двоичном виде | 11111111 | . | 00000000 | . | 00000000 | . | 00000000 |
Маска в десятичном виде | 255 | . | 0 | . | 0 | . | 0 |
Не обязательно разграничивать Host Portion и Network Portion по границе октета
IP в десятичном виде | 10 | . | 0 | . | 0 | . | 10 |
---|---|---|---|---|---|---|---|
IP в двоичном виде | 00001010 | . | 00000000 | . | 00000000 | . | 00001010 |
Маска в двоичном виде | 11111111 | . | 11111111 | . | 11110000 | . | 00000000 |
Маска в десятичном виде | 255 | . | 255 | . | 240 | . | 0 |
IP из предыдущего примера 10.0.0.10 может быть у хоста в сети как с маской 255.0.0.0 так и с маской
255.255.240.0
Разберёмся где проявится разница.
Рассмотрим два IP адреса 10.0.15.10 и 10.0.16.10.
Если маска 255.0.0.0
10.0.15.10 dec | 10 | . | 0 | . | 15 | . | 10 |
---|---|---|---|---|---|---|---|
10.0.15.10 bin | 00001010 | . | 00000000 | . | 00001111 | . | 00001010 |
10.0.16.10 dec | 10 | . | 0 | . | 16 | . | 10 |
10.0.16.10 bin | 00001010 | . | 00000000 | . | 00010000 | . | 00001010 |
Маска в двоичном виде | 11111111 | . | 00000000 | . | 00000000 | . | 00000000 |
Маска в десятичном виде | 255 | . | 0 | . | 0 | . | 0 |
Сетевая часть адреса занимает только первый октет и выделена жирным шрифтом,
поэтому легко понять, что 10.0.15.10 и 10.0.16.10 это два соседних хоста в одной подсети.
Рассмотрим те же адреса но с маской 255.255.240.0
10.0.15.10 dec | 10 | . | 0 | . | 15 | . | 10 |
---|---|---|---|---|---|---|---|
10.0.15.10 bin | 00001010 | . | 00000000 | . | 00001111 | . | 00001010 |
10.0.16.10 dec | 10 | . | 0 | . | 16 | . | 10 |
10.0.16.10 bin | 00001010 | . | 00000000 | . | 00010000 | . | 00001010 |
Маска в двоичном виде | 11111111 | . | 11111111 | . | 11110000 | . | 00000000 |
Маска в десятичном виде | 255 | . | 255 | . | 240 | . | 0 |
Обратите внимание на третий октет. Особенно на записи в двоичном виде.
Ни один из положительных битов адреса 10.0.15.10 не попал в сетевую часть. (нет жирных единиц)
Таким образом у 10.0.15.10 адрес хоста остался прежним, но заметно выросла сетевая часть IP адреса.
У 10.0.16.10 единица в третьем октете попала в сетевую часть. От адреса хоста осталось только 1010 а
подсеть теперь не такая как у 10.0.15.10
Таким образом теперь 10.0.16.10 и 10.0.15.10 это не соседние хосты одной подсети а разные
хосты в разных подсетях.
Classful Addressing
Если вы когда-то слышали про IP класса A, класса B, C, D или E - это относилось как раз
к устаревшей классовой адресации (Classful Addressing)
Про
бесклассовую адресацию
вы можете прочитать
здесь
Класс | Диапазон IP адресов | |
---|---|---|
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 |
A, B, C - это так называемый Unicast. Именно такие адреса сейчас используются в публичном интернете (за исключением
приватных адресов
. Принцип - одно устройство общается с одним устройством
D - это multicast. Одно устройство общается с несколькими устройствами. Не поддерживается в интернете, но поддерживается
в больших частных сетях для трансляций совещаний и т.д.
Класс A: первые 8 бит это всегда сетевая часть
Класс B: первые 16 бит это всегда сетевая часть
Класс C: первые 24 бита это всегда сетевая часть
Класс D: все 32 бита это всегда сетевая часть
Типы IP адресов
По тому, какое значение принимает Host Portion можно разделить адреса на три типа
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги
Network Address
Сетевой адрес (Network Address или Network Prefix) - это уникальный идентификатор группы устройств. Например, как
название улицы является уникальным идентификатором всех домов на этой улице, но не является уникальным для
конкретного дома (если, конечно, на улице больше одного дома)
У сетевого адреса все биты в Host Portion равны 0
255.255.255.0 dec | 255 | . | 255 | . | 255 | . | 0 |
---|---|---|---|---|---|---|---|
255.255.255.0 bin | 11111111 | . | 11111111 | . | 11111111 | . | 00000000 |
Broadcast Address
Широковещательный адрес (Broadcast Address) - идентификатор указывающий на все устройства в сети.
У широковещательного адреса все биты в Host Portion равны 1
255.255.255.255 dec | 255 | . | 255 | . | 255 | . | 255 |
---|---|---|---|---|---|---|---|
255.255.255.255 bin | 11111111 | . | 11111111 | . | 11111111 | . | 11111111 |
В чём отличие поясню на примере: почтальону поручили отнести письмо в офис TopBicycle на улице Партнёрская и выдали инструкцию
Доставить до компании
Компания;Сайт;Тип;Адрес
TopBicycle;www.TopBicycle.ru;Велосипеды;Улица Партнёрская
Это аналог сетевого адреса. На улице Партнёрской может быть много офисов. Куда конкретно нести письмо сразу не понять - нужно уточнить адрес дома (в случае с сетью - адрес хоста).
На следующий день почтальону поручили отнести оповещение о ремонте на улице во все дома и офисы на улице Партнёрская.
Оповещения одинаковые для всех компаний.
Доставить до всех адресатов
Компания;Сайт;Тип;Адрес
URN.SU;https://www.eth1.ru;IT;Улица Партнёрская
HeiHei.ru;https://heihei.ru;TravelУлица Партнёрская
TopBicycle.ru;https://topbicycle.ru;BicyclesУлица Партнёрская
Авиасейлз;https://aviasales.ru;Travel;Улица Партнёрская
Booking.com;https://booking.com;Hotels;Улица Партнёрская
Hotellook;https://Hotellook.com;Hotels;Улица Партнёрская
Велодрайв;https://velodrive.ru;Bicycles;Улица Партнёрская
Xiaomi;https://mi-shop.com;Android;Улица Партнёрская
Samsung;https://www.samsungstore.ru;Android;Улица Партнёрская
Book24;https://Book24.ru;Books;Улица Партнёрская
GeekBrains;https://gb.ru;Education;Улица Партнёрская
Нетология;https://netology.ru;Education;Улица Партнёрская
SkillBox;https://SkillBox.ru;Education;Улица Партнёрская
Pluralsight;https://Pluralsight.com;Education;Улица Партнёрская
СовКомСтрахование;https://sovcomins.ru;Insurance;Улица Партнёрская
Полис 812;https://polis812.ru;Insurance;Улица Партнёрская
Vivo;https://ru.vivo.com/;Android;Улица Партнёрская
Beget;https://beget.com;Hosting;Улица Партнёрская
Reg.ru;https://Reg.ru.ru;Hosting;Улица Партнёрская
OLDI;https://oldi.ru;Laptops;Улица Партнёрская
Это аналог широковещательного адреса. Если бы на улице было два офиса, нужно нести письма в оба. Если двадцать - во все двадцать. Знать кто в каком доме необязательно поэтому если он идёт с письмами по улице то просто заходит во все дома по порядку (не по списку, а так как они расположены на улице).
Host Address
Адрес хоста (Host Address) - идентификатор указывающий на конкретное устройство в сети.
У адреса хоста может быть любая комбинация бит в Host Portion кроме двух: только нули и только единицы.
Только нули это сетевой адрес, только единицы - широковещательный. Всё остальное - это адреса хостов.
Сетевой адрес в десятичной записи может оканчиваться не на 0
Рассмотрим адрес 10.128.224.64 с маской 255.255.255.224.
Проверить являтеся ли адрес сетевым означает проверить содержит ли Host Portion только единицы или нет.
Одного IP адреса для этого недостаточно, нужно рассмотреть его вместе с маской чтобы понять чему
равна Host Portion
IP в десятичном виде | 10 | . | 128 | . | 224 | . | 64 |
---|---|---|---|---|---|---|---|
Маска в десятичном виде | 255 | . | 255 | . | 255 | . | 224 |
IP в двоичном виде | 00001010 | . | 10000000 | . | 11100000 | . | 01000000 |
Маска в двоичном виде | 11111111 | . | 11111111 | . | 11111111 | . | 11100000 |
Сетевая часть выделена жирным, очевидно, что в части хоста остались только нули и этот адрес - сетевой
CIDR Notation
CIDR означает Classless Inter-Domain Routing то есть бесклассовая адресация.
Рассмотрим маску 255.255.255.0
Первый 24 бита это единицы. Чтобы не писать постоянно 255.255.255 можно писать
/24
Формат следующий сперва слеш, затем длина Network Portion
Например:
203.0.113.10/24
Private
Существует три диапазона адресов, которые не используются в публичном интернете.
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Начало | Конец | Маска |
---|---|---|
10.0.0.0 | 10.255.255.255 | /8 |
172.16.0.0 | 172.31.255.255 | /12 |
192.168.0.0 | 192.168.255.255 | /16 |
Рекомендуется избегать использования адреса 169.254.0.0/16 - так называемого APIPA
Адрес 127.0.0.1 зарезервирован под Loopback Address
Это означает адрес вашего же компьютера. Можно сказать домашний адрес.
В IPv6 он выглядит как ::1
Subnetting Networks
Рассмотрим IP адрес 10.0.0.0/8
10.0.0.0
255.0.0.0
Диапазон хост-адресов (не включая концы):
10.0.0.0 - 10.255.255.255
N 00001010 00000000 00000000 00000000
B 00001010 11111111 11111111 11111111
M 11111111 00000000 00000000 00000000
RFC
INTERNET PROTOCOL RFC 791
TRANSMISSION CONTROL PROTOCOL RFC 793
HTTP RFC 2616
Requirements for Internet Hosts -- Communication Layers RFC 1122
TCP и UDP порты
Сокеты
В соответсвии с RFC 793 TCP сокет - это эндпойнт состоящий из IP адреса и порта.
To allow for many processes within a single Host to use TCP communication facilities simultaneously, the TCP provides a set of addresses or ports within each host. Concatenated with the network and host addresses from the internet communication layer, this forms a socket. A pair of sockets uniquely identifies each connection. That is, a socket may be simultaneously used in multiple connections.
Про работы с сокетами в Python вы можете прочитать здесь
Сети | |
Примеры масок | |
Пример протокола | |
Порты | |
IT | |
SSH | |
DNS | |
PuTTY | |
Telnet | |
PSTools | |
Firefox | |
FreeSSHD | |
Компьютерные сети | |
Пример прокола | |
Как создать туннель | |
Как сделать проброс портов |
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги