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

  • Веб-браузер и веб-сервер.
  • Почтовый сервер и почтовый клиент.
  • Игра (любая сетевая) и сервера её обслуживающие.
  • Чатики и их сервера.

Современная сеть Интернет построена на стеке протоколов TCP/IP. Давайте посмотрим как этот стек устроен.

Стек делится на 4 уровня:

  • Уровень приложения. Уровень приложения описывает высокоуровневую логику по представлению данных: это текст, видео и т.д, а также порядок обмена этими данными между конечными приложениями. Т.е. на этом уровне мы принимаем решение о том контенте, который будет передаваться. Примеры таких протоколов: HTTP, FTP, IMAP/SMTP/POP3, DNS, Google API.
  • Уровень транспотра. Задачей данного уровня является доставка сообщений между различными приложениями. Т.е. передача данных от одного приложения к другому. Детали позже :)
  • Уровень сети. Задачей данного уровня является доставка собщений между компьютерами в рамках глобальной сети. Т.е. так, чтобы данные от 1 физической машинки в Бангладеше дошли до другой физической машинки в Монако.
  • Физический уровень. Задачей данного уровня является передача информации между физически связанными устройствами.

Физический уровень

Какие физические устройства связаны между собой в этом классе?

  • Компьютеры связаны медной витой парой с комутатором (switch). Ethernet. На уровне Ethernet мы можем передавать данные в виде фреймов, размер которых не превышает 1518 байт. Т.е. за 1 отправку данных вы можете передать только такой небольшой пакет.
  • Смартфоны связаны беспроводным образом с точкой доступа (wi-fi). Скорее всего тоже Ethernet с поправкой на формат передачи данных.
  • Сматрфоны связаны беспроводным образом с базовой станцией (GSM).

Wi-Fi vs Медь

  • Wi-Fi позволяет клиенту свободно перемещаться в пространстве.
  • Медь позволяет клиентам одновременно передавать данные в оба направления. Full Duplex. Не зря оно называется парой :)
  • Медь позволяет всем клиентам одновременно общаться.
  • Wi-Fi не требует установки средств передачи данных, хотя иногда требует снести пару стен.
  • Медь почти не теряет данные, которые по ней передаются, а в сетях WiFi количество потеряных пакетов может достигать 30%.

Фрейм

Вне зависимости от вещества, по которому передаются данные, все компьютеры физически соединённые друг с другом должны иметь возможность посылать сообщения друг другу. Чтобы послать сообщение нам необходимо знать какой-то уникальный адрес для компьютера. В стандартре Ethernet каждый сетевой адаптер имеет свой уникальный MAC-адресс.

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

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

Структура фрейма следующая:

  • Заголовок, 14 байт.
    • Адресат, 6 байт.
    • Источник, 6 байт.
    • Флаги, 2 байта.
  • Данные, 1500 байт.
  • Контрольная сумма, 4 байта.

Уровень сети

На данном уровне у нас стоит задача по передаче данных между компьютерами по всей глобальной сети Интернет.

На данном уровне в стеке TCP/IP на настоящий момент есть 2 протокола: IPv4, IPv6. IPv4 разработан в 81 году и на настоящий момент является стандартом де-факто при передаче данных в сети Интернет. IPv6 разработан в 1996 году, может быть мы будем его активно использовать в следующем десятилетии.

В рамках протокола IPv4 каждому устройству в сети предоставляется уникальный IP-адрес. Размер адреса - 32 бита. IPv4 может обслужить: 2^32 ~ 4 милиарда устройств. Де-факто на настоящий момент физических устройств, подключённых к сети Интернет может быть больше данного числа.

Для отображения IPv4-адреса обычно используется следующая нотация: 4.115.86.54. Т.е. пишутся 4 числа, разделённые точками. На каждой позиции может быть написано число от 0 до 255. Таким образом кодируются 4 группы по 8 байт.

Однако только IPv4-адресов для функционирования сети не совсем достаточно.

Давайте рассмотрим структуру сети (на доске).

  • Если мы можем по физическому каналу передать данные компьютеру, то просто посылаем ему пакет.
  • Если мы НЕ можем связаться по физическому уровню, то передаём пакет на маршрутизатор.

Таблица маршрутизации

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

Если мне необходимо послать пакет в сеть B, тогда данные необходимо передать компьютеру C.10. А он дальше сам поймёт куда передавать эту информацию.

Как описываются IP-сети

Для описания IP-сетей используется пара из IP-адреса и маски сети. В моём примере присутствовали следующие адреса:

  • A.1
  • A.2
  • C.10

Это калька с реальной схемы разделения всего пространства IP-адресов на подсети.

При делении на подсети мы говорим, что сеть описывается первой частью сетевого адреса. А последняя часть сетевого адреса описывает конкретный компьютер. Макска подсети говорит какое количество бит описывает сеть.

Классическая схема разбиения на сети подразумевала наличие 3 типов сетей:

  • Сети типа А имеют 8 бит для обозначения сети.
  • Сети типа B имеют 16 бит для обозначения сети.
  • Сети типа C имеют 24 бита для обозначения сети.

Допустим, что у нас есть сеть типа A и IP-адрес 10.15.164.18. Какие части этого адреса описывают сеть, а какие компьютер? 10 - сеть. 15.164.18 - номер компьютера. Для обозначения такой сети могут использоваться:

  • 10.0.0.0 / 8 - при обозначении сети используется 1 IP-адрес, который подходит под её описание. / 8 - показывает количество бит, которые важны при описании сети. Например 10.0.0.0 / 8 != 10.0.0.0 / 24.
  • 10.0.0.0, маска: 255.0.0.0. Маска - это число, которое используется для описания важных частей IP-адреса.

1010101010111101010101011010110 - ip-адрес компьютера

1111111100000000000000000000000 - маска сети

После применения операции битового И

1010101000000000000000000000000 - адрес сети

255.252.0.0

В настоящий момент сети делятся с использованием произвольных масок сетей. В зависимости от потребностей предприятия. Рассмотрим примеры:

  • 10.0.0.0/24 - она позволяет описать 2^8 - 2 компьютеров. Из всей сети первый адрес, 0, описывает всю сеть и недоступен для маршрутизации, а последний адрес, 255, нужен для выполнения “широковещательных” запросов, на которые должен ответить каждый компьютер данной сети.
  • 157.57.73.0/30 - 2 компьютера с адресами 1 и 2.
  • 54.75.38.16/28 - 14 компьютеров. с адресаи 17…30.

Кодировка IP-пакета

  • Заголовок занимает 16 байта.
    • Много полезной информаци
    • Адреса источника и назначения, по 4 байта на адрес.
  • Данные