Введение в сети
С точки зрения конечного пользователя сети позволяют нам обсуществлять взаимодействие между приложениями, которые географически распределены. Наиболее часто встречающимися такими приложениями являются:
- Веб-браузер и веб-сервер.
- Почтовый сервер и почтовый клиент.
- Игра (любая сетевая) и сервера её обслуживающие.
- Чатики и их сервера.
Современная сеть Интернет построена на стеке протоколов 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 байта на адрес.
- Данные