Ip адресация для чайников: Основы компьютерных сетей. Тема №5. Понятие IP адресации, масок подсетей и их расчет / Хабр

Содержание

Руководство по стеку протоколов TCP/IP для начинающих

Cтек протоколов TCP/IP широко распространен. Он используется в качестве основы для глобальной сети интернет. Разбираемся в основных понятиях и принципах работы стека.

Основы TCP/IP

Стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol, протокол управления передачей/протокол интернета) — сетевая модель, описывающая процесс передачи цифровых данных. Она названа по двум главным протоколам, по этой модели построена глобальная сеть интернет. Сейчас это кажется невероятным, но в 1970-х информация не могла быть передана из одной сети в другую. Чтобы обеспечить такую возможность, был разработан стек интернет-протоколов, известный как TCP/IP.

Разработка сетевой модели осуществлялась при содействии Министерства обороны США, поэтому иногда модель TCP/IP называют DoD (Department of Defence) модель. Если вы знакомы с моделью OSI, то вам будет проще понять построение модели TCP/IP, потому что обе модели имеют деление на уровни, внутри которых действуют определенные протоколы и выполняются собственные функции. Мы разделили статью на смысловые части, чтобы было проще понять, как устроена модель TCP/IP:

Уровневая модель TCP/IP

Выше мы уже упоминали, что модель TCP/IP разделена на уровни, как и OSI, но отличие двух моделей в количестве уровней. Документами, определяющими сертификацию модели, являются RFC 1122 и RFC1123. Эти стандарты описывают четыре уровня абстракции модели TCP/IP: прикладной, транспортный, межсетевой и канальный. Существуют и другие версии описания модели, в том числе включающие иное количество уровней и их наименований. Однако в этой статье мы придерживаемся оригинальной версии и далее рассмотрим четыре уровня модели.

Канальный уровень (link layer)

Предназначение канального уровня — дать описание тому, как происходит обмен информацией на уровне сетевых устройств, определить, как информация будет передаваться от одного устройства к другому. Информация здесь кодируется, делится на пакеты и отправляется по нужному каналу, т.е. среде передачи.

Этот уровень также вычисляет максимальное расстояние, на которое пакеты возможно передать, частоту сигнала, задержку ответа и т. д. Все это — физические свойства среды передачи информации. На канальном уровне самым распространенным протоколом является Ethernet, который мы рассмотрим в конце статьи.

Межсетевой уровень (internet layer)

Глобальная сеть интернет состоит из множества локальных сетей, взаимодействующих между собой. Межсетевой уровень используется, чтобы описать обеспечение такого взаимодействия.

Межсетевое взаимодействие — это основной принцип построения интернета. Локальные сети по всему миру объединены в глобальную, а передачу данных между этими сетями осуществляют магистральные и пограничные маршрутизаторы.

Именно на межсетевом уровне функционирует протокол IP, позволивший объединить разные сети в глобальную. Как и протокол TCP, он дал название модели, рассматриваемой в статье.

Маска подсети и IP-адреса

Маска подсети помогает маршрутизатору понять, как и куда передавать пакет. Подсетью может являться любая сеть со своими протоколами. Маршрутизатор передает пакет напрямую, если получатель находится в той же подсети, что и отправитель. 128 устройств.

IPv6 имеет вид восьми блоков по четыре шестнадцатеричных значения, а каждый блок разделяется двоеточием. IPv6 выглядит следующим образом:

2dab:ffff:0000:0000:01aa:00ff:dd72:2c4a.

Так как IPv6 адреса длинные, их разрешается сокращать по определенным правилам, которые также описываются RFC:

  • Для написания адреса используются строчные буквы латинского алфавита: a, b, c, d, e, f.
  • Ведущие нули допускается не указывать — например, в адресе выше :00ff: можно записать как :ff:.
  • Группы нулей, идущие подряд, тоже допустимо сокращать и заменять на двойное двоеточие. На примере выше это выглядит так: 2dab:аааа::01aa:00ff:dd72:2c4a. Допускается делать не больше одного подобного сокращения в адресе IPv6 на наибольшей последовательности нулей. Если одинаково длинных последовательностей несколько — на самой левой из них.

IP предназначен для определения адресата и доставки ему информации. Он предоставляет услугу для вышестоящих уровней, но не гарантирует целостность доставляемой информации.

IP способен инкапсулировать другие протоколы, предоставлять место, куда они могут быть встроены. К таким протоколам, например, относятся ICMP (межсетевой протокол управляющих сообщений) и IGMP (межсетевой протокол группового управления). Информация о том, какой протокол инкапсулируется, отражается в заголовке IP-пакета. Так, ICMP будет обозначен числом 1, а IGMP будет обозначен числом 2.

ICMP

ICMP в основном используется устройствами в сети для доставки сообщений об ошибках и операционной информации, сообщающей об успехе или ошибке при связи с другим устройством. Например, именно с использованием ICMP осуществляется передача отчетов о недоступности устройств в сети. Кроме того, ICMP используется при диагностике сети — к примеру, в эксплуатации утилит ping или traceroute.

ICMP не передает какие-либо данные, что отличает его от протоколов, работающих на транспортном уровне — таких как TCP и UDP. ICMP, аналогично IP, работает на межсетевом уровне и фактически является неотъемлемой частью при реализации модели TCP/IP. Стоит отметить, что для разных версий IP используются и разные версии протокола ICMP.

Транспортный уровень (transport layer)

Постоянные резиденты транспортного уровня — протоколы TCP и UDP, они занимаются доставкой информации.

TCP (протокол управления передачей) — надежный, он обеспечивает передачу информации, проверяя дошла ли она, насколько полным является объем полученной информации и т.д. TCP дает возможность двум конечным устройствам производить обмен пакетами через предварительно установленное соединение. Он предоставляет услугу для приложений, повторно запрашивает потерянную информацию, устраняет дублирующие пакеты, регулируя загруженность сети. TCP гарантирует получение и сборку информации у адресата в правильном порядке.

UDP (протокол пользовательских датаграмм) — ненадежный, он занимается передачей автономных датаграмм. UDP не гарантирует, что всех датаграммы дойдут до получателя. Датаграммы уже содержат всю необходимую информацию, чтобы дойти до получателя, но они все равно могут быть потеряны или доставлены в порядке отличном от порядка при отправлении.

UDP обычно не используется, если требуется надежная передача информации. Использовать UDP имеет смысл там, где потеря части информации не будет критичной для приложения, например, в видеоиграх или потоковой передаче видео. UDP необходим, когда делать повторный запрос сложно или неоправданно по каким-то причинам.

Протоколы транспортного уровня не интерпретируют информацию, полученную с верхнего или нижних уровней, они служат только как канал передачи, но есть исключения. RSVP (Resource Reservation Protocol, протокол резервирования сетевых ресурсов) может использоваться, например, роутерами или сетевыми экранами в целях анализа трафика и принятия решений о его передаче или отклонении в зависимости от содержимого.

Прикладной уровень (application layer)

В модели TCP/IP отсутствуют дополнительные промежуточные уровни (представления и сеансовый) в отличие от OSI. Функции форматирования и представления данных делегированы библиотекам и программным интерфейсам приложений (API) — своего рода базам знаний, содержащим сведения о том, как приложения взаимодействуют между собой. Когда службы или приложения обращаются к библиотеке или API, те в ответ предоставляют набор действий, необходимых для выполнения задачи и полную инструкцию, каким образом эти действия нужно выполнять.

Протоколы прикладного уровня действуют для большинства приложений, они предоставляют услуги пользователю или обмениваются данными с «коллегами» с нижних уровней по уже установленным соединениям. Здесь для большинства приложений созданы свои протоколы. Например, браузеры используют HTTP для передачи гипертекста по сети, почтовые клиенты — SMTP для передачи почты, FTP-клиенты — протокол FTP для передачи файлов, службы DHCP — протокол назначения IP-адресов DHCP и так далее.

Узнайте, как устроена сетевая архитектура крупного провайдера.

Зачем нужен порт и что означает термин «сокет»

Приложения прикладного уровня, общаются также с предыдущим, транспортным, но они видят его протоколы как «черные ящики». Для приема-передачи информации они могут работать, например, с TCP или UDP, но понимают только конечный адрес в виде IP и порта, а не принцип их работы.

Как говорилось ранее, IP-адрес присваивается каждому конечному устройству протоколом межсетевого уровня. Но обмен данными происходит не между конечными устройствами, а между приложениями, установленными на них. Чтобы получить доступ к тому или иному сетевому приложению недостаточно только IP-адреса, поэтому для идентификации приложений применяют также порты. Комбинация IP-адреса и порта называется сокетом, или гнездом (socket).

Кроме собственных протоколов, приложения на прикладном уровне зачастую имеют и фиксированный номер порта для обращения к сети. Администрация адресного пространства интернет (IANA), занимающаяся выделением диапазонов IP-адресов, отвечает еще за назначение сетевым приложениям портов.

Так почтовые приложения, которые общаются по SMTP-протоколу, используют порт 25, по протоколу POP3 — порт 110, браузеры при работе по HTTP — порт 80, FTP-клиенты — порт 21. Порт всегда записывается после IP и отделяется от него двоеточием, выглядит это, например, так: 192. 168.1.1:80.

Что такое DNS и для чего используется эта служба

Чтобы не запоминать числовые адреса интернет-серверов была создана DNS — служба доменных имен. DNS всегда слушает на 53 порту и преобразует буквенные имена сетевых доменов в числовые IP-адреса и наоборот. Служба DNS позволяет не запоминать IP — компьютер самостоятельно посылает запрос «какой IP у selectel.ru?» на 53 порт DNS-сервера, полученного от поставщика услуг интернет.

DNS-сервер дает компьютеру ответ «IP для selectel.ru — XXX.XXX.XXX.XXX». Затем, компьютер устанавливает соединение с веб-сервером полученного IP, который слушает на порту 80 для HTTP-протокола и на порту 443 для HTTPS. В браузере порт не отображается в адресной строке, а используется по умолчанию, но, по сути, полный адрес сайта Selectel выглядит вот так: https://selectel.ru:443.

Для обеспечения корректной работы протоколов различных уровней в сетевых моделях используется специальный метод — инкапсуляция. Суть этого метода заключается в добавлении заголовка протокола текущего уровня к данным, полученным от протокола вышестоящего уровня. Процесс, обратный описанному, называется декапсуляцией. Оба процесса осуществляются на компьютерах получателя и отправителя данных попеременно, это позволяет долго не удерживать одну сторону канала занятой, оставляя время на передачу информации другому компьютеру.

Стек протоколов, снова канальный уровень

О канальном уровне модели TCP/IP мы рассказали меньше всего. Давайте вернемся еще раз к началу, чтобы рассмотреть инкапсуляцию протоколов и что значит «стек».

Большинству пользователей знаком протокол Ethernet. В сети, по стандарту Ethernet, устройства отправителя и адресата имеют определенный MAC-адрес — идентификатор «железа». MAC-адрес инкапсулируется в Ethernet вместе с типом передаваемых данных и самими данными. Фрагмент данных, составленных в соответствии с Ethernet, называется фреймом, или кадром (frame).

MAC-адрес каждого устройства уникален, и двух «железок» с одинаковым адресом не должно существовать. Совпадение может привести к сетевым проблемам. Таким образом, при получении кадра сетевой адаптер занимается извлечением полученной информации и ее дальнейшей обработкой.

После ознакомления с уровневой структурой модели становится понятно, что информация не может передаваться между двумя компьютерами напрямую. Сначала кадры передаются на межсетевой уровень, где компьютеру отправителя и компьютеру получателя назначается уникальный IP. После чего, на транспортном уровне, информация передается в виде TCP-фреймов либо UDP-датаграмм.

На каждом этапе, подобно снежному кому, к уже имеющейся информации добавляется служебная информация, например, порт на прикладном уровне, необходимый для идентификации сетевого приложения. Добавление служебной информации к основной обеспечивают разные протоколы — сначала Ethernet, поверх него IP, еще выше TCP, над ним порт, означающий приложение с делегированным ему протоколом. Такая вложенность называется стеком, названным TCP/IP по двум главным протоколам модели.

Point-to-Point протоколы

Отдельно расскажем о Point-to-Point (от точки к точке, двухточечный) протоколе, также известном как PPP. PPP уникален по своим функциям, он применяется для коммуникации между двумя маршрутизаторами без участия хоста или какой-либо сетевой структуры в промежутке. При необходимости PPP обеспечивает аутентификацию, шифрование, а также сжатие данных. Он широко используется при построении физических сетей, например, кабельных телефонных, сотовых телефонных, сетей по кабелю последовательной передачи и транк-линий (когда один маршрутизатор подключают к другому для увеличения размера сети).

У PPP есть два подвида — PPPoE (PPP по Ethernet) и PPPoA (PPP через асинхронный способ передачи данных — ATM), интернет-провайдеры часто их используют для DSL соединений.

PPP и его старший аналог SLIP (протокол последовательной межсетевой связи) формально относятся к межсетевому уровню TCP/IP, но в силу особого принципа работы, иногда выделяются в отдельную категорию. Преимущество PPP в том, что для установки соединения не требуется сетевая инфраструктура, а необходимость маршрутизаторов отпадает. Эти факторы обуславливают специфику использования PPP протоколов.

Заключение

Стек TCP/IP регламентирует взаимодействие разных уровней. Ключевым понятием здесь являются протоколы, формирующие стек, встраиваясь друг в друга с целью передать данные. Рассмотренная модель по сравнению с OSI имеет более простую архитектуру.

Сама модель остается неизменной, в то время как стандарты протоколов могут обновляться, что еще дальше упрощает работу с TCP/IP. Благодаря всем преимуществам стек TCP/IP получил широкое распространение и использовался сначала в качестве основы для создания глобальной сети, а после для описания работы интернета.

Сети

Как рассчитать маску подсети? | Твой сетевичок

Содержание

  • 1 В чем назначение маски подсети в сочетании с ip-адресом?
  • 2 Как разделить сеть на подсети с помощью маски подсети?
  • 3 Как научиться считать маски подсети?
  • 4 Для чего используется маска подсети?

В одной из предыдущих статей мы рассказывали, что такое маска подсети, и для чего она может потребоваться. Здесь же коснемся практической части и рассмотрим расчет маски подсети на конкретных примерах.

В чем назначение маски подсети в сочетании с ip-адресом?

Итак,существует пять классов маршрутизации – A, B, C, D, E. Различным организациям выделяются адреса из диапазонов A, B и C, D и E, которые используются для технических и исследовательских нужд.

Однако выделение какой-либо организации (или частному лицу в Интернете) сети из класса В – недопустимое расточительство. Например, вам нужен «белый» адрес для работы в сети Интернет.

Провайдер располагает адресами класса В и выделяет для вас одного сеть 129.16.0.0. Теперь у вас 65534 «белых» адресов, которые вы маловероятно задействуете.

Вот тут и нужна маска подсети. Маска нужна для определения, какая часть адреса относится к сети, а какая – к хосту. Адресация с использованием маски сети называется бесклассовой (от английского Classless Inter-Domain Routing или CIDR).

Маска подсети определена стандартом RFC 917.

Как именно работает и на что влияет маска подсети? Провайдеру, располагающему сетью 129.16.0.0 нет нужды отдавать ее полностью в чье-то ведение. Теперь можно разбить ее, используя маску сети на много подсетей меньшего размера.

Как разделить сеть на подсети с помощью маски подсети?

Возьмем адрес 129.16.10.1 с маской 255.255.255.0. В двоичном виде это будет выглядеть следующим образом:

129.16.10.1 = 10101100.00010000.00001010.00000001
255.255.255.0 = 11111111.11111111.11111111.00000000

Устройство, обрабатывающее IP пакет, сопоставляет адрес и маску и вычисляет, какая часть адреса принадлежит сети, а какая – хосту. Часть маски с единицами определяет сеть, а часть с нулями – хост.

Получаем:

10000001.00010000.00001010.00000001
11111111.11111111.11111111.00000000

Теперь, используя логическое И, можно рассчитать, как выглядит адрес подсети.

10000001.00010000.00001010.00000001
11111111.11111111.11111111.00000000
10000001.00010000.00001010.00000000 = 129.16.10.0

В двоичном виде точки между октетами не ставятся, здесь это сделано для большей наглядности.

Коротко в десятичном виде эта запись выглядит так: 129.16.10.0 /24.

Почему 24? –  Потому что именно столько бит выделено под сеть. Можно сокращать количество устройств и далее, забирая биты хостовой части и отдавая в пользу сетевой, увеличивая количество подсетей. На практике, провайдеры именно так и делают, выделяя каждому клиенту столько адресов, сколько нужно для пользования.

Как научиться считать маски подсети?

Маска подсети всегда представляет собой последовательное количество вначале единиц, а затем – нулей. Маски вида 11011111.11111111.11111111.1100000 быть не может.

Стоить учесть, что для любой подсети работает правило вычисление количества хостов:

232-n -2, где n – длина подсети. 232-24 -2 = 254 для маски 255.255.255.0.

Откуда берется -2?

Это первый и последний адреса сети: первый – адрес самой сети, последний – адрес широковещательных рассылок.

Еще для наглядности. Рассмотрим, как разделить сеть 192.168.1.0 /24 на две на подсети с помощью маски. Для этого заберем один бит хостовой части в пользу сетевой, получаем 11111111.11111111.11111111.10000000. На выходе у нас две подсети – 192. 168.1.0 /25 и 192.168.1.128 /25. (0 и 128 – значения, которые может принять первый бит четвертого октета, 0 и 1 соответственно).

Теперь рассмотрим, как разделить первоначальную сеть на четыре подсети. Для этого отдаем первые два бита из последнего октета в пользу сети:

11111111.11111111.11111111.00000000 = 192.168.1.0
11111111.11111111.11111111.01000000 = 192.168.1.64
11111111.11111111.11111111.10000000 = 192.168.1.128
11111111.11111111.11111111.11000000 = 192.168.1.192

Для чего используется маска подсети?

Деление больших сетей на маленькие используется администраторами для упрощения работы с сетевой инфраструктурой. Использование ограничений для различных департаментов компании удобно реализовывать на группу ПК, нежели отдельно на каждую машину. Кроме того, наличие подсетей уменьшает домены широковещательных рассылок, снижая нагрузку на коммутаторы.

Если два устройства относятся к одной подсети, то общение между ними будет осуществляться напрямую, минуя маршрутизатор. Для того, что бы отправить пакет в другую подсеть, устройство направляет его на свой шлюз по умолчанию, которым является физический или виртуальный интерфейс устройства третьего уровня (L3). Там сверяется адрес получателя с таблицей маршрутизации, и пакет направляется дальше.

Когда на маршрутизатор попадает очередной пакет, он проверяет сеть получателя, чтобы найти совпадение в своей таблице маршрутизации. Если совпадение есть, то пакет перенаправляется в нужный интерфейс, если совпадение отсутствует, то используется маршрут по умолчанию. В случае, когда поддержка бесклассовой маршрутизации не настроена, а пакет не относится к какой-либо сети в таблице маршрутизации, то он будет отброшен.

Например, пакет из сети 192.168.10.0 попадает на роутер, в таблице маршрутизации имеется два маршрута: к сетям 192.168.1.0 и 192.168.2.0, а так же маршрут по умолчанию 0.0.0.0 0.0.0.0. В такой ситуации пакет будет отброшен, так как сеть 192.168.10.0 относится к классу С, а маршрут к такой сети в таблице не существует.

В случае, когда используется бесклассовая маршрутизация, пакет будет отправлен на шлюз по умолчанию – 0.0.0.0 0.0.0.0.

Стоит учесть, что при использовании бесклассовой адресации само понятие «класс» пропадает. Нельзя сказать, что адрес 192.168.1.1 /24 относится к классу С или адрес 10.1.1.1 /24 относится к классу А. Классы были нужны для определения границ сети до тех пор, пока не использовалась маска сети.

  • Автор: Эжени

Класс IP Диапазон
A 0. 0.0.0 – 127.255.255.255
В 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
Е 240.0.0.0 – 255.255.255.255