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

Классификация сетей

По типу коммутации:

  • Коммутация каналов (в телефонной линии).

    Строится маршрут между отправителем и получателем -> передаются данные по установленному соединению

    При выходе из строя одного из узлов соединение разрывается, а данные теряются

  • Коммутация пакетов (в компьютерных сетях).

    Данные делятся на пакеты -> строится маршрут между отправителем и получателем по каждому пакету

    При выходе из строя одного из узлов ищется новый маршрут

По технологии передачи:

  • Широковещательные сети

    Данные доступны всем компьютерам в сети

  • Точка-точка

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

По протяженности:

  • Персональная - 1 м (На столе)
  • Локальная - 10 м – 1 км (Комната, здание, кампус)
  • Муниципальная - 10 км (Город)
  • Глобальная - 100 – 1000 км (Страна, континент)
  • Объединение сетей - 10 000 км (Весь мир)

Стандарты компьютерных сетей

IEEE - стандарты сетевого оборудования.

RFC - протоколы интернет.

W3C - стандарты WEB.

Базовые понятия компьютерных сетей

Сервис - функции, которые реализует уровень.

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

Протокол - правила и соглашения для одного уровня.

Модель OSI (Open System Interconnection)

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

  • Передача битов по физическому каналу связи.
  • Не вникает в смысл передаваемой информации.
  • Задача: Как представить биты информации в виде сигналов, передаваемых по среде.

Канальный уровень:

  • Передача сообщений по каналу связи.
    • Определение начала/конца сообщения в потоке бит.
  • Обнаружение и коррекция ошибок.
  • В широковещательной сети:
    • Управление доступом к среде передачи данных.
    • Физическая адресация.

Сетевой уровень:

  • Создание составной сети, согласование различий в сетях.
  • Адресация (сетевые или глобальные адреса).
  • Определение маршрута пересылки пакетов в составной сети (маршрутизация).

Транспортный уровень

  • Обеспечивает передачу данных между процессами на хостах.
  • Управление надежностью:
    • Может предоставлять надежность выше, чем у сети.
    • Наиболее популярный сервис – защищенный от ошибок канал с гарантированным порядком следования сообщений.
  • Сквозной уровень.
  • Сообщения доставляются от источника адресату.
  • Предыдущие уровни используют принцип звеньев цепи.

Сеансовый уровень:

  • Управление диалогом (очерёдность передачи сообщений).
  • Управление маркерами (предотвращение одновременного выполнения критичной операции).
  • Синхронизация (метки в сообщениях для возобновления передачи в случае сбоя).

Уровень представления:

  • Обеспечивает согласование синтаксиса и семантики передаваемых данных
    • Форматы представления символов
    • Форматы чисел
  • Шифрование и дешифрование

Прикладной уровень:

  • Набор приложений, полезных пользователям:
    • Гипертекстовые Web-страницы
    • Социальные сети
    • Видео и аудио связь
    • Электронная почта
    • Доступ к разделяемым файлам
    • и многое другое

Единицы передачи данных

Уровень Название единицы
Прикладной Сообщение
Представления Сообщение
Сеансовый Сообщение
Транспортный Сегмент/Дейтаграмма
Сетевой Пакет
Канальный Кадр
Физический Бит

Сетевое оборудование

Уровень модели OSI Оборудование
Сетевой Маршрутизатор
Канальный Коммутатор, точка доступа
Физический Концентратор

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

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

Важные характеристики канала связи:

  • Пропускная способность.
  • Задержка.
  • Количество ошибок.

Типы каналов связи

  • Симплексный - можно передавать только в одну сторону.
  • Дуплексный - можно передавать в обе стороны.
  • Полудуплексный - можно передавать в обе стороны, но по очереди.

Среды передачи данных:

  1. Кабель
    • Телефонный кабель (“лапша”)
    • Коаксиальный кабель
    • Витая пара
    • Оптический кабель
    • Провода электропитания 220В
  2. Беспроводные технологии
    • Радиоволны
    • Инфракрасное излучение
  3. Спутниковые каналы
  4. Беспроводная оптика (лазеры)

Для представления сигналов можно использовать два подхода:

  • Цифровые сигналы. Метод представления сигналов: кодирование. Используется в медных кабелях. (0 - отсутствие напряжения, 1 - есть напряжение).
  • Аналоговые сигналы. Метод представления сигнала: модуляция. Используется в беспроводной среде и в оптоволокне.

Канальный уровень

Задачи:

  • Передача сообщений каналам связи – кадров (frame)
    • Определение начала/конца кадра в потоке бит
  • Обнаружение и коррекция ошибок
  • Множественный доступ к каналу связи:
    • Адресация
    • Согласованный доступ к каналу

Формирование кадра

[Заголовок][Пакет сетевого уровня][Концевик]

Методы выделения кадров

Указатель количества байт - метод, при котором в начале кадра указывается сколько байт в нем содержится

80482902 - первый байт говорит сколько в кадре

Если первый байт исказится, то следующий кадр будет выделен неправильно

При ошибке вся передача данных будет сорвана - не используется

Вставка байтов (byte stuffing) и битов (bit stuffing) - в начало и в конец

Начало и конец каждого кадра отмечаются специальными последовательностями байтов или бит

Протокол HDLC - ASCII символы:

  • DLE STX – начало кадра
  • DLE ETX – конец кадра
  • Escape последовательность в данных – DLE

Протокол PPP – биты:

  • 01111110 начало и конец кадра
  • В данных после пяти последовательных 1 добавлялся 0

Средства физического уровня

Преамбула (классический Ethernet)

  • Длина 8 байт
  • Первые 7 байт: 10101010
  • Последний байт: 10101011 (ограничитель начала кадра)

Преамбула - 1010101010101010101010101010101010101010101010101010101010101011

Передача неиспользуемых символов избыточного кода (Fast Ethernet)

  • Начало кадра – пара символы J (11000) и K (10001)
  • Конец кадра – символ T (01101)

Обнаружение и исправление ошибок

Обнаружение ошибок

  • Контрольная сумма

Исправление ошибок

  • Коды исправляющие ошибки (с избыточной информацией)
  • Позволяют обнаруживать и исправлять ошибки

Повторная отправка данных

  • Если в кадре обнаружена ошибка, его можно отправить заново
  • Повторная отправка кадра, который не дошел до получателя

Методы повторной отправки

Остановка и ожидание

  • Отправитель посылает кадр и останавливается
  • Получатель отправляет подтверждение
  • Отправитель посылает новый кадр

Скользящее окно

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

Подуровни канального уровня

Подуровень управления логическим каналом (LLC)

  • Отвечает за передачу данных (создание кадров, обработка ошибок и т.д.)
  • Общий для разных технологий

Подуровень управления доступом к среде (MAC):

  • Совместное использование разделяемой среды
  • Адресация
  • Специфичный для разных технологий
  • Не является обязательным

Услуги подуровня LLC

Мультиплексирование - передача данных разных протоколов (IP, ARP, ICMP) на уровень MAC

Управление потоком - предотвращение «затопления» медленного получателя быстрым отправителем

Множественный доступ к каналу

Данные искажаются, если несколько компьютеров передают одновременно

  • Коллизия

Управление доступом:

  • Обеспечение использования канала только одним отправителем

Методы управления доступом:

  • Рандомизированный выбирается один с вероятностью 1/N. (Ethernet, Wi-Fi).
  • На основе правил использования. (Token Ring).

Ethernet

Находится на канальном и физическом уровне.

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

  • Коаксиальный кабель
  • Витая пара
  • Оптоволокно

Канальный уровень Ethernet :

  • Методы доступа и протоколы, одинаковые для любой среды передачи данных
  • В классическом Ethernet смешаны подуровни LLC и MAC

MAC-адреса

Служат для идентификации сетевых интерфейсов узлов сети Ethernet Регламентированы стандартом IEEE 802

  • Длина 6 байт (48 бит)
  • Форма записи – шесть шестнадцатеричных чисел:

    1C-75-08-D2-49-45 1C:75:08:D2:49:45

Типы MAC-адресов:

  • Индивидуальный (unicast) - данные, которые отправляются на этот MAC-адрес, получает только один компьютер.

    1C-75-08-D2-49-45

  • Групповой (multicast, первый бит старшего байта адреса равен 1)

    80-00-A7-F0-00-00

  • Широковещательный (broadcast, все 1) - данные отправляются на все компьютеры

    FF-FF-FF-FF-FF-FF

Уникальность MAC-адресов

В одном сегменте сети не должно быть одинаковых MAC-адресов

  • Одна широковещательная среда Ethernet
  • Один VLAN в коммутируемом Ethernet

Если будет два компьютера с одним MAC-адресом, то один из них не будет работать

  • Какой именно не регламентируется

Способы назначения

Централизованный (по-умолчанию):

  • Адреса назначаются производителем оборудования
  • Правила назначения описываются стандартом IEEE 802

Локальный:

  • Адреса назначаются администратором сети
  • Администратор должен обеспечить уникальность

Индикатор способа назначения - второй бит старшего байта MAC-адреса:

  • 0 – адрес назначен централизованно
  • 1 – адрес назначен локально

При централизованном назначении MAC-адреса должны быть уникальны во всем мире Структура MAC-адреса:

  • Первые 3 байта – уникальный идентификатор организации (OUI), выдаются IEEE производителям оборудования
  • Последние 3 байта – назначает производитель оборудования, который отвечает за уникальность
  • Примеры OUI:
    • 00:00:0C – Cisco (еще 6C:50:4D, 70:81:05 и др.)
    • 00:02:B3 – Intel
    • 00:04:AC – IBM

Формат кадра Ethernet

  • MAC получателя [6 байт]
  • MAC отправителя [6 байт]
  • Тип протокола следующего уровня [0800 – IPv4, 86DD – IPv6, 0806 – ARP] [2 байт]
  • Данные [46-1500 байт]
  • Контрольная сумма[4 байта]

Доступ к среде

Управление доступом к среде

  • Обеспечение использования канала только одним отправителем

Классический Ethernet использует метод доступа к среде CSMA/CD

  • Carrier Sense Multiple Access with Collision Detection
  • Множественный доступ с прослушиванием несущей частоты и распознаванием коллизий

Прослушивание несущей

Компьютеры передают данные только если среда свободна.

Способ определить, свободна ли среда – прослушивание основной гармоники сигнала (несущей частоты).

Обнаружение коллизий

Два компьютера начали передачу одновременно – коллизия.

Обнаружение коллизий:

  • Компьютер передает и принимает сигналы одновременно
  • Если принятый сигнал отличается от переданного – значит возникла коллизия

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

Модель CSMA/CD

Период передачи - передача данных.

Если в среде нет несущей частоты, то компьютер может начинать передачу данных Схема передачи:

  • Преамбула

    Формат преамбулы:

    Длина 8 байт

    • Первые 7 байт: 10101010
    • Последний байт: 10101011 (ограничитель начала кадра)
  • Кадр

    Передача кадра

    После окончания преамбулы компьютер начинает передавать кадр

    Все остальные компьютеры в сети начинают принимать кадр и записывают его в свой буфер

    Первые 6 байт кадра содержат адрес получателя:

    • Компьютер, который узнал свой адрес, продолжает записывать кадр
    • Остальные удаляют кадр из буфера

    Неразборчивый режим (promiscuous mode):

    • Адаптер принимает все кадры в сети, не зависимо от MAC-адреса назначения
  • Межкадровый интервал

    9,6 мкс в классическом Ethernet

    Предотвращение монопольного захвата канала

    Приведение сетевых адаптеров в исходное состояние

Период конкуренции - борьба за монопольное использование конкурентной среды.

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

Длительность паузы - L * 512 битовых интервалов

Битовый интервал – время между появлениями двух последовательных битов данных

  • 0,1 мкс в классическом Ethernet

Экспоненциальный двоичный алгоритм отсрочки. L случайно выбирается из диапазона [0, 2^N-1]

  • N – номер попытки

Диапазоны L:

  • 1 попытка: [0, 1]
  • 2 попытка: [0, 3]
  • 3 попытка: [0, 7]
  • 5 попытка: [0, 31]
  • 10 попытка: [0, 1023]
  • После 10 попыток интервал не увеличивается
  • После 16 попыток передача прекращается

Алгоритм хорошо работает при низкой загрузке

  • В сети мало компьютеров
  • Компьютеры редко передают данные Если нагрузка высокая, то коллизии возникают чаще:
  • Растет число попыток передачи
  • Растет интервал, из которого выбирается L, и длительность пауз
  • Экспоненциально увеличивается задержка

Период простоя - нет никаких данных для передачи.

Время оборота

Время оборота (round trip time, RTT) – время, за которое сигнал успевает дойти от одного конца сети до другого и вернуться назад.

Время оборота должно быть меньше, чем время передачи самого короткого кадра.

  • Сигнал о коллизии может прийти уже после того, как компьютер завершил передачу кадра
  • Компьютер будет считать, что кадр передан, а на самом деле произошла коллизия

Параметры Ethernet подобраны так, чтобы коллизии гарантированно распознавались

  • Минимальная длина данных в кадре 46 байт (если данных меньше, то они дополняются до 46 байт)
  • Максимальная длина сети 2500 м

Концентратор и коммутатор

Классический Ethernet

  • Исторически появился первый (1973 г.)
  • Разделяемая среда, коллизии
  • Метод CSMA/CD
  • Недостатки: плохая масштабируемость, низкая безопасность и др.

Коммутируемый Ethernet

  • Новая усовершенствованная технология (1995 г., Fast Ethernet, IEEE 802.3u)
  • Нет разделяемой среды
  • Нет коллизий
  • Новые устройства – коммутаторы (switch)

Концентратор (hub)

  • Физический уровень
  • Топология – общая шина

Коммутатор (switch)

  • Канальный уровень
  • Полносвязная топология

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

Основные особенности работы коммутаторов:

  1. Таблица коммутации - Соответствие MAC-адресов портам коммутатора.
  2. Алгоритм обратного обучения - Заполнение таблицы коммутации.
  3. Алгоритм прозрачного моста - Передача кадров коммутатором.

Таблица коммутации

  • Соответствие MAC-адресов портам коммутатора
  • Содержит данные о доступности MAC-адресов через порты коммутатора
    Порт коммутатора MAC-адрес

Алгоритм обратного обучения

Заполнение таблицы коммутации по заголовкам отправителям.

Алгоритм прозрачного моста

Передача кадров коммутатором

  • Коммутатор анализирует адрес получателя
  • Если получатель есть в таблицы коммутации, то кадр отправляется только ему.
  • Если получателя нет в таблице коммутации, то кадр отправляется на все порты, кроме отправителя.

VLAN

VLAN (Virtual Local Area Network, Виртуальная локальная сеть) - технология разделения единой сети на несколько логических сетей, изолированных друг от друга.

В модели OSI и TCP/IP технология VLAN находится на канальном уровне и реализуется на коммутаторах.

Преимущества изоляции локальных сетей:

  • Безопасность.
  • Распределение нагрузки.
  • Ограничение широковещательного трафика.

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

Типы VLAN:

  • На основе коммутаторов (нетегированные). Номер VLAN задается в таблице коммутации. Работает только внутри одного коммутатора.
  • Тегированные - номер VLAN передается в кадре Ethernet (стандарт IEEE 802.1Q). Может использоваться в сети с несколькими коммутаторами.
  • MAC получателя [6 байт]
  • MAC отправителя [6 байт]
  • Поле Тип стандартного кадра: 0x8100 – указатель, что кадр с VLAN [2 байт]
  • Тег – содержит номер VLAN [2 байт]
  • Второе поле Тип – код протокола уровня выше [2 байт]
  • Данные [46-1500 байт]
  • Контрольная сумма[4 байта]

STP

Протокол связующего (остовного) дерева (Spanning Tree Protocol, STP) позволяет автоматически отключать дублирующие соединений в Ethernet, чтобы в сети не образовалось кольца и широковещательного шторма.

Протокол STP определен в стандарте IEEE 802.1D.

Преимущества STP:

  • Надежность соединений между коммутаторами.
  • Защита от ошибок конфигурации.

Протокол STP работает в 3 этапа:

  1. Выбор корневого коммутатора
  2. Определение кратчайших путей до корневого коммутатора
  3. Отключение всех остальных соединений

Для реализация STP коммутаторы каждые 2 секунды отправляют управляющие сообщения Bridge Protocol Data Units (BPDU) на групповой адрес STP 01:80:C2:00:00:00.

Расширения протокола STP.

RSTP (Rapid Spanning Tree Protocol):

  • Срабатывает быстрее при подключении оборудования и изменении конфигурации сети
  • Стандарт IEEE 802.1w

STP и VLAN:

  • Multiple Spanning Tree Protocol (MSTP), 802.1s
  • Отдельное связующее дерево для каждого VLAN

Wi-Fi

Wi-Fi – торговая марка, принадлежит компании Wi-Fi Alliance.

Технология Wi-Fi описана в стандартах серии IEEE 802.11, она очень похожа на формат Ethernet.

В модели OSI Wi-Fi находится на канальном уровне.

Wi-Fi может работать в двух режимах:

  • инфраструктурном
  • одноранговом.

Стандарты Wi-Fi

Название Год принятия Скорость Частота
802.11 1997 1 и 2 Мб/с 2,4 ГГц
802.11a 1999 54 Мб/с 5 ГГц
802.11b 1999 11 Мб/с 2,4 ГГц
802.11g 2003 54 Мб/с 2,4 ГГц
802.11n 2009 600 Мб/с / 150 Мб/с одна станция 2,4 и 5 ГГц
802.11ac 2014 6.77 Гб/с / 1.69 Гб/с одна станция 5 ГГц

Wi-Fi использует для передачи данных электромагнитное излучение:

  • 2,4 ГГц – 802.11, 802.11b, 802.11g, 802.11n
  • 5 ГГц – 802.11a, 802.11n, 802.11ac

Современные стандарты Wi-Fi используют метод Orthogonal Frequency Division Multiplexing (OFMD, мультиплексирование с ортогональным частотным разделением). При этом данные передаются параллельно на разных частотах.

В диапазоне 2,4 ГГц используется 14 каналов передачи данных с разной частотой.

Wi-Fi может использовать каналы разной ширины: 20, 40, 80 или 160 МГц.

Wi-Fi позволяет менять скорость при разном качестве сигнала за счет изменения метода модуляции, ширины канала, и времени между передачей отдельных символов (Guard Interval).

Управление доступом к разделяемой среде

Wi-Fi использует для передачи данных разделяемую среду - радиоэфир. В разделяемой среде возможны коллизии. Чтобы их избежать, необходим метод доступа к среде, который бы обеспечивал, что в один момент времени данные передает только один компьютер.

Особенности беспроводной среды:

  • Вероятность ошибки передачи выше, чем в проводной среде
  • Мощность передаваемого сигнала намного выше, чем принимаемого
  • Ограниченный диапазон распространения сигнала – не все компьютеры в сети получают данные (проблема скрытой станции и проблема засвеченной станции).

Так как ошибки при передаче данных возникают часто, то в Wi-Fi на канальном уровне используется подтверждение доставки.

Коллизии в Wi-Fi обнаруживаются по отсутствию подтверждений.

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

Поэтому в Wi-Fi используется метод CSMA/CA - ножественный доступ с прослушиванием несущей частоты с предотвращением коллизий.

Другой метод доступа к среда в Wi-Fi: протокол Multiple Access with Collision Avoidance (MACA). Он позволяет решить проблему скрытой и засвеченной станции. Однако на практике метода CSMA/CA почти всегда достаточно, поэтому поддержка протокола MACA в оборудовании Wi-Fi не обязательна.

В MACA перед передачей данный компьютер отправляет короткое сообщение Request To Send (RTS). Принимающий компьютер в ответ передает сообщение Clear To Send (CTS). После этого отправитель может передавать данные.

Формат кадра Wi-Fi

Wi-Fi использует два формата кадра. При передаче по беспроводной среде на уровне MAC используется формат кадра IEEE 802.11. Однако при поступлении на компьютер на уровне LLC происходит преобразование в формат кадра Ethernet.

Формат кадра IEEE 802.11 сильно отличается от формата Ethernet. Во-первых, в кадре Wi-Fi используется 4 MAC-адреса следующего назначения:

  • Адрес 1 - MAC адрес устройства (точка доступа), которое принимает данные из беспроводной среды (Receiver Address). [6 байт]
  • Адрес 2 - MAC адрес устройства, которое передает данные в беспроводную среду (Transmitter address). [6 байт]
  • Адрес 3 - MAC адрес устройства получателя (Destination Address). [6 байт]
  • Адрес 4 - MAC адрес устройства отправителя (Source Address). [6 байт]

Размер поля данных в Wi-Fi 2304 байта (в Ethernet размер поля данных 1500 байт).

Поле “Управление кадром” содержит большое количество управляющих флагов.

Типы кадров Wi-Fi:

  • Кадры данных (передача данных)
  • Кадры контроля (control frames). Служебные кадры (RTS, CTS, ACK)
  • Кадры управления (management frames). Реализация сервисов Wi-Fi (например, ассоциация с точкой доступа).

Технология IEEE 802.11 Power Saving Mode позволяет экономить питание при работе Wi-Fi.

Фрагментация в Wi-Fi позволяет передавать данные, даже если ошибки возникают очень часто. При этом кадры делятся на отдельные части (фрагменты) и передаются отдельно.

Сервисы Wi-Fi

Наборы сервисов Wi-Fi:

  • Базовый набор сервисов (basic service set).
  • Расширенный набор серсивов (extended service set).

Сервисы Wi-Fi:

  • Ассоциация
  • Аутентификация
  • Передача данных
  • Защита информации (шифрование)
  • Роуминг

Идентификаторы наборов сервисов Wi-Fi:

  • BSSID - идентификатор базового набора сервисов, MAC-адрес точки доступа.
  • SSID - идентификатор набора сервисов в понятном для человека виде, текстовая строка.

Сетевой уровень

Сетевой уровень (network layer) объединяет сети, построенные на основе разных технологий.

  • Ethernet
  • Wi-Fi
  • MPLS
  • ATM, TokenRing, FDDI (устаревшие)

Согласование различий в сетях.

Тип сервиса

  • Кадры из Wi-Fi принимаются с отправкой подтверждения, а в Ethernet отправляются без подтверждений

Адресация:

  • Глобальные адреса, не зависимые от конкретных технологий
  • Методы преобразования глобального адреса в локальный (ARP для TCP/IP)

Широковещание:

  • Пакеты отправляются всем хостам в сети по индивидуальным адресам

Масштабируемость на сетевом уровне

Агрегация адресов:

  • Работа не с отдельными адресами, а с блоками адресов
  • Блок адресов - сеть

Запрет пересылки «мусорных» пакетов:

  • Пакет отбрасывается, если нельзя определить, куда его нужно отправлять

Возможность наличия нескольких путей в сети:

  • Одна из основных причин создания сетей с пакетной коммутацией
  • Допускается несколько активных путей
  • Задача выбора лучшего пути - маршрутизация

Задачи сетевого уровня

  • Объединение сетей (internet working)
  • Маршрутизация
  • Обеспечение качества обслуживания
Оборудование Уровень модели OSI
Физический Концентратор
Канальный Коммутатор, точка доступа
Сетевой Маршрутизатор

Маршрутизация

Маршрутизация (routing) – поиск маршрута доставки пакета между сетями через транзитные узлы – маршрутизаторы

  • Учет изменений в топологии сети
  • Учет загрузки каналов связи и маршрутизаторов

Продвижение (forwarding) – передача пакета внутри маршрутизатора в соответствии с правилами маршрутизации

IP адреса

Локальные и глобальные адреса

Локальные адреса:

  • Адреса в технологии канального уровня

    Пример: MAC адрес в Ethernet, IMEI в 3G

  • Привязаны к конкретной технологии
  • Не могут быть использованы в гетерогенных сетях

Глобальные адреса:

  • Адреса сетевого уровня

    Пример: IP-адреса

  • Не привязаны к технологии
  • Применяются при объединении сетей (Интернет)

IP-адреса - глобальные адреса, используемые в стеке протоколов TCP/IP

Используются для уникальной идентификации компьютеров в составной сети

Широко используются в Интернет

Две версии протокола IP:

  • IPv4 (далее просто IP): адрес 4 байта или 32 бита
  • IPv6: адрес 16 байт

Типы IP-адресов:

  • Индивидуальный (unicast) - если отправлять на этот адрес, то получает только один компьютер
  • Групповой (multicast) - если отправлять на этот адрес, то получают несколько компьютеров в сети
  • Широковещательный (broadcast) - если отправлять на этот адрес, то получают все компьютеры в сети

IP-адреса и IP-сети

Сетевой уровень использует агрегацию адресов:

  • Масштабирование – работа не с отдельными адресами, а с подсетями

Подсеть (IP-сеть, сеть) – множество компьютеров, у которых старшая часть IP-адреса одинаковая:

213.180.193.1

213.180.193.2

213.180.193.3

213.180.193.254

Маршрутизаторы работают с подсетями, а не отдельными компьютерами.

Структура IP-адреса

  • Номер подсети – старшие биты.
  • Номер хоста (компьютера в сети) – младшие биты.

Пример структуры:

IP-адрес: 213.180.193.3

Номер подсети: 213.180.193.0

Номер хоста: 3 (0.0.0.3)

Маска подсети

Маска подсети показывает, где в IP-адресе номер сети, а где хоста.

Структура маски:

  • Длина 32 бита
  • Единицы в позициях, задающих номер сети
  • Нули в позициях, задающих номер хоста

    IP (десятичный): 213.180.193.3

    IP: 11010101.10110100.11000001.00000011

    Маска: 11111111.11111111.11111111.00000000

    Подсеть: 11010101.10110100.11000001.00000000

    Подсеть (десятичный): 213.180.193.0

    subnet = ip & mask

Запись маски подсети

Десятичное представление:

  • IP-адрес: 213.180.193.3
  • Маска подсети: 255.255.255.0
  • Адрес подсети: 213.180.193.0

В виде префикса:

  • 213.180.193.3/24 24 (8 * 3) бита 1, остальные 0
  • Адрес подсети: 213.180.193.0

Маска подсети не обязательно должна заканчиваться на границе октетов

Широковещательный адрес

Формат широковещательного адреса:

  • В номере хоста все единицы

    IP-адрес: 213.180.193.3 /24

    Широковещательный адрес: 213.180.193.255

В IP широковещательные пакеты передаются только внутри подсети (ограниченное широковещание).

  • Маршрутизаторы не пересылают широковещательные пакеты.
  • Нет возможности указать в адресе «все компьютеры в Интернет» (пакет «Godzillagram»).

Исчерпание IP-адресов

Длина IPv4 адреса 32 бита

  • Максимум 4 294 967 296 (232) IP-адресов

Пути решения:

  • IPv6, длина адреса 16 байт
  • Network Address Translation (NAT)

Специальные IP-адреса

В номере хоста нельзя использовать только битовые 0 или 1

Битовые 0 в номере хоста:

  • Адрес подсети: 213.180.193.0

Битовые 1 в номере хоста:

  • Широковещательный адрес: 213.180.193.255

Договоренность (не обязательная):

  • Хост с номером 1 – маршрутизатор по умолчанию (шлюз): 213.180.193.1

Специальные IP-адреса

0.0.0.0 – текущий хост (подсеть)

255.255.255.255 – все хосты в текущей подсети (ограниченный широковещательный адрес)

127.0.0.0 /8 – обратная петля (loopback)

  • Сеть для тестирования
  • Данные не передаются в сеть, а приходят обратно
  • 127.0.0.1 – localhost (текущий компьютер)

169.254.0.0 /16 – Link-local адреса

  • Назначаются ОС хоста автоматически, если недоступна другая IP конфигурация
  • Могут использоваться в пределах подсети

Распределение IP-адресов

IP-адреса должны быть уникальны во всем мире

IANA (Internet Assigned Numbers Authority) – специальная организация, ответственная за распределение IP-адресов

Региональные регистраторы (RIR – Regional Internet Register) IANA

Частные IP-адреса

Зарезервированные диапазоны адресов (RFC 1918):

  • 10.0.0.0 /8
  • 172.16.0.0 /12
  • 192.168.0.0 /16

Не маршрутизируются в Интернет.

Могут использоваться внутри организации без обращения в IANA.

Подключение к Интернет с использованием технологии NAT (Network Address Translation).

Протокол IP

Internet Protocol – межсетевой протокол, находящийся на сетевом уровне.

  • internet working – объединение сетей.
  • internet – объединенная сеть / subnet - подсеть.
  • Internet – название самой крупной объединенной сети.

Передача данных:

  • без гарантии доставки.
  • без сохранения порядка следования сообщений.

Протокол IP использует передачу данных без установки соединения.

Задачи IP.

  • Объединение сетей.
  • Маршрутизация.
  • Качество обслуживания.

Формат заголовка IP-пакета

Номер версии [4 bit]

IPv4 [0100]

  • Длина IP-адреса 4 байта
  • Нехватка IP-адресов
  • Используется сейчас

IPv6

  • Длина IP-адреса 16 байт
  • Вводится в эксплуатацию

Длина заголовка [4 bit]

Длина всех заголовков IP в байтах.

Тип сервиса [8 bit]

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

  • 00 - перегрузки нет.
  • 11 - перегрузка есть.

Общая длина [16 bit]

Общая длина пакета, включая заголовок и данные.

  • Измеряется в байтах.
  • Максимальное значение – 65535 байт.
  • На практике длина выбирается с учетом размера кадра канального уровня

    1500 байт для Ethernet

Фрагментация

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

Различия в сетях.

  • Максимальный размер передаваемых данных (Maximum Transmission Unit, MTU).
  • Ethernet – 1500 байт.
  • Token Ring – 4464 байта.
  • FDDI – 4352 байта.

Фрагментация – разделение пакета на несколько частей (фрагментов) для передачи по сети с маленьким MTU.

Идентификатор пакета [16 bit]

Идентификатор пакета, который был разбит на несколько.

Флаги [3 bit]

Размер поля флаги – 3 бита.

Значения полей.

  • Первый бит зарезервирован и не используется.
  • DF (Don’t Fragment) – не фрагментировать.
  • MF (More Fragments) – есть еще фрагменты.

Флаг DF (Don’t Fragment) запрещает фрагментацию пакета.

Если MTU сети меньше размера пакета.

  • Маршрутизатор отбрасывает пакет.
  • Получателю отправляется ICMP сообщение Тип 3, Код 4 (Destination Unreachable, Fragmentation required, and DF flag set).

Смещение фрагмента [13 bit]

Смещение фрагмента в поле данных исходного пакета.

  • Измеряется в 8-байтовых блоках.

Пример:

Исходный пакет 4000 байт (заголовок 20 байт, данные 3980 байт)

MTU целевой сети 1500 байт (заголовок 20 байт, данные 1480 байт)

Три фрагмента данные: 0-1479, 1480-2959, 2960-3980

Смещение фрагментов: 0, 185 (8 * 185 = 1480), 370

Время жизни [8 bit]

Время жизни (TTL, Time To Live) – максимальное время, в течение которого пакет может перемещаться по сети.

Введено для предотвращения «бесконечного» продвижения пакетов.

Единицы измерения:

  • Секунды (не используется).
  • Прохождение через маршрутизатор (hop) - на каждом маршрутизаторе уменьшает на единицу.

Тип протокола [8 bit]

Указывается тип протокола следующего (вышестоящего) уровня.

Предназначено для реализации функции мультиплексирования/демультиплексирования

Код протокола, данные которого передаются:

  • TCP – 6
  • UDP – 17
  • ICMP – 1

Контрольная сумма [16 bit]

Используется для праверки правильности пакета.

Если контрольная сумма не сходится, то пакет отбрасывается.

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

IP адрес отправителя [32 bit]

IP адрес отправителя

IP адрес получателя [32 bit]

IP адрес получателя

Опции (необязательные заголовки)

Заголовок IP-пакета может включать дополнительные поля:

  • Записать маршрут
  • Маршрут отправителя
  • Жесткая маршрутизация
  • Свободная маршрутизация
  • Временные метки

Заполнение:

  • Опции могут иметь разный размер
  • Длина заголовка IP-пакета должна быть кратна 32 битам
  • Для выравнивания до 32 бит поле опций дополняется нулями

Маршрутизация

Маршрутизация – поиск доставки пакета между сетями через транзитные узлы – маршрутизаторы.

Этапы маршрутизации:

  • Изучение сети:
    • Какие сети есть
    • Какие маршрутизаторы есть
  • Продвижение пакетов на маршрутизаторе (forwarding)

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

Post main image
  • Адрес (Network Destination) - адрес сети или узла назначения, либо указание, что маршрут является маршрутом по умолчанию.
  • Маска сети назначения (Netmask)
  • Шлюз (Gateway) - обозначает адрес маршрутизатора в сети, на который необходимо отправить пакет, следующий до указанного адреса назначения. Адрес, с которого можно попасть в сеть, если текущий маршрутизатор напрямую подключен к сети, то указывается 0.0.0.0.
  • Интерфейс (Interface), через который доступен шлюз (в зависимости от системы, это может быть порядковый номер, GUID или символьное имя устройства; интерфейс может быть отличен от шлюза, если шлюз доступен через дополнительное сетевое устройство, например, сетевую карту). Собственный IP адрес маршрутизатора с которого будет отправлен пакет.
  • Метрику (Metric) — числовой показатель, задающий предпочтительность маршрута. Чем меньше число, тем более предпочтителен маршрут.

Записи в таблице маршрутизации

Статические

  • Конфигурация интерфейсов
  • Вручную прописанные маршруты к сетям

Динамические

  • Конфигурируются автоматически
  • Протоколы маршрутизации RIP, OSPF, BGP и др.

Маршрут по умолчанию

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

Маршрутизатор по умолчанию (шлюз, default router, gateway) – маршрутизатор, на который отправляются пакеты для неизвестных сетей.

Условное обозначение:

  • 0.0.0.0, маска 0.0.0.0
  • default
Destination Gateway Genmask Metric Iface
0.0.0.0 172.19.132.64 0.0.0.0 0 wlan0

Длина маски подсети

Маршрутизатор принял пакет с адресом получателя 192.168.100.23.

В таблице маршрутизации две записи:

  • 192.168.100.0/24
  • 192.168.0.0/16

Выбирается маршрут с более длинной маской.

Правила маршрутизации:

  • Поиск маршрута к хосту (маска /32)
  • Поиск маршрута к сети (с маской максимальной длины)
  • Маршрут по умолчанию (маска /0, подходит все)

Таблица маршрутизации есть не только у маршрутизаторов, но и у всех хостов в сети.

Содержание таблицы маршрутизации хоста:

  • Присоединенная сеть
  • Маршрутизатор по умолчанию (шлюз, gateway)
  • (Не обязательно) маршруты к знакомым сетям

Просмотр таблицы маршрутизации:

  • route print (Windows)
  • route (Linux)
  • ip route (Linux)

Управляющие протоколы сетевого уровня

Протокол DHCP

DHCP (Dynamic Host Configuration Protocol) – протокол динамической конфигурации хостов.

Для работы в сети компьютеру нужен IP-адрес.

Методы назначения IP-адресов:

  • Вручную
  • Автоматически

Протокол DHCP позволяет автоматически назначать компьютерам в сети IP-адреса.

  • Требует создания инфраструктуры (DHCP сервер).
  • IP-адреса хостов могут меняться.

Клиент DHCP

  • Компьютер, который получает IP-адрес автоматически

Сервер DHCP

  • Компьютер, который обеспечивает назначение IP- адресов
  • Ведет таблицу выделенных IP-адресов, чтобы избежать дублирования

Клиент и сервер обмениваются сообщениями DHCP в режиме запрос-ответ.

Сообщение DHCP Назначение Замечания
DISCOVER Поиск DHCP сервера Отправляется на широковещательный адрес Ethernet
OFFER Предложение IP-адреса DHCP сервером клиенту Включает IP адрес
REQUEST Запрос IP-адреса DHCP клиентом  
ACK Подтверждение назначения IP-адреса DHCP клиенту  
NACK Запрет использования запрошенного DHCP клиентом IP-адреса -
RELEASE Освобождение IP-адреса -
INFORM Запрос и передача дополнительной конфигурационной информации -

Назначение адресов в DHCP:

  • Фиксированный - выделенный IP-адрес для каждого MAC-адреса
  • Динамический - выделение компьютеру любого IP-адреса из пула адресов

Пул адресов

  • Список (диапазон) IP-адресов, которые назначает DHCP сервер
  • DHCP сервер следит за уникальностью распределения адресов

Время аренды в DHCP

IP-адрес выделяется DHCP клиенту на ограниченное время

  • Время аренды (lease time)
  • Типичное время: 1 час, 1 сутки, 3 суток и т.п.

После окончания времени аренды IP-адрес освобождается DHCP клиент может продлить использование IP-адреса после окончания аренды.

  • Сокращенная процедура получения IP-адреса. (REQUEST -> ACK)

Прекращение использования адреса

Окончание использования IP-адреса.

  • Сообщение DHCP Release.
  • Сервер может назначить освободившийся адрес другому клиента

Сообщение DHCP Release автоматически отправляется современными ОС при корректном выключении.

Отсутствие сообщения DHCP Release:

  • До окончания срока аренды DHCP сервер считает IP-адрес занятым
  • После окончания аренды адрес освобождается

Если маршрутизатор умеет работать в режиме DHCP Relay, то он может передать данные протокола DHCP в другую подсеть.

Конфигурационная информация

Для работы в сети нужен не только IP-адрес.

Конфигурационные параметры передаются DHCP в качестве опций DHCP предоставляет дополнительно:

  • Маску подсети
  • Маршрутизатор по умолчанию (шлюз)
  • Адреса DNS-серверов
  • Адреса серверов времени
  • Маршруты
  • и другую информацию

Протокол ARP

ARP (Address Resolution Protocol) – протокол разрешения адресов.

Адреса компьютера в сети:

  • Сетевой уровень: IP-адрес (192.168.10.43)
  • Канальный уровень: MAC-адрес (54:BE:F7:88:15:47)

Протокол ARP позволяет определить по IP-адресу компьютера его MAC-адрес.

На практике сетевое взаимодействие выполняется с использованием IP-адресов:

ping 192.168.10.43

ssh server.university.org

Но данные передаются с помощью технологии канального уровня: Ethernet, Wi-Fi, MAC-адреса. Следовательно нам необходимы средства определения MAC-адреса компьютера по его IP-адресу.

ARP работает в режиме запрос-ответ.

Запрос:

Поле Значение
Тип сети 1
Тип протокола 2048
Длина локального адреса 6
Длина глобального адреса 4
Операция 1
Локальный адрес отправителя 1C:75:08:D2:49:45
Глобальный адрес отправителя 192.168.10.15
Локальный адрес получателя 00:00:00:00:00:00
Глобальный адрес получателя 192.168.10.43

Ответ:

Поле Значение
Тип сети 1
Тип протокола 2048
Длина локального адреса 6
Длина глобального адреса 4
Операция 2
Локальный адрес отправителя 54:BE:F7:88:15:47
Глобальный адрес отправителя 192.168.10.43
Локальный адрес получателя 1C:75:08:D2:49:45
Глобальный адрес получателя 192.168.10.15

ARP не проходит через маршрутизаторы.

Компьютеры в сети записывают информацию о найденных MAC-адресах в кэш.

  • Нет необходимости запрашивать MAC-адрес при каждом отправлении.

ARP-таблица хранит данные о соответствии MAC и IP-адресов arp -a.

IP-aдрес MAC-адрес Тип
172.16.10.253 00:1С:С5:34:В3:01 Динамический
172.16.10.88 1C:75:08:D2:49:45 Статический

Оптимизации ARP

Извлечение информации из ARP-запроса.

  • Запросы отправляются на широковещательный адрес.
  • Все компьютеры извлекают и запоминают IP и MAC-адреса отправителя запроса.

Добровольный ARP-запрос (Gratuitous ARP):

  • Запрос собственного IP-адреса.
  • Используется при назначении нового IP-адреса для быстрого оповещения всех компьютеров в сети.
  • Предотвращение использования одинаковых IP-адресов в сети

Протокол ICMP

ICMP (Internet Control Message Protocol) – протокол межсетевых управляющих сообщений.

Так как протокол IP предоставляет сервис передачи данных без гарантии доставки, то в случае ошибки при передаче пакета никаких действий не предпринимается.

Функции ICMP.

  • Оповещение об ошибках на сетевом уровне.
  • Тестирование работоспособности сети.

Сообщения об ошибках ICMP не обязательно должны обрабатываться.

Заголовок ICMP.

  • Тип сообщения - 1 байт
Тип Назначение сообщения
0 Эхо-ответ
3 Узел назначения недостижим
5 Перенаправления маршрута
8 Эхо-запрос
9 Сообщение о маршрутизаторе
10 Запрос сообщения о маршрутизаторе
11 Истечение времени жизни пакета
12 Проблемы с параметрами
13 Запрос отметки времени
14 Ответ отметки времени
  • Код сообщения - 1 байт
  • Контрольная сумма - 2 байта
  • Зависит от типа и кода сообщения - 4 байта

Сообщения об ошибках в работе сети:

  • Получатель недоступен.
  • Закончилось время жизни пакета (TTL).
  • Запрещено фрагментировать пакет.

Тестирование работы сети:

  • ping (проверка доступности получателя).
    • Проверка доступности компьютера в сети
    • Эхо-протокол ICMP:
      • Эхо-запрос ICMP (Тип = 8, Код = 0)
      • Эхо-ответ ICMP (Тип = 0, Код = 0)
  • traceroute.
    • Определяет маршрут от отправителя к получателю (делает серию запроса с ttl=1 постепенно увеличивая значение).
    • Находит адреса всех маршрутизаторов, через которые проходит пакет.

Транспортный уровень

Задачи транспортного уровня:

  • Передача данных между процессами на хостах.
  • Адресация - информация о том, какому процессу принадлежит пакет.
  • Предоставление нужного уровня надежности передачи данных, не зависимого от надежности сети.

Адресация. Порты

Адрес на транспортном уровне: число от 1 до 65535.

Адрес называется портом.

Каждое сетевое приложение на хосте имеет свой порт.

Номера портов у приложений не повторяются.

Форма записи: 192.168.0.1:80.

Типы портов

Хорошо известные порты: 1-1024

  • 80 – HTTP (Web)
  • 25 – SMTP (Электронная почта)
  • 53 – DNS
  • 67,68 – DHCP
  • Использовать может только root/Администратор

Зарегистрированные порты: 1025-49151

  • Регистрация в Internet Assigned Numbers Authority (IANA)

Динамические порты: 49151-65535

  • Автоматически назначаются операционной системой сетевым приложениям

    Например браузер имеет порт

Надежность на транспортном уровне

Транспортный уровень может обеспечить надежность передачи данных выше, чем у лежащей в его основе сети.

  • Эффективно на практике

Гарантия доставки данных:

  • Подтверждение получения.
  • Повторная отправка не подтвержденных данных.

Гарантия порядка следования сообщений:

  • Нумерация сообщений.

Протоколы:

  • TCP
  • UDP

Интерфейс:

  • Сокеты

UDP

User Datagram Protocol (UDP) — протокол дейтаграмм пользователя.

Сообщение UDP называется дейтаграмма.

Аналогия с телеграммой

Особенности UDP:

  • Нет соединения.
  • Нет гарантии доставки данных.
  • Нет гарантии сохранения порядка сообщений.

Надежность доставки по сравнению с IP не повышается.

Формат заголовка UDP:

  • Порт отправителя [16 bit].
  • Порт получателя [16 bit].
  • Длина UDP [16 bit].
    • Минимум 8 байт (только заголовок).
    • Максимум 65 515 байт (максимальная длина данных IP-пакета).
  • Контрольная сумма UDP [16 bit].

Преимущество UDP – скорость работы:

  • Нет накладных расходов на установку соединения.

Надежность:

  • В современных сетях ошибки происходят редко.
  • Ошибку может обработать приложение.

Область применения:

  • Клиент-сервер.
  • Короткие запросы-ответы.

TCP

Transmission Control Protocol (TCP) – протокол управления передачей.

Сервис TCP.

  • Надежная передача потока байт (reliable byte stream).

Гарантии TCP:

  • Доставка данных
  • Сохранения порядка следования сообщений

От приложения TCP получает поток байт, который может быть очень большим.

Поток разбивается на отдельные части – сегменты.

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

  • Получатель собирает сегменты и передает принимающему приложению поток байт

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

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

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

Механизм скользящего окна.

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

Тип подтверждения

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

Выборочное подтверждение (Selective Acknowledgment, SACK):

  • Подтверждение диапазонов принятых байт
  • Эффективно при большом размере окна
  • Дополнительное поле заголовка TCP (параметр)

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

  • Сегменты приходят в неправильном порядке.
  • Сегменты дублируются.

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

Перед отправкой данных по TCP необходимо установить соединение. Задачи соединения:

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

Процесс передачи данных в TCP:

  • Установка соединения - Отправитель посылает сообщение SYN + номер байта (выбирается по сложному алгоритму можно считать неким uniqid1). - Получатель отвечает сообщением SYN + номер следующего ожидаемого байта (uniqid2) + ACK и uniqid1++. - Отправитель посылает сообщение uniqid1++ + ACK + uniqid2++. - Соединение установлено.
  • Передача данных.
  • Разрыв соединения.
    • Соединение в TCP дуплексное:
      • Данные могут передаваться в обе стороны.
    • Схема разрыва соединения:
      • Одновременное (обе стороны разорвали соединение).
      • Одностороннее (одна сторона прекращает передавать данные, но может принимать).
    • Варианты разрыва соединения:
      • Одностороннее закрытие (FIN).
        • Отправитель посылает сообщение FIN.
        • Получатель отвечает сообщение ACK.
        • Получатель по-прежнему может передавать данные;
        • Отправитель повторно посылает сообщение FIN.
        • Получатель повторно сообщение ACK.
      • Разрыв из-за критической ситуации (RST).
        • Отправитель посылает сообщение RST.

После завершения передачи данных соединение TCP разрывается.

Формат заголовка

Порт отправителя [16 bit]

Порт получателя [16 bit]

Порядковый номер - номер первого байта в сегменте [32 bit]

Номер подтверждения - номер следующего ожидаемого байта [32 bit]

Длина заголовка [5 bit]

Зарезервированные биты [3 bit]

NS (ECN-nonce concealment protection) [1 bit] – Защита от случайного или злонамеренного изменения флагов ECN

CWR (Congestion Window Reduced) [1 bit] – Устанавливается отправителем для подтверждения получения сигнала о перегрузке

ECE (ECN-Echo) [1 bit] – Устанавливается получателем при получении сигнала о перегрузке от маршрутизатора

URG - указывает, что в сегменте содержатся срочные данные, которые нужно передать приложению (не используется) [1 bit]

АCK - флаг подтверждения (используется с полем номер подтверждения) [1 bit]

  • PSH - указывает, что весь сегмент нужно передать приложению (не используется) [1 bit]
  • RST - разрыв соединения [1 bit]
  • SYN - установка соединения [1 bit]
  • FIN - разрыв соединения [1 bit]
  • Размер окна [16 bit]
  • Контрольная сумма [16 bit]
  • Указатель на срочные данные (не используется) [16 bit]
  • Параметры (не обязательно) [32 bit]
    • Максимальный размер сегмента (Maximum Segment Size, MSS)
    • Масштаб окна - позволяет увеличить размер окна до 1 ГБ, что эффективно для быстрых каналов
    • Выборочное подтверждение (Selective Acknowledgment, SACK) – подтверждение диапазонов принятых байт
    • Метки времени
  • Данные (не обязательно) [32 bit]

Управление потоком

В сети могут быть устройства разной производительности.

Управление потоком (flow control): предотвращение «затопления» медленного получателя быстрым отправителем.

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

Управление перегрузкой в TCP

Коллапс перегрузки в Интернет (congestion collapse)

  • Произошел в 1986 г. (теоретически предсказан в 1984)
  • Каналы связи загружены полностью
  • Скорость передачи данных между хостами падала на порядок

Решение

  • Учет загрузки сети при определении размера окна
  • Традиционный подход: фиксированное окно 8 сегментов
  • Предложенный подход: размер окна динамически меняется в зависимости от нагрузки на сеть.
  • Механизм реализации: окно перегрузки

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

Управление скоростью передачи в TCP.

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

Большой размер окна.

  • Сегментов в сеть отправляется слишком много, происходит перегрузка и маршрутизаторы отбрасывают пакеты.
  • Низкая скорость передачи данных.

Необходим способ определения оптимального размера окна.

AIMD

Additive increase/multiplicative decrease (Аддитивное увеличение, мультипликативное уменьшение)

  • Метод, который используется в TCP для определения размера окна перегрузки

При каждом подтверждении прибавляем к размеру окна некоторое значение a если перегрузки не было. Если же перегрузка произошла то размера окна умножаем на b.

Размер окна 4 сегмента - произошла перегрузка

Посылаем 4 * 1/2 = 2 сегмента

Перегрузки не произошло

Посылаем 2 + 1 = 3 сегмента

….

Типовые параметры:

  • a – максимальный размер сегмента (MSS).
  • b – 1/2.

Сигнал о перегрузке

  • Потеря сегмента. Проблемы сигнала «потеря сегмента»
    • TCP создает перегрузку
      • Размер окна постоянно увеличивается
      • Окно начинает уменьшаться только после того, как перегрузка произошла
    • Глобальная синхронизация TCP (TCP global synchronization)
      • Место в буфере маршрутизатора заканчивается, он отбрасывает все новые сегменты
      • Отправители получают сигнал о перегрузке и уменьшают размер окна
      • Передача данных начинается всеми отправителями почти одновременно
  • Задержка сегмента. Проблемы сигнала «задержка сегмента»
    • Надежность ниже, чем у задержки сегмента
    • «Несправедливость» на загруженных каналах
      • Размер окна уменьшается при задержке сегмента, а другие отправители уменьшают только при потерях сегмента
    • Решение
      • Совместное использование сигналов задержка и потеря сегментов
      • Пример: Compound TCP компании Microsoft
  • Сигнал от маршрутизатора.
    • Random Early Detection
    • Explicit Congestion Notification
      • Маршрутизатор устанавливает флаги перегрузки в заголовках IP. А получатель устанавливает в заголовок TCP и отдает ответ.

Проблема AIMD – медленный (линейный) рост размера окна перегрузки.

  • Приемлемо на медленных каналах.
  • Неприемлемо на быстрых надежных каналах.

Медленный старт - альтернативный метод управления размером окна перегрузки:

  • Первоначально размер окна перегрузки устанавливается маленьким (1 или 4 сегмента).
  • На каждое полученное подтверждение отправляется 2 сегмента.
  • Экспоненциальный рост размера окна.
  • После сигнала о перегрузке начинаем с начала.

    Размер окна 4 сегмента - перегрузки не произошло (ack=1)

    Посылаем 4 * 1 = 4 сегмента

    Перегрузки не произошло (ack=2)

    Посылаем 4 * ack=2 = 8 сегмента

    ….

В TCP используется комбинация AIMD и медленного старта.

  • Сначала используется медленный старт.
  • Как только размер окна достиг некоторого константного значения (порог медленного старта), включается механизм AIMD.

Порог медленного старта рассчитывается так:

  • Используется медленный старт до наступления перегрузки
  • Максимально значение размера окна делится пополам.

Интерфейс сокетов

Сокеты впервые появились в ОС Berkeley UNIX 4.2 BSD (1983 г.).

  • Сокет в UNIX – файл специального вида.
  • Все, что записывается в файл, передается по сети.
  • Передача данных по сети скрыта от программиста.

Сокеты – де-факто стандарт интерфейсов для транспортной подсистемы.

Различные варианты сокетов реализованы в разных ОС и языках программирования.

Операции сокетов Беркли.

Операция Группа Назначение
Socket Создание советов Создать новый сокет
Bind Создание советов Связать сокет с IP-адресом и портом
Listen Создание советов Объявить о желании принимать соединения
Accept Установка соединения Принять запрос на установку соединения
Connect Установка соединения Установить соединение
Send Передача данных Отправить данные по сети
Receive Передача данных Получить данные из сети
Close Закрытие соединения Закрыть соединение

Интерфейс сокетов использует клиент-серверную модель.

Post main image
  1. Создается сокет командой socket (будет создан файл специального типа).
  2. Вызывается метод bind, который связывает сокет с адресом и портом.
  3. Вызывается метод listen, который говорит, что чокет готов принимать соединения по сети. Здесь можно указать размер очереди на соединение.
  4. Вызывается accept, сервер переходит в режим ожидания соединений.
  5. Клиент вызывает socket.
  6. Клиент вызывает connect с IР-адресом и портом для соединения.
  7. Отправляется запрос на соединение.
  8. Сервер создает копию сокета.
  9. Передача данных и соединение происходит с копией сокета.
  10. Клиент передает порцию данных с помощью метода send.
  11. Сервер принимает данные с помощью метода receive.
  12. Клиент вызывает close, происходит разрыв соединения.

NAT

NAT (Network Address Translation) – трансляция сетевых адресов.

Технология преобразования IP-адресов внутренней (частной) сети в IP-адреса внешней сети (Интернет).

Цель создания – преодоление нехватки адресов IPv4.

Внешние IP-адреса.

  • Применяются в сети Интернет
  • Должны быть уникальными
  • Распределяются ICANN
  • Адресов IPv4 не хватает для всех устройств в Интернет (количество адресов IPv4 примерно 4 млрд.)

Внутренние IP-адреса.

  • Диапазон частных сетей (RFC 1918): 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.
  • Не маршрутизируются в Интернет.
  • Могут использоваться без обращения в ICANN
  • Допускается использование одинаковых адресов в разных сетях (т.к. они не будут видны в Интернет)

NAT работает с помощью устройства NAT,

Таблица NAT.

Преобразование выполняется с помощью таблицы NAT.

Использует комбинацию IP-адрес + порт

Внутренний IP Внутренний порт Внешний IP Внешний порт
192.168.1.2 50300 184.86.48.128 49127
192.168.1.3 52001 184.86.48.128 49128
192.168.1.2 49238 184.86.48.128 49129

Преимущества и недостатки NAT.

Преимущества NAT:

  • Позволяет преодолеть нехватку адресов IPv4
  • Легко развернуть и использовать
  • Скрывает структуру сети от внешнего мира

Недостатки NAT:

  • Нарушение фундаментального принципа построения IP-сетей: каждый компьютер может соединиться с любым другим
  • Нет возможности подключиться к компьютерам во внутренней сети из внешнего мира
  • Плохо работают протоколы не устанавливающие соединения
  • Некоторые прикладные протоколы работают неправильно (FTP)
  • Нет единого стандарта NAT, много разных вариантов

Решение проблем с NAT.

Фиксированное отображение IP-адресов:

  • Внутренний IP <-> Внешний IP.
  • Требуется несколько внешних IP-адресов.

Фиксированное отображение портов:

  • Порт 80 -> Внутренний адрес Web-сервера и порт 80.
  • Порт 25 -> Внутренний адрес почтового сервера и порт 25.
  • Порт 21 -> Внутренний адрес FTP сервера и порт 21.

Технология NAT Traversal:

  • Позволяет устанавливать соединение с компьютерами во внутренней сети.
  • Используется VoIP приложениями (Skype).
  • RFC 3489 и другие варианты.

Транспортный уровень

Задачи транспортного уровня

  • Передача данных между процессами на хостах
  • Адресация
  • Предоставление нужного уровня надежности передачи данных, не зависимого от надежности сети

Функции уровня представления.

  • Для защиты передаваемых по сети данных часто используется шифрование:
  • Secure Sockets Layer
  • Transport Layer Security

Протоколы, которые используют TSL/SSL:

  • HTTPS, порт 443
  • IMAPS, порт 993
  • SMTPS, порт 465
  • FTPS

Функции сеансового уровня.

Сеанс (сессия) – это набор связанных между собой сетевых взаимодействий, направленных на решение одной задачи.

Загрузка Web-страницы:

  • Загрузка теста страницы (.html)
  • Загрузка стилевого файла (.css)
  • Загрузка изображений

Подходы к загрузке Web-страницы:

  • Для каждого элемента создается отдельное соединение (HTTP 1.0)
  • Загрузка всех элементов через одно соединение TCP (HTTP keep-alive)

DNS

Система DNS позволяет преобразовывать имена компьютеров в IP-адреса.

www.yandex.ru -> 77.88.55.66

Преимущества DNS.

  • Понятные человеку имена.
  • Возможность менять сетевую инфраструктуру.

Файл содержит имена компьютеров их адреса

  • Linux/Unix: /etc/hosts
  • Windows: C:\Windows\System32\drivers\etc\hosts

102.54.94.97 server 38.25.63.10 my-client

Недостатки

  • Быстро увеличивается размер
  • Сложно вносить изменения
  • Возможны конфликты имен

Особенности DNS

Распределенная система.

  • Нет единого сервера, на котором описываются имена хостов.

Делегирование ответственности.

  • Пространство имен разделено на отдельные части – домены.
  • За каждый домен отвечает отдельная организация.

Надежность.

  • Дублирование серверов DNS.

Распределением доменных имен занимаются регистраторы.

Post main image

Регистратор корневого домена один.

  • Internet Corporation for Assigned Names and Numbers (ICAN).

Регистраторы зон первого уровня:

  • Необходима аккредитация в ICANN.
  • Один или несколько регистраторов для каждой зоны.
  • Регистрируют домены второго уровня.

Режимы работы DNS

Итеративный

  • Если сервер отвечает за данную доменную зону – он возвращает ответ
  • Если не отвечает, то возвращает адрес DNS-сервера, у которого есть более точная информация

Рекурсивный

  • Сервер сам выполняет запросы к другим серверам DNS, чтобы найти нужный адрес

Сервер разрешения имен DNS

Предоставляется провайдером/организацией

  • Компьютер получает адрес локального сервера DNS по DHCP

Открытый сервер

  • Google: 8.8.8.8 и 8.8.4.4
  • Яндекс: 77.88.8.8 и 77.88.8.7 (с блокировкой порно и эротики)

Типы ответов DNS

  • Авторитетный (authoritative, “заслуживающий доверия”)
    • Ответ от сервера, обслуживающего доменную зону
    • Получен из файлов на диске сервера
  • Неавторитетный (non-authoritative, “не заслуживающий доверия”)
    • Ответ от сервера, который не обслуживает доменную зону
    • Получен из кэша, данные могли устареть

Протокол DNS.

  • Модель клиент-сервер.
  • Запрос-ответ.
  • DNS использует протокол UDP (Номер порта 53).

Используются утилиты host и dig.

Пакет DNS

Заголовок:

  • Идентификатор запроса [2 bytes]
  • Флаги [2 bytes]
    • QR – запрос (0) или ответ (1)
    • OPCODE (4 бита) – тип запроса, 0 – стандартный запрос
    • AA – авторитетный ответ (1) или нет (0)
    • TC – пакет был обрезан (1) или не был (0)
    • RD – запрос на рекурсивный режим
    • RA – рекурсивный режим доступен
    • Z – зарезервировано
    • is auth – @todo
    • not authed – @todo
    • RCODE (4 бита) – статус, 0 – успешно, другие коды - ошибка
  • Количество вопросов [2 bytes]
  • Количество ответов [2 bytes]
  • Количество авторитетных ответов [2 bytes]
  • Количество дополнительных ответов [2 bytes]

Символ EOT 04.

Запросы DNS

  • Имя
  • Тип записи
  • Класс записи - сейчас доступно только 1 - IN Internet

www.yandex.ru 1 1

Ответы DNS

  • Имя
  • Тип записи
  • Класс записи
  • Время жизни (TTL)
  • Длина данных
  • Данные

www.yandex.ru 1 1 90 4 77.88.55.66

Что еще может делать DNS?

  • Определять для доменного имени адреса IPv4 и IPv6
  • Задавать несколько доменных имен для одного IP-адреса
  • Находить адрес почтового сервера для домена
  • Определять IP-адрес и порт некоторых сетевых сервисов
  • Задавать адрес DNS-серверов для доменной зоны
  • Определять по IP-адресу доменное имя

Тип записи DNS

Каждая DNS запись (Resource Record, RR) имеет:

  • Тип записи – для чего предназначена запись
  • Класс записи – в каких сетях используется (IN – Интернет)

Типы записей для IP-адресов

  • A – IPv4 адрес компьютера
  • AAAA – IPv6 адрес компьютера

    e.ns.apple.com. 78809 IN AAAA 2001:500:90:1::129

    a.ns.apple.com. 79447 IN A 17.253.200.1

DNS псевдонимы

Запись типа CNAME (Canonical Name Record/каноническая запись имени)

  • Определяет псевдоним для другого доменного имени

    ysa-static.passport.yandex.ru. 152 IN CNAME ysa-static.passport.yandex.net.

Альтернативный способ - задать несколько A записей для одного IP-адреса.

Нельзя создавать CNAME от CNAME.

Адреса почтового сервера

Запись типа MX (Mail eXchange):

  • MX Приоритет адрес

    mail.ru. 539 IN MX 10 mxs.mail.ru.

Адреса сетевых сервисов

Для некоторых сервисов можно задавать не только IP-адреса, но и порты

  • Jabber
  • CIP
  • Kerberos

Запись типа SRV (Service record):

  • _сервис._протокол.имя. -> приоритет вес порт имя
  • _xmpp-server._tcp.example.com. -> 0 5 5269 xmpp.example.com
  • _xmpp-server._tcp.example.com. -> 20 0 5269 backup_xmpp.example.com

    mail.ru. 141 IN SOA ns1.mail.ru. hostmaster.mail.ru. 3302735406 900 900 604800 60

Запись типа NS (Name Server)

  • Указывает адреса DNS-серверов, отвечающих за зону.

    mail.ru. 456 IN NS ns2.mail.ru.

Вышестоящий домен использует «приклеенные» A-записи, чтобы определить адреса серверов в NS-записях.

Определение имени по IP-адресу

Типы DNS-зон

  • Прямая – определение IP-адреса по доменному имени
  • Обратная (reverse) – определение доменного имени по IP-адресу

Специальное доменное имя для обратных зон

  • in-addr.arpa.
  • IP-адрес записывается в обратном порядке
  • 77.88.55.66 -> 66.55.88.77.in-addr.arpa.

Запись типа PTR (Pointer)

66.55.88.77.in-addr.arpa. 7200 IN PTR yandex.ru.

Запись SOA

SOA (Start of Authority) — указывает, на каком сервере хранится эталонная информация о доменном имени. Критически важна для работы службы DNS.

mail.ru. 600 IN SOA ns1.mail.ru. hostmaster.mail.ru. 3302735406 900 900 604800 60

Запись TXT

TXT (Text string) — содержит любую текстовую запись. Широко применяется для проверок на право владения доменом при подключении дополнительных сервисов, а также для записи SPF и ключа DKIM.

mail.ru. 600 IN TXT “v=spf1 redirect=_spf.mail.ru”

Записей TXT может быть сколько угодно. Вам может потребоваться добавить записи TXT при подключении бесплатной Яндекс.Почты и при получении бесплатного SSL-сертификата, и они не будут друг другу мешать, т.к. необходимы для подтверждения владения доменом в разных сервисах, в первом случае — в Яндекс, во втором — в сертификационном центре Global Sign.

Запись SPF

SPF (Sender Policy Framework) — указывает сервера, которые могут отправлять почту от имени домена. Запись SPF вносят в TXT-запись домена.

Пример записи SPF:

site.ru TXT v=spf1 include:_spf.hosting.reg.ru ip4:37.140.192.92 a mx ~all

В данном примере:

  • v=spf1 — определяет версию используемой записи SPF;
  • include:_spf.hosting.reg.ru — включает в запись SPF значение SPF записи другого домена. Т.е. для домена будут действовать в том числе все значения записи SPF для домена «_spf.hosting.reg.ru»;
  • ip4:37.140.192.92 — разрешает приём почты с IP-адреса 37.140.192.92;
  • a — разрешает приём почты с сервера, IP-адрес которого стоит в ресурсной A записи домена. Проще говоря с сервера, где размещен сайт;
  • mx — разрешает приём почты, если отправляющий сервер указан в одной из записей MX для домена;
  • ~all — если письмо пришло с сервера, который не входит в вышеперечисленный список, его стоит проанализировать более тщательно. Также иногда используется -all — в этом случае письмо не проходит дополнительных проверок и сразу отвергается.

Типы записей DNS:

  • A – адрес IPv4
  • AAAA – адрес IPv6
  • CNAME – псевдоним для доменного имени
  • MX – адрес почтового сервера
  • SRV – адреса и порты сетевых сервисов
  • NS – адреса DNS-серверов, ответственных за зону
  • PTR – доменное имя для IP-адреса
  • Другие редко используемые типы записей

Протокол HTTP

Hypertext Transfer Protocol (HTTP) – протокол передачи гипертекста, основа World Wide Web.

Тим Бернерс-Ли в ЦЕРН предложил концепцию Web в 1989 году

  • Язык гипертекстовой разметки страниц HTML
  • Протокол передачи гипертекстовых страниц

HTTP

  • Web-сервер
  • Текстовый web-браузер

Сейчас Тим Бернерс-Ли директор консорциума W3C

URL

Uniform Resource Locator (URL) – уникальное положение ресурса.

Формат URL: протокол://доменное имя/имя страницы

http://www.example.ru/same/path

Другие протоколы

https://www.youtube.com/

ftp://example.com

Не обязательно гипертекст

http://www.ietf.org/rfc/rfc959.txt

Версии протокола HTTP

HTTP 0.9 – экспериментальная версия ЦЕРН, 1991

HTTP 1 – первая официальная версия протокола, 1996

HTTP 1.1 – расширение первой версии HTTP, 1997

  • Кэширование, keep-alive, аутентификация
  • Используется сейчас

HTTP 2 – современная версия HTTP, 2015

  • Вводится в эксплуатацию

Структура пакета HTTP

Запрос/статус ответа.

  • [METHOD] /[RESOURCE] HTTP/[VERSION]\r\n

    GET / HTTP/1.1

  • HTTP/[VERSION] [CODE] [STATUS NAME]\r\n

    200 ОК.

Заголовки (не обязательно).

  • [HEADER NAME]: [VALUE]\r\n

    Host: www.yandex.ru (обязательно в HTTP 1.1).

    Content-Type: text/html; charset=UTF-8.

    Content-Length: 5161.

Тело сообщения (не обязательно).

  • Страница HTML.
  • Параметры, введенные пользователем.

Методы HTTP

  • GET – запрос Web-страницы
  • POST – передача данных на Web-сервер
  • HEAD – запрос заголовка страницы
  • PUT – помещение страницы на Web-сервер
  • DELETE – удаление страницы с Web-сервера
  • TRACE – трассировка страницы
  • OPTIONS – запрос поддерживаемых методов HTTP для ресурса
  • CONNECT – подключение к Web-серверу через прокси

Статусы HTTP

1XX – информация 2XX – успешное выполнение (200 ОК) 3ХХ – перенаправление (301 – постоянное перемещение, 307 – временное перенаправление) 4ХХ – Ошибка на стороне клиента (403 – доступ запрещен, 404 – страница не найдена) 5ХХ – Ошибка сервера (500 – внутренняя ошибка сервера)

Постоянное соединение в HTTP

Протокол HTTP 1

  • Режим работы: запрос-ответ
  • Простые текстовые документы

Работа HTTP в современных условиях:

  • Загрузка большого количества ресурсов с Web-сервера
    • Создание соединения
    • Получение страницы
    • Закрытие соединения
    • Создание соединения
    • Получение, например, CSS для страницы.
    • Закрытие соединения

Постоянное соединение HTTP (HTTP keep-alive, HTTP persistent connection)

  • Использование одного TCP-соединения для загрузки нескольких ресурсов

Преимущества постоянного соединения.

  • Сокращение накладных расходов на установку TCP-соединения.
  • Нет необходимости каждый раз начинать передачу данных с маленьким размером окна TCP (медленный старт).

В стандарте HTTP 1 возможности использовать постоянное соединение нет.

После публикации стандарта HTTP 1 был предложен заголовок.

  • Connection: keep-alive.

Соединение остается открытым.

  • Используется заголовок Connection: keep-alive.
  • Клиент и сервер поддерживают постоянное соединение.
  • Имеется достаточно ресурсов для сохранения соединения открытым.

В стандарте HTTP 1.1 по умолчанию все соединения постоянные.

Использование заголовка «Connection: keep-alive» не обязательно.

  • Многие браузеры и Web-серверы все равно используют этот заголовок.

Можно явно попросить закрыть соединение.

  • Connection: close.

Недостатки постоянного соединения

  • Для поддержания соединения Web-серверу нужны ресурсы
    • Если клиент открыл соединение и не использует его, то эти ресурсы недоступны другим клиентам
    • Плохо для высоконагруженных серверов
  • Автоматическое закрытие соединения
    • Таймаут 5-15 секунд

Кэширование в HTTP

Современные Web-браузеры поддерживают кэширование редко меняющихся ресурсов:

  • Web-страницы
  • Изображения (логотипы компаний, кнопки навигации и т.п.)
  • Таблицы стилей
  • Библиотеки Java Script

Кэширование сокращает время загрузки страницы.

Требуется место на локальном диске компьютера для кэша.

Протокол HTTP поддерживает работу кэша.

Заголовок Expires:

Expires: Sun, 12 Jun 2016 10:35:18 GMT

  • Указывает, до какого времени можно хранить ресурс в кэш
  • Web-сервера не всегда устанавливают этот заголовок

Эвристики:

Last-Modified: Wed, 25 May 2016 06:13:24 GMT

  • Если страница долго не менялась, то скорее всего можно загрузить ее из кэша.
  • Возможны ошибки.

Запрос GET с условием (Conditional GET) – запрос Web-серверу передать ресурс, если он изменился с указанного времени.

Запрос ресурса с помощью GET.

  • Ответ содержит заголовок Last-Modified.
  • Ресурс записывается в кэш.

Запрос GET с условием.

  • Ответ содержит заголовок If-Modified-Since.
  • If-Modified-Since: Wed, 25 May 2016 06:13:24 GMT.

Ресурс не изменился.

  • Короткое сообщение.
  • Статус ответа: 304 Not Modified.
  • Дополнительные заголовки: Expires, Last-Modified, Cache-Control.

Ресурс изменился.

  • Полная передача обновленной версии ресурса.
  • Статус ответа: 200 ОК.

ETag (entity tag).

  • Код, который генерируется на основе содержимого ресурса
  • Заголовок ETag добавляется к HTTP ответу
  • ETag: “57454284-3d8f”
  • При изменении содержимого ресурса меняется его ETag
  • Появился в стандарте HTTP 1.1

Запрос Get с условием

  • Заголовок If-None-Match
  • If-None-Match: 57454284-3d8f

Заголовок для управления кэшированием

  • Cache-Control: private, max-age=10
  • Появился в версии HTTP 1.1

Возможные значения

  • no-store
  • no-cache
  • public
  • private
  • max-age=86400

Протокол SMTP

SMTP (Simple Mail Transfer Protocol) – простой протокол передачи почты.

Версии SMTP.

  • Протокол SMTP был создан в 1982 году.
  • Расширение SMTP (ESMTP, Extended SMTP) – 2008 год.

Теоретически SMTP может использовать любой транспортный протокол:

  • TCP
  • UDP
  • другие возможные протоколы

Порты

  • Порт 25 – передача почты между почтовыми серверами
  • Порт 587 – прием почты от клиентов

На практике используется

  • Протокол TCP
  • Порт 25

Формат электронного письма

  • Конверт - содержит команды SMTP
    • Заголовки
      • Пустая строка
    • Тело письма
      • Строка с символом .

Команды SMTP

Команда Назначение Пример
HELO Установка соединения HELO example.com
MAIL Адрес отправителя MAIL FROM: <sender@example.com>
RCPT Адрес получателя RCPT TO: <recipient@mail.ru>
DATA Передача письма DATA Закончить ввод данных можно строкой с одной точкой
QUIT Выход QUIT

Ответы SMTP

Код Назначение Пример
220 Подключение к серверу успешно 220 smtp.example.com ESMTP Postfix
250 Успешное выполнение предыдущей команды 250 Hello example.com
250 Ok
354 Начало передачи письма 354 End data with .
502 Команда не реализована 502 5.5.2 Error: command not recognized
503 Неправильная последовательность команд 503 5.5.1 Error: need MAIL command
221 Закрытие соединения 221 2.0.0 So long, and thanks for all the fish

Заголовки письма

Заголовок Назначение
From: Отправитель (имя и адрес)
To: Получатель
CC: Получатель копии письма
BCC: Получатель копии, адрес которого не должен быть показан
Reply-To: Адрес для ответа
Subject: Тема письма
Date: Дата отправки письма

Пример сеанса SMTP

220 smtp.example.ru ESMTP Postfix

HELO yandex.ru

250 smtp.example.ru

MAIL FROM: <zinvapel@yandex.ru>

250 2.1.0 Ok

RCPT TO: <reciever@example.ru>

250 2.1.5 Ok

DATA

354 End data with <CR><LF>.<CR><LF>

From: Zin Vapel

zinvapel@yandex.ru

Subject: An Example of SMTP

Hello, email world!

Hello, SMTP!

.

250 2.0.0 Ok: queued as 7FD9DC2E0060

QUIT

221 2.0.0 Bye

Расширение SMTP

ESMTP появился в 2008 году

Новые команды.

  • EHLO – Extended HELO, дополнительно возвращает доступные команды.
  • STARTTLS – использование шифрования
  • SIZE – объявление максимально возможного размера письма
  • DSN – подтверждение о доставки письма

Набор символов

  • SMTP мог использовать только 7-битные наборы символов
  • ESMTP допускает использование 8-битных наборов символов (можно передавать русские буквы)

Безопасность и спам

SMTP не содержит механизмов защиты данных

  • Содержимое полей MAIL FROM и FROM никак не контролируется
  • Данные передаются по сети в открытом виде (кроме использования STARTTLS)

Спам

  • Рассылка нежелательных сообщений, как правило рекламных

Защита от спама:

  • Проверка домена отправителя через DNS
  • Почтовые серверы принимают письма только для локальных получателей
  • Проверка адреса отправителя с помощью цифровой подписи
# > telnet gmail-smtp-in.l.google.com. 25
Trying 173.194.222.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP t5si9402284lfb.201 - gsmtp
EHLO gmail.com
250-mx.google.com at your service, [90.154.70.15]
250-SIZE 157286400
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
MAIL FROM: <sender@example.com>
250 2.1.0 OK t5si9402284lfb.201 - gsmtp
RCPT TO: <zinvapel@gmail.com>
250 2.1.5 OK t5si9402284lfb.201 - gsmtp
DATA
354  Go ahead t5si9402284lfb.201 - gsmtp
From: Your friend
To: You
Subject: Greeting!

Hello, Pavel!

Congrats you with birthday! Feel happy and free!

Lovely,
Some man.
.
421-4.7.0 [90.154.70.15      15] Our system has detected that this message is
421-4.7.0 suspicious due to the very low reputation of the sending IP address.
421-4.7.0 To protect our users from spam, mail sent from your IP address has
421-4.7.0 been temporarily rate limited. Please visit
421 4.7.0  https://support.google.com/mail/answer/188131 for more information. t5si9402284lfb.201 - gsmtp
Connection closed by foreign host.

POP3

POP (Post Office Protocol) – протокол почтового отделения.

Версии POP:

  • POP1 – 1984 г.
  • POP2 – 1985 г.
  • POP3 – 1988 г.
  • Обновленная версия POP3 c дополнительными механизмами аутентификации и расширениями – 1996 г.

Протокол POP3.

  • Подход «загрузить и удалить».
    • Почтовый ящик считается временным хранилищем сообщений.
    • Все сообщения должны быть переписаны на почтовый клиент.
    • После загрузки на клиент сообщение удаляется с сервера.
  • Преимущества.
    • Простой протокол.
    • Письма доступны при отсутствии подключения к сети.
  • Недостатки
    • Только один клиент
    • Единое хранилище писем (нет папок, фильтров, флагов, и т.п.)

Протокол транспортного уровня - TCP, порт - 110. POP3 работает в текстовом режиме. Взаимодействие запрос-ответ.

Состояния сеанса POP3

Авторизация - клиент представляется и подтверждает, что он тот, за кого себя выдает.

Транзакция - клиент загружает почту и помечает загруженные сообщения на удаление.

Обновление - сервер удаляет помеченные сообщения и закрывает соединение.

Команды POP3.

Команда Назначение Пример
USER Указать имя пользователя USER zinvapel
PASS Указать пароль PASS qwerty123
STAT Количество писем на сервере STAT
LIST [msg_num]? Передача информации о сообщениях LIST 2
RETR [msg_num] Передать сообщение на клиент RETR 1
TOP [msg_num] [lines_count]? Передать на клиент заголовок сообщения TOP 2 10
DELE [msg_num] Пометить сообщение на удаление DELE 1
QUIT акрытие транзакции, удаление сообщений QUIT

Ответы POP3

  • +OK – успешное выполнение команды
  • -ERR – ошибка

IMAP

IMAP (Internet Message Access Protocol) – протокол доступа к электронной почте.

Версии IMAP

  • IMAP1 (Interim Mail Access Protocol) – 1986 г.
  • IMAP2 (Interactive Mail Access Protocol ) – 1988 г.
  • IMAP3 – 1991 г.
  • IMAP4 – 1994 г., последние изменения в 2003 г.

Протокол IMAP.

  • Письма хранятся на почтовом сервере
    • Клиенты подключаются к серверу и загружают письма только после запроса пользователя
    • Сервер может выполнять сложные операции с письмами
  • Преимущества
    • Одновременно могут работать несколько клиентов
    • Все клиенты видят одно и то же состояние почтового ящика
  • Недостатки
    • Протокол более сложен, по сравнению с POP3
    • Место на сервере для почтового ящика, как правило, ограничено

Протокол транспортного уровня - TCP, порт - 143.

Папки

IMAP позволяет использовать несколько почтовых ящиков (mailbox) или папок.

  • Папки хранятся на сервере.
  • Папки могут образовывать иерархию.
  • Сообщения можно перемещать между папками, по умолчанию - INBOX.

Флаги

Флаг - метка (token) письма. У письма на сервере может быть один или несколько флагов.

Системные флаги (начинаются с \)

  • \Seen — прочитано
  • \Answered — написан ответ
  • \Flagged — срочное
  • \Deleted — помечено для удаления
  • \Draft — черновик
  • \Recent — новое сообщение, оно поступило в почтовый ящик после окончания прошлого сеанса.

Если в команде указаны флаги, то они устанавливаются для добавляемого сообщения. В любом случае для сообщения устанавливается флаг \Recent.

Пользовательские флаги

Состояния сеанса IMAP

  • Клиент не аутентифицирован (Not Authenticated). Клиент только что подключился к серверу и должен пройти аутентификацию.
  • Клиент аутентифицирован (Authenticated). Клиент успешно прошел аутентификацию.
  • Папка выбрана (Selected). Выбрана папка на сервере, с которой будет производится работа.
  • Выход (Logout). Разрыв соединения.

Протокол IMAP

Работает в текстовом режиме. Взаимодействие запрос-ответ.

Позволяет выполнять несколько команд одновременно.

  • Поиск в большом почтовом ящике.
  • Массовое обновление писем.

Идентификаторы (теги) команды.

  • Алфавитно-цифровая строка (A0001, A0002).
  • Каждая команда использует свой тег.
  • Ответ сервера включает тег команды.

Команды протокола IMAP

  • LOGIN - позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде. Это не самый лучший метод, но иногда это единственная возможность подключиться к серверу.
  • AUTHENTICATE - позволяет клиенту использовать при регистрации на сервере IMAP альтернативные методы проверки подлинности. Индивидуальная проверка подлинности пользователей не является обязательной и поддерживается не всеми серверами IMAP. К тому же реализации такой проверки могут различаться в зависимости от сервера. Когда клиент выдает команду AUTHENTICATE, сервер отвечает на неё строкой вызова в кодировке base64. Далее клиент должен отправить ответ на вызов сервера о проверке подлинности, также закодированный base64. Если на сервере не поддерживается метод проверки подлинности, предложенный клиентом, он включает в свой ответ слово NO. После этого клиент должен продолжить переговоры по согласованию метода проверки подлинности. Если все попытки определить метод проверки подлинности потерпели неудачу, то клиент предпринимает попытку зарегистрироваться на сервере посредством команды LOGIN.
  • CLOSE - закрывает почтовый ящик. Когда почтовый ящик закрыт с помощью этой команды, то сообщения, помеченные флагом \DELETED, удаляются из него. Не имеет параметров.
  • LOGOUT - завершает сеанс для текущего идентификатора пользователя.
  • CREATE - создаёт новый почтовый ящик. Имя и местоположение новых почтовых ящиков определяются в соответствии с общими спецификациями сервера.
  • DELETE - Применяется к почтовым ящикам. Сервер IMAP при получении этой команды попытается удалить почтовый ящик с именем, указанным в качестве аргумента команды. Сообщения удаляются вместе с ящиками и восстановлению не подлежат.
  • RENAME - Изменяет имя почтового ящика. Эта команда имеет два параметра — имя почтового ящика, который требуется переименовать, и новое имя почтового ящика.
  • SUBSCRIBE - Добавляет почтовый ящик в список активных ящиков клиента. В этой команде используется только один параметр — имя почтового ящика, который нужно внести в список. Почтовый ящик не обязательно должен существовать, чтобы его можно было добавить в список активных ящиков — это позволяет добавлять в список активных ящиков ящики, которые ещё не созданы, или удалять их, если они пусты.
  • UNSUBSCRIBE - Удаляет почтовые ящики из списка активных. В ней так же используется один параметр — имя почтового ящика, который удаляется из списка активных ящиков клиента. При этом сам по себе почтовый ящик не удаляется.
  • LIST - Получить список всех почтовых ящиков клиента; имеет два параметра.
  • LSUB - В отличие от команды LIST используется для получения списка ящиков, активизированных командой SUBSCRIBE. Параметры — такие же, как у LIST.
  • STATUS - Формирует запрос о текущем состоянии почтового ящика. Первым параметром для этой команды является имя почтового ящика, к которому она применяется. Второй параметр — это список критериев, по которым клиент хочет получить информацию. Команда STATUS может использоваться для получения информации о состоянии почтового ящика без его открытия с помощью команд SELECT или EXAMINE. Пользователь может получить информацию по критериям:
  • MESSAGES — общее число сообщений в почтовом ящике
  • RECENT — число сообщений с флагом \recent
  • UIDNEXT — идентификатор UID, который будет назначен новому сообщению
  • UIDVALIDITY — уникальный идентификатор почтового ящика
  • UNSEEN — число сообщений без флага \seen
  • APPEND - Добавляет сообщение в конец указанного почтового ящика. В качестве аргументов указываются имя ящика, флаги сообщения (не обязательно), метка времени (не обязательно) и само сообщение — заголовок и тело.
  • CHECK - Устанавливает контрольную точку в почтовом ящике. Любые операции, такие, например, как запись данных из памяти сервера на его жёсткий диск, должны выполняться при соответствующем состоянии почтового ящика. Именно для проверки целостности почтового ящика после дисковых и других подобных им операций и применяется команда CHECK. Эта команда используется без параметров.
  • EXPUNGE - Удаляет из почтового ящика все сообщения, помеченные флагом \DELETED, при этом почтовый ящик не закрывается. Ответ сервера на команду EXPUNGE представляет собой отчёт о новом состоянии почтового ящика.
  • SEARCH - Поиск сообщений по критериям в активном почтовом ящике с последующим отображением результатов в виде номера сообщения. Возможен поиск сообщений, в теле которых имеется определённая текстовая строка, или имеющих определённый флаг, или полученных до определённой даты и т. д.
  • FETCH - Получить текст почтового сообщения. Команда применяется только для отображения сообщений. В отличие от POP3, клиент IMAP не сохраняет копию сообщения на клиентском ПК.
  • STORE - Изменяет информацию о сообщении.
  • COPY - Копирует сообщения из одного почтового ящика в другой.
  • UID - Используется в связке с командами FETCH, COPY, STORE или SEARCH. С её помощью в этих командах можно использовать реальные идентификационные номера UID вместо последовательности чисел из диапазона номеров сообщений.
  • CAPABILITY - Запрос у сервера IMAP информации о его возможностях.
  • NOOP - Команда ничего не делает. Она может применяться для поддержки активности во время сеанса для того, чтобы сеанс не прекратился по таймеру интервала ожидания. Ответ сервера на команду NOOP всегда должен быть положительным. Так как сервер часто в ответе возвращает состояние выполнения той или иной команды, то NOOP вполне можно использовать как триггер для периодического запроса о состоянии сервера.

Ответы IMAP

Ответ IMAP.

  • Статус.
  • Поясняющее сообщение.

Статус ответов.

  • ОК – успешное выполнение.
  • NO – ошибка выполнение.
  • BAD – неправильная команда или аргумент.

Протокол FTP

FTP (File Transfer Protocol) – протокол передачи файлов.

История FTP.

  • 1971 г. – версия FTP на основе NCP
  • 1980 г. – FTP поверх TCP/IP
  • 1985 г. – принятие текущей спецификации FTP
  • 1994 г. – пассивный режим FTP
  • 1998 г. – поддержка IPv6

Протокол транспортного уровня - TCP, порт - 21.

Протокол использует 2 активных соединения:

  • Управляющее (порт 21)
  • Соединение для передачи данных.
    • Активный режим: порт сервера 20 - инициатором передачи данных является сервер.
    • Пассивный режим: порты больше 1024.

Аутентификация в FTP

Аутентификация

  • Необходимо ввести имя пользователя и пароль

Анонимный пользователь

  • Имя: ftp, anonymous
  • Пароль: ваш email
Команда Назначение
USER Указать имя пользователя
PASS Указать пароль
LIST Просмотр содержимого каталога
CWD Смена текущего каталога
RETR Передать файл с сервера на клиент
STOR Передать файл с клиента на сервер
TYPE Установить режим передачи
DELE Удалить файл
MKD Создать каталог
RMD Удалить каталог
PASV Использовать пассивный режим
QUIT Выход и разрыв соединения