|
|
(не показано 12 промежуточных версий 4 участников) |
Строка 1: |
Строка 1: |
− | == Блок 1. == | + | = Ищите конспекты тут [http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D1%81%D0%B5%D1%82%D0%B8 Компьютерные сети] = |
− | === 1. Коммутация на канальном уровне. ===
| |
− | === 2. Сети с общей средой передачи данных (подуровень MAC, протоколы). ===
| |
− | === 3. Физическое кодирование. ===
| |
− | === 4. Модель OSI. Канальный уровень (сервисы, подуровни). ===
| |
− | === 5. Модель OSI. Канальный уровень (протоколы). ===
| |
− | Удобнее всего будет привести протоколы в виде псевдокода (хотя это валидный сишный код, кажется). От самого простого к более сложным.
| |
− | | |
− | TODO: хорошо бы эти картиночки заменить на код, но мне пока как-то не хочется этим заниматься.
| |
− | | |
− | ==== Общие объявления ====
| |
− | [[Файл: Networks Link Layer Protocols Definitions.png]] | |
− | | |
− | [[Файл: Networks 1.5 Definitions.png]]
| |
− | | |
− | ==== Неограниченный симлексный протокол ====
| |
− | Данные передаются в одном направлении. Время обработки равно нулю, буфер бесконечен, канал идеальный.
| |
− | [[Файл: Networks 1.5 Protocol1.png]]
| |
− | | |
− | ==== Симлексный протокол с ожиданием ====
| |
− | Всё то же самое, только теперь считаем, что получатель обрабатывает данные не моментально, поэтому посылающий будет ждать подтверждение, а принимающий будет его посылать, когда будет готов.
| |
− | [[Файл: Networks 1.5 Protocol2.png]]
| |
− | | |
− | ==== Симплексный протокол для замушлённых каналов ====
| |
− | Теперь перестаём верить в идеальный канал, кадры могут теряться и искажаться (в том числе служебные). Введём порядковые номера для сообщений и будем посылать их в подтверждениях. Если нам пришло подтверждение с тем же номером, что и у отправленного кадра, то всё ок. В псевдокоде для простоты порядковый номер — 0 или 1. Также будем запускать таймер, чтобы понимать, что сообщение потерялось.
| |
− | [[Файл: Networks 1.5 Protocol3.1.png]]
| |
− | | |
− | [[Файл: Networks 1.5 Protocol3.2.png]]
| |
− | | |
− | ==== Протоколы скользящего окна ====
| |
− | Дуплексный протокол. Каждая сторона хранит «окно», то есть диапазон порядковых номеров, соответствующих кадрам, которые мы можем посылать и на которые можем получить подтверждения. При получении кадра на отправку увеличиваем верхнюю границу окна, при получении подтверждения увеличиваем нижнюю. Таким образом, в окне находятся те кадры, которые были посланы, но ещё не подтверждены. Размер окна (максимальный) как-то заранее фиксируется. В псевдокоде он равен единице. Также по-прежнему будем гонять таймер.
| |
− | [[Файл: Networks 1.5 Protocol4.1.png]]
| |
− | | |
− | [[Файл: Networks 1.5 Protocol4.2.png]]
| |
− | | |
− | ==== Протоколы с возвратом на N ====
| |
− | Предыдущие протоколоы плохи тем, что если у нас есть большая пропускная способность, небольшие кадры и большое время прохождения сигнала, то пропускная способность будет использоваться очень слабо, так как большую часть времени мы будем ждать подтверждение, прежде чем посылать очередной кадр. Поэтому будем посылать сразу много кадров не дожидаясь доставки/потери предыдущего.
| |
− | | |
− | Возврат на n подразумевает, что если бы повреждён какой-то кадр (не пришло подтверждение/не сошлась checksum), то все кадры с большими номерами игнорируются, подтверждения на них не посылаются. Отправитель должен будет перепослать испорчённый кадр и все за ним.
| |
− | | |
− | Альтернативный вариант (выборочный повтор) — буферизовать все кадры после ошибочного. В таком случае отправитель перепошлёт только испорченные кадры. Можно послать отрицательное подтверждение (NAK) для испорченного кадра, в этом случае отправитель сразу же перепошлёт повреждённый кадр.
| |
− | | |
− | TODO
| |
− | | |
− | ==== Протоколы с выборочным повтором ====
| |
− | TODO
| |
− | | |
− | ==== Верификация протоколов ====
| |
− | TODO
| |
− | | |
− | === 6. Модель OSI. Канальный уровень (контроль и исправление ошибок). ===
| |
− | === 7. Модель OSI. Канальный уровень (мосты). ===
| |
− | === 8. Модель OSI. Физический уровень (введение). ===
| |
− | === 9. Модель OSI. Физический уровень (проводные сети). ===
| |
− | === 10. Модель OSI. Физический уровень (оптоволоконные сети). ===
| |
− | === 11. Ethernet. ===
| |
− | === 12. Bluetooth. ===
| |
− | === 13. Виртуальные локальные сети. ===
| |
− | Тут всё понятно написано: [http://xgu.ru/wiki/VLAN Xgu.ru {{---}} VLAN]
| |
− | | |
− | Ещё ссылка: [http://www.intuit.ru/studies/courses/3591/833/lecture/14258 intuit.ru {{---}} VLAN]
| |
− | | |
− | === 14. Протоколы стандарта 802.11*. ===
| |
− | | |
− | == Блок 2. ==
| |
− | | |
− | === 1. Модель OSI. Сетевой уровень (введение, сервисы). ===
| |
− | === 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 (основы, свойства, отличия). ===
| |
− | '''SCTP''' ('''Stream Control Transmission Protocol''' {{---}} протокол передачи с управлением потока) {{---}} протокол транспортного уровня. Выполняет те же функции, что и протоколы TCP и UDP. Но объединяет при этом их преимущества, лишает недостатков и добавляет новые возможности.
| |
− | | |
− | Отличия от протоколов TCP и UDP:
| |
− | | |
− | [[Файл:SctpTable.png]]
| |
− | | |
− | Основные преимущества (пояснения к таблице):
| |
− | * Сохранение границ {{---}} в протоколе TCP данные передаются непрерывным потоком байт, читаются так же, поэтому программист должен сам следить за тем, как расставлять границы в этом потоке и разделать куски данных. SCTP позволяет ставить границы и обрабатывать данные пакетами, как в UDP. Но при этом гарантирует порядок доставки пакетов, обеспечивает надёжность и ориентирован на соединения. Упорядоченность пакетов, кстати, можно отключить для повышения скорости.
| |
− | * Multihoming (''многолинейность, множественная адресация'', см. иллюстрацию ниже) {{---}} SCTP позволяет устанавливать соединение к одному серверу по разным линиям связи (например, по Wi-Fi и по Ethernet). Таким образом, если одна линия связи отвалится (скорей всего Wi-Fi), то соединение не разорвётся. Это так же позволяет передавать данные сразу по нескольким линиям, что увеличивает скорость передачи. Если в TCP одна линия связи оборвётся, то соединение будет потеряно, придётся устанавливать новое.
| |
− | | |
− | [[Файл:Multihoming.png]]
| |
− | | |
− | * Multithreading (''многопоточность'') {{---}} позволяет передавать несколько потоков в рамках одной ассоциации (ассоциацией в SCTP называется соединение между двумя хостами). Например в TCP данные и служебная информация передаются по одному соединению. Поэтому задержка в получении служебнной информации может быть вызвана текущей передачей данных (например, ACK может не прийти вовремя, поэтому мы пошлём дупликат). Такая проблема называется ''head-of-line blocking, HOL''. Многопоточность позволяет передавать эти данные независимо, что приведёт к лучшему использованию доступных ресурсов.
| |
− | * 4-way handshake {{---}} протокол TCP подвержен SYN-flood атакам. Злоумышленник шлёт много пакетов в короткое время для запроса TCP соединения (запрос на соединение помечен битом SYN в заголовке, поэтому и SYN-flood). Но при этом не подтверждает установление соединения. Таким образом на сервере образуются полуоткрытые соединения. Они закрываются сами по истечению таймаута. Но цель злоумышленника состоит в том, чтобы создать как можно больше таких соединений, не давая тем самым создавать новые валидные соединения из-за ограничения в их количестве на стороне сервера (сервер не может иметь бесконечное число соединений, а если сделать таймаут на обрыв слишком маленьким, то валидные соединения могут отваливаться раньше времени, что тоже нехорошо, и это всё делает syn-атаки возможными). В SCTP используется не тройное рукопожатие, а четверное (из разряда: "я хочу установить соединение - ты точно хочешь установить соединение? - да, я точно хочу установить соединение - ну тогда ладно"). Таким образом за короткий промежуток времени нельзя создать много новых соединений.
| |
− | | |
− | [[Файл:Synfloodsctp.png]]
| |
− | | |
− | * В SCTP не бывает полузакрытых соединений, как в TCP. Если мы закрываем соединение, то сразу в обе стороны.
| |
− | | |
− | К сожалению, несмотря на все преимущеста, протокол SCTP не получил пока широкого распространения. Это связано с инертностью (TCP работает, зачем менять?) и сложностью поддержки на аппаратном уровне (например, вся обёртка сетевых протоколов, те же фаерволы, имеют правила в духе "пропускать только UDP, TCP" пакеты; для примера можно вспомнить, как это используется в NAT).
| |
− | | |
− | == Блок 3. ==
| |
− | | |
− | === 1. Служба DNS. Пространство имен в Internet. ===
| |
− | === 2. Служба электронной почты. ===
| |
− | === 3. WWW. HTTP. Основы и развитие. ===
| |
− | === 4. FTP. Telnet. SSH. ===
| |
− | === 5. Авторизация. Аутентификация. Аудит. Radius. Diameter. ===
| |
− | === 6. Шифрование. Алгоритмы с симметричным ключом. ===
| |
− | === 7. Шифрование. Алгоритмы с открытым ключом. ===
| |
− | === 8. Шифрование. Цифровые подписи. ===
| |
− | === 9. Шифрование. Системы управления открытыми ключами. ===
| |
− | === 10. TLS. IPsec. Основы, отличия. IPv6 и шифрование. ===
| |
− | === 11. Протоколы аутентификации. ===
| |
− | === 12. Firewall. Концепция, примеры. ===
| |
− | === 13. SIP. Телефония поверх IP. ===
| |
− | === 14. Одноранговые сети. ===
| |
− | === 15. Сетевые атаки. Классификация, описания. ===
| |
− | === 16. Мультимедиа поверх IP. RTSP. ===
| |