Участник:Shersh/Билеты к экзамену по сетям
Блок 1.
1. Коммутация на канальном уровне.
2. Сети с общей средой передачи данных (подуровень MAC, протоколы).
3. Физическое кодирование.
4. Модель OSI. Канальный уровень (сервисы, подуровни).
5. Модель OSI. Канальный уровень (протоколы).
На канальном уровне нужно передавать данные с сетевого уровня. При этом требуется, чтобы кадры не дублировались, и сохранялся порядок. Ниже представлены протоколы с различными допущениями о канале от самого простого случая (с идеальным каналом) к более сложным. Сначала даётся краткое словесное описание, затем сишный псевдокод, из которого всё понятно.
TODO: хорошо бы эти картиночки заменить на текст, но мне пока как-то не хочется этим заниматься.
Общие объявления
Неограниченный симлексный протокол
Данные передаются в одном направлении. Время обработки равно нулю, буфер бесконечен, канал идеальный. Отправитель просто постоянно шлёт данные, получатель постоянно читает.
Симлексный протокол с ожиданием
Всё то же самое, только теперь считаем, что получатель обрабатывает данные не моментально, поэтому посылающий не может постоянно слать данные. Для этого получатель будет слать подтверждение, а отправитель будет его дожидаться, прежде чем послать следующий пакет. Канал считаем идеальным.
Симплексный протокол для замушлённых каналов
Теперь перестаём верить в идеальный канал, кадры могут теряться и искажаться (в том числе служебные). Проверку искажения кадра будем проводить уровнем ниже (сверять checksum). Чтобы обнаружить потерю кадра, запустим таймер и будем ждать подтверждение. Если подтверждения нет, а наступил таймаут, то кадр считаем потраченным и посылаем заново. Есть проблема: может потеряться подтверждение, в таком случае произойдёт дублирование кадра. Для этого добавим порядковый номер кадра и подтверждения. В этом случае принимающий будет знать, какой порядковый номер он ждёт, и игнорировать кадры с неправильным номером. Нетрудно понять, что для порядкового номера хватит одного бита.
Протоколы скользящего окна
Симплексные протоколы — это плохо, потому что данные хотим посылать в обе стороны, а если сделать два отдельных канала, то получится дороже. В случае с дуплексными протоколами в обе стороны могут ходить и обычные кадры, и служебные (ACK). В заголовке кадра будем хранить kind, чтобы различать типы кадров. Есть техника piggybacking: если мы хотим послать подтверждение и обычный кадр, то пошлём их вместе (подтверждение положим в поле ACK в заголовке кадра). В таком варианте нужно заводить отдельный таймер на тот случай, когда от нас ждут подтверждение, а мы не хотим посылать обычный кадр (в этом случае мы просто пошлём кадр с подтверждением). То есть, если нам пришло сообщение, то мы либо довольно скоро захотим сами что-то послать и приложим подтверждение, либо просто пошлём подтверждение по тику таймера.
Следующие три протокола относятся к протоколам скользящего окна. Суть в том, чтобы хранить два окна (диапазона порядковых номеров кадров) — посылающее и принимающее. Окно хранит номера кадров, которые мы можем послать/принять. Когда сетевой уровень просит что-то послать, мы даём очередному кадру номер, равный верхней границе посылающего окна, и увеличиваем эту границу. При получении подтверждения увеличиваем нижнюю границу. При получении пакета из принимающего окна оно сдвигается на единицу. При получении пакета не из принимающего окна такой пакет игнорируется.
Это всё общая идея, перейдём к конкретным реализациям.
Однобитовое окно
Простейший вариант, когда размер окна равен единице. В этом случае после отправки одного пакета мы не будем отправлять следующий, пока не получим подтверждения о доставке первого.
Протоколы с возвратом на N
Если у нас есть большая пропускная способность, небольшие кадры и большое время прохождения сигнала, то пропускная способность будет использоваться очень слабо, так как большую часть времени мы будем ждать подтверждение, прежде чем посылать очередной кадр. Поэтому будем посылать сразу много кадров не дожидаясь доставки/потери предыдущего. Размер посылающего окна больше единицы (но ограничен какой-нибудь константой).
Есть два подхода к обработке ошибок. Первый называется возвратом на N. Если с каким-то из посланных кадров случилась беда, то все остальные посланные кадры игнорируются, что соответствует единичному размеру входящего окна. Через какое-то время проигнорированные кадры будут перепосланы отправителем. Это плохо в ситуации, когда возможно большое количество ошибок.
В реализации есть ещё одно нововведение: у сетевого уровня не всегда есть данные для передачи, поэтому он будет генерить событие, когда хочет что-то передавать. Также его можно выключить, чтобы он ничего не генерил, если у нас заполнено всё окно.
Протоколы с выборочным повтором
Второй вариант обработки ошибок называется выборочным повтором. Если потерялся/повредился кадр, то все следующие за ним получатель не игнорирует, а буферизует и шлёт на них подтверждения. Сломанный кадр будет перепослан, после чего получатель сможет восстановить нужную последовательность. Доставленные кадры перепосылать не потребуется.
Также можно посылать отрицательное подтверждение (NAK), в этом случае отправитель перепошлёт потерянный кадр до истечения таймаута.
Верификация протоколов
Нам про это очень мало рассказывали.
Конечные автоматы
Состояние процесса будет хранить в себе значения всех переменных в программе. Также будет состояние канала (какой кадр передаётся и передаётся ли). Множество переходов — все возможные переходы между состояниями вследствие каких-либо событий. Также пометим начальные состояния. Получим автомат, в котором можно анализировать достижимость различных состояний. Возможны следующие ошибки:
- состояние, в котором нельзя определить, куда переходить (неполнота протокола)
- состояние, из которого нет выхода (тупик)
- состояние с переходом по событию, которое никогда не может произойти (лишний переход).
Анализ достижимости позволяет обнаружить такие проблемы.
Сети Петри
Нам про это два слова сказали, так что вряд ли понадобится. Есть в Таненбауме, если очень нужно.
6. Модель OSI. Канальный уровень (контроль и исправление ошибок).
7. Модель OSI. Канальный уровень (мосты).
8. Модель OSI. Физический уровень (введение).
9. Модель OSI. Физический уровень (проводные сети).
10. Модель OSI. Физический уровень (оптоволоконные сети).
11. Ethernet.
12. Bluetooth.
13. Виртуальные локальные сети.
Тут всё понятно написано: Xgu.ru — VLAN
Ещё ссылка: intuit.ru — VLAN
14. Протоколы стандарта 802.11*.
Блок 2.
1. Модель OSI. Сетевой уровень (введение, сервисы).
- Сетевой уровень решает задачу доставки пакетов от отправителя до получателя.
- Сетевой уровень прокладывает маршрут на всём протяжении следования информации.
- Сетевой уровень должен обеспечить независимость предоставления своих сервисов от низлежащих технологий.
- Сетевой уровень обеспечивает распределение нагрузки на маршрутизаторы и линии связи.
Сетевой уровень оперирует пакетами. Наиболее известный протокол сетевого уровня — IP. На сетевом уровне работают маршрутизаторы.
Задачи, ставившиеся при разработке сервисов сетевого уровня:
- Сервисы сетевого уровня не должны зависеть от технологии маршрутизатора.
- Транспортный уровень должен быть независим от количества, типа и топологии присутствующих сетей с маршрутизаторами.
- Сетевые адреса, доступные транспортному уровню, должны использовать единую систему нумерации в локальных и глобальных сетях.
Возможны два типа сервисов:
- Маршрутизатор только перемещает пакет с места на место, подсеть изначально обладает ненадёжностью, и хосты должны сами учитывать ошибки и управлять потоком. Каждый пакет содержит адреса отправителя и получателя, в таблицах коммутации на маршрутизаторах указано, куда пересылать пакет в зависимости от получателя.
- Надёжный, ориентированный на соединение сервис, с обеспечением качества обслуживания. Предварительно устанавливается виртуальный канал, по которому в дальнейшем пойдут всё пакеты. Это позволяет сразу договориться о маршруте следования и о различных параметрах.
Принципиальные отличия представлены в таблице:
Ещё раз вкратце: сетевой уровень прежде всего должен прокладывать маршрут между узлами. Если на канальном уровне мы просто передавали пакет с одного конца провода на другой, то на сетевом мы уже хотим передавать данные по большой сети, то есть не факт, что напрямую. Помимо этого хорошо бы стараться равномерно распределять нагрузку на узлы. Ещё одна проблема для сетевого уровня состоит в том, что разные узлы могут находиться в разных сетях, с разными гарантиями от канального уровня. Есть два подхода: дейтаграмный и с установлением канала. В первом случае мы не тратим время на установку соединения, не боимся отказа узла. Во втором случае получаются поменьше пакеты, не нужно каждый раз думать, куда пересылать пакет, можно боговорить параметры передачи (для обеспечения QoS, например).
2. Модель OSI. Сетевой уровень (алгоритмы маршрутизации).
3. Модель OSI. Сетевой уровень (алгоритмы борьбы с перегрузкой).
4. Модель OSI. Сетевой уровень (качество обслуживания).
5. Модель OSI. Сетевой уровень (объединение сетей).
6. Мультикаст. Мультикаст маршрутизация.
7. IPv4. Основы.
8. IPv4. Маршрутизация.
9. Управляющие протоколы Internet.
10. Протоколы внешнего и внутреннего шлюза.
11. IPv6.
12. Модель OSI. Транспортный уровень (сервисы, примитивы, элементы транспортных протоколов).
13. TCP/IP. UDP.
14. TCP/IP. TCP (принцип работы, основы).
15. TCP/IP. TCP (модификации). Производительность транспортного уровня.
16. SCTP (основы, свойства, отличия).
Блок 3.
1. Служба DNS. Пространство имен в Internet.
2. Служба электронной почты.
3. WWW. HTTP. Основы и развитие.
Всемирная паутина(англ. World Wide Web) — распределенная система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключенных к Интернету.
Всемирную паутину образуют миллионы веб-серверов сети Интернет, расположенных по всему миру. Веб-сервер является программой, запускаемой на подключённом к сети компьютере и использующей протокол HTTP для передачи данных. Для идентификации ресурсов (зачастую файлов или их частей) во Всемирной паутине используются единообразные идентификаторы ресурсов URI (англ. Uniform Resource Identifier). Для определения местонахождения ресурсов в сети единообразные локаторы ресурсов URL Resource Locator). Такие URL-локаторы сочетают в себе технологию идентификации URI и систему доменных имён DNS (англ. Domain Name System) — доменное имя (или непосредственно IP-адрес в числовой записи) входит в состав URL для обозначения компьютера (точнее — одного из его сетевых интерфейсов), который исполняет код нужного веб-сервера.
URL
Браузер находит веб-страницы и отдельные объекты по адресам специального формата, называемым URL (Uniform Resource Locator —унифицированный указатель ресурса). URL-адрес может выглядеть, например, так: http://www.olifer.co.uk/books/books.htm.
В URL-адресе можно выделить три части:
- Тип протокола доступа. Начальная часть URL (http://) указывает на то, какой протокол должен быть использован для доступа к данным, расположение которых определяется оставшейся частью URL. Помимо HTTP, здесь могут быть указаны и другие протоколы, такие как FTP, telnet, также позволяющие осуществлять удаленный доступ к файлам или компьютерам.
- DNS-имя сервера. Имя сервера, на котором хранится нужная страница. В нашем случае —это имя сайта www.olifer.co.uk.
- Путь к объекту. Обычно это составное имя файла (объекта) относительно главного каталога веб-сервера, предлагаемого по умолчанию. В нашем случае путем к объекту является /books/books.htm. По расширению файла мы можем сделать вывод о том, что это HTML-файл.
Протокол HTTP
HTTP (HyperText Transfer Protocol — протокол передачи гипертекста) — это протокол прикладного уровня, во многом аналогичный протоколам FTP и SMTP. В настоящее время используются две версии протокола HTTP 1.0 и HTTP 1.1 Обмен сообщениями идет по обычной схеме «запрос-ответ». Клиент и сервер обмениваются текстовыми сообщениями стандартного формата, то есть каждое сообщение представляет собой нескольких строк обычного текста в кодировке ASCII. Для транспортировки HTTP-сообщений служит протокол TCP. При этом ТСР-соединения могут использоваться двумя разными способами:
- Долговременное соединение — передача в одном TCP-соединении нескольких объектов, причем время существования соединения определяется при конфигурировании веб- службы.
- Кратковременное соединение — передача в рамках одного ТСР-соединения только одного объекта.
Долговременное соединение, в свою очередь, может быть использовано двумя способами:
- Последовательная передача запросов с простоями — новый запрос посылается только после получения ответа.
- Конвейерная передача — это более эффективный способ, в котором следующий за- прос посылается до прибытия ответа на один или несколько предыдущих запросов (напоминает метод скользящего окна). Обычно по умолчанию степень параллелизма устанавливается на уровне 5-10, но у пользователя имеется возможность изменять этот параметр при конфигурировании клиента.
В HTTP 1.1 по умолчанию применяются постоянные соединения и конвейерный режим.
Таненбаум 5 издание
- 685 - 692 www, архитектура, клиентская часть,
- 695 - 698 серверная часть
- 724 - 727 http
- 731 - 733 кеширование