Компьютерные сети 2 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Строка 1: Строка 1:
== Компьютерные сети ==
+
Segeralah Mendaftar langsung di
 
+
* [https://macanplay.net/ Macanslot]
Продвинутый курс по компьютерным сетям для специальности РС.
+
* [https://paradox3d.net/ InaTogel]
 
+
* [https://macanwin.net/ QqMacan]
=== План курса ===
+
* [https://lechers.cc/ RoyalToto]
 
+
* [https://xenogames.net/ JayaTogelUp]
# Современное состояние сети Интернет и актуальные технологические тренды. Веб как новый десктоп, мобильные клиенты, Интернет вещей.
+
* [https://eeooii.info/ Raja Slot4D]
# Модельный пример №1 – веб-приложение. Цепочка технологий, которые обеспечивают функционирование современного веба. От протоколов HTTP (HTTPS) вниз через DNS и TCP к канальной сети.
+
* [https://139.180.153.95/ Raja Slot4D]
# (Две лекции) Принципы работы основных веб-технологий: протокола HTTP, мехнизма реализации сеансов cookies, набора технологий HTML 4 (объектная модель документа + CSS + язык javascript). Эволюция HTTP. Современная экосистема протоколов, обслуживающих веб. Протокол DNS. Перспективы – HTTP/2.  
+
* [https://209.58.183.93/ JayaTogelUp]
# Особенности функционирования веб-приложений в современной сетевой инфраструктуре, высоконагруженные приложения, поддержка на стороне механизмов операционных систем и инфраструктуры. Основы BGP маршрутизации, IP anycast, CDN.
+
* [https://ronin138.com/ Ronin138]
# Защита соединения.  Семейство протоколов SSL/TLS. Аутентификация пользователей в сетевых приложениях на примере веб-приложений. HTTP basic auth, digest, аутентификация по сертификатам. Способы представления и хранения парольной информации в нагруженных сервисах.
+
* [https://addicthealious.website/ slot 4d]
# Протокол TCP в деталях. Механизмы управления потоком и перегрузками – варианты протокола для различных условий канальной среды. Эволюция протокола, современные расширения, аппаратная поддержка – large segments, tcp offloading.
+
* [https://18.142.23.191/ Macan Slot]
# Нагрузочное тестирование сетевых приложений на примере веб-приложения. Шаблоны настройки производительности сетевых приложений. Варианты архитектур приложений, разделение на фронтенд и бэкенд части, протоколы взаимодействия сервера с бэкендом (CGI/FastCGI/бинарные). Защита от атак «отказ в обслуживании».
+
* [https://royaltotopedia.com RoyTop88]
# Два варианта реализации сетевого приложения – централизованный и распределенный. Обмен файлами, обмен мгновенными сообщениями, разделение контента между клиентами. P2P протоколы. BitTorrent. DHT. Системы мгновенного обмена сообщениями, сравниваем централизованные и распределенные (P2P) сети. Signal/OTR, TorChat. Типовые проблемы распределенных сетей и их решение.
+
* [https://macanplay.com MacanSlot]
# Обзорное введение в виртуализацию сетей, MPLS, Overlay сети – VPN, CDN, архитектура сетей в ЦОД и эволюция коммутационных протоколов, SDN. Заключение.
+
* [https://macantoto88.com Toto 88]
 
+
* [https://jayatogelup.com.com jayatogelup]
=== Материалы лекций ===
+
[https://ronin19.com/ Ronin138]
 
+
[https://addicthealing.website/ slot 4d]
Лекционные материалы публикуются по мере продвижения по курсу.
+
[https://jayatogelcc.cc/ jayatogel]
 
+
[https://jayatogelcc.cc/ jayatogelcc]
* [https://docs.google.com/presentation/d/1t2IDq0I6ne-YydWgSKZDzeHIO9iAAN0KLPZseXqwX-Q/edit?usp=sharing Лекция 1]
+
[http://northcoaststeelhead.com/ northcoaststeelhead.com]
* [https://docs.google.com/presentation/d/1yA6CH1IVsOyNaYA_o7bHKIdvn_TsyrWnm78du_bhzLI/edit?usp=sharing Лекция 2]
+
[http://supremeoutlet.us/ supremeoutlet.us]
* [https://docs.google.com/presentation/d/12ZxUgvwsELDMLRqKG42DihYnXflbO0fesa5IfZ6s77Y/edit?usp=sharing Лекция 3]
+
[http://208.78.220.231/ freebet]
* [https://docs.google.com/presentation/d/126_iNg3x7B2pKHtpZBx-cOnpzDs7QaGbBzJTI-0HTYk/edit?usp=sharing Лекция 4]
+
[http://blackfridaymichaelkors.us/ freebet]
* [https://docs.google.com/presentation/d/1af_FQ8Pvxn0hBTH7G1bOxqc4HrG0tMOhbnQN32vybRQ/edit?usp=sharing Лекция 5]
+
[https://supremeshirtshop.us/ supremeshirtshop.us]
* [https://docs.google.com/presentation/d/1KbDPmvUIaZUvpKnqDhYZkKgPZ_r8Q1eecwzi2fBVR8E/edit?usp=sharing Лекция 6]
+
[https://macanplayslot.web.fc2.com/ macanplay]
* [https://docs.google.com/presentation/d/1_4Rn45tAEROq43zXQhwAWzU55Gjmb0QNlPSIoZfQ0M8/edit?usp=sharing Лекция 7]
+
[https://royaltotopedia4d.web.fc2.com/ royaltotopedia]
* [https://docs.google.com/presentation/d/1xaX0ZiE6uBH84hRwuR3fVoEBeHcbv-JaVQ41wbQ392k/edit?usp=sharing Лекция 8]
+
[https://macanplay8.web.fc2.com/ macanplay slot]
 
+
[https://royaltotopedia88.web.fc2.com/ royaltoto]
=== Практические задания ===
+
[https://olxtotos.web.fc2.com/ olxtoto]
 
+
[https://linklist.bio/OLX.TOTO olxtoto]
Дедлайн по заданиям: задание 1 - 9 июня 2017 г., задание 2 - 12 июня 2017 г.
+
[https://c.mi.com/thread-4131553-1-0.html olxtoto]
 
+
[https://heylink.me/FAFA138 fafa138]
В рамках курса нужно написать два приложения, на которых исследовать поведение стека протоколов и сетевого стека операционной системы.
+
[https://heylink.me/FaFa138 fafa138]
 
+
[https://heylink.me/Fafa138 fafa138]
==== Задание 1: Динамическое веб-приложение ====
+
[https://magic.ly/FAFA138 fafa138]
 
+
[https://fafa138slot.web.fc2.com fafa138]
В первом задании нужно разработать асимметричное клиент-серверное приложение вида "много клиентов, один сервер" и побенчмаркать его в различных условиях. Код приложения вместе с бенчмарками и результатами тестов опубликовать на github.
+
[https://heylink.me/FAFA138 fafa138]
 
+
[http://ec2-13-250-3-146.ap-southeast-1.compute.amazonaws.com/ fafa138]
  Описание задачи:
+
Вам нужно разработать веб-приложение со статической и динамической частью. Динамическая часть должна быть реализована с использованием базовых средств выбранного языка программирования и его стандартной библиотеки для реализации HTTP сервера (для python используйте flask). Приложение должно реализовывать регистрацию и аутентификацию пользователей внутри приложения (не средствами веб-сервера), для хранения пользовательских данных можно использовать файл на диске или любую СУБД. Работа с паролями - scrypt (PBKDF2) и sha256. Аутентифицированный пользователь получает доступ к трем функциям приложения: "быстрая" (поле ввода query к СУБД, POST запрос на приложение, передача query в СУБД, передача результата клиенту), "вычислительная" (факторизовать большое число), "медленная" (обратный ping - клиент через POST запрос отправляет команду серверу пропинговать клиента с параметрами для ping, использовать все поддерживаемые параметры ping, сервер по мере работы ping отправляет клиенту вывод, клиент отрисовывает динамически получаемые данные по мере прихода от сервера).
+
Статическая часть содержит картинки и "большие" файлы (четыре файла по 50Мб). Два варианта раздачи статики - через код приложения и через веб-север (nginx или apache).
+
Бенчмарк для приложения на основе yandex tank и динамического бота на phantomjs. На phantomjs реализовать основные сценарии работы с приложением: регистрация пользователя, логин, выполнение каждой из трех функций, логаут, удаление пользователя. Реализовать нагрузочный тест с тремя различными распределениями "пользовательской" активности:
+
* Пользователи часто регистрируются и логинятся/выходят из приложения (нагрузка на систему аутентификации и работы с паролями).
+
* Много пользователей одновременно приходят на одну из функций приложения (отдельно на "быструю", "вычислительную" и "медленную").
+
* Много пользователей запрашивают статические ресурсы.
+
  Условия функционирования приложения:
+
Для тестирования приложения нужно создать две виртуальные машины - серверная и клиентская. На серверной машине нужно настроить DNS-сервер, который будет обслуживать домен (например, omg.test) с использованием приватного адресного пространства ваших виртуальных машин. Сервер и клиент должны разрешаться этим DNS сервером по символическим доменным именам в созданной зоне.  
+
* Приложение обслуживает клиентов непосредственно без участия веб-сервера.
+
* Приложение обслуживает клиентов через веб-сервер nginx (как обратный прокси или через API uWSGI).
+
* (опционально, бонус) Статику раздавать с файловой системы pingfs: https://github.com/yarrick/pingfs
+
  Результаты тестирования:
+
В каждом из вариантов нужно прогнать бенчмарк сервера в течение значительного времени (5-10 минут). По каждому прогону бенчмарка необходимо собирать следующие данные:
+
* Пропускная способность приложения в количестве запросов в секунду (RPS)
+
* Время отклика (latency)
+
* Распределение кодов ответа и ошибок
+
* Использование памяти на сервере
+
* Использование CPU на сервере
+
* Количество открытых файловых дескрипторов на сервере
+
* Для действий регистрации пользователей и аутентификации - количество действий в секунду (отдельно для реализации с PBKDF2, отдельно с SHA256).
+
 
+
По собранным метрикам построить графики и написать аналитический отчет, в котором объяснить полученные результаты (как меняется RPS при разных условиях и почему, как себя ведёт стек операционной системы).
+
 
+
==== Задание 2: Распределенный P2P браузерный мессенджер ====
+
 
+
Нужно реализовать распределенный P2P чат поверх peerjs/WebRTC, который позволяет обмениваться сообщениями между пирами в чате и файлами. В библиотеке peerjs есть развернутый example пример чата, который можно взять за основу.
+
 
+
(простая часть):  
+
* взять готовый example чат, и реализовать поверх него распределенный алгоритм вычисления минимума из множества чисел
+
* каждый "клиент" при запуске случайно выбирает целое число
+
* между клиентами задана некоторая произвольная топология, т.е. каждый знает, кто у него является соседом, топологию можно задать статически в коде, но это не должен быть полносвязный граф
+
* с помощью волнового алгоритма эха ([http://mk.cs.msu.ru/images/b/b7/DistrAlg_7.pdf Лекция] или "Введение в распределенные алгоритмы", Жерар Тель, страница 206) посчитать минимум из этих чисел, передавая их между соседями в виде сообщений
+
 
+
(сложная часть, опциональная):
+
* В чате должна храниться key-value таблица соответствия id - Name, Surname, email для участников чата, в виде distributed hash table (DHT), для этого нужно выбрать алгоритм DHT (Kademlia?)
+
* Новые пиры должны подключаться с помощью bootstrap-процесса через известный id участника P2P чата, получать DHT-идентификатор, и хранить у себя часть общей DHT в соответствии с выбранным алгоритмом реализации DHT.
+
* Сообщения в чате должны маршрутизироваться по-разному, в зависимости от префикса сообщения - если сообщение начинается с команды /msg DHT-id или какой-то из частей value (Name, Surname, email) через спецсимвол @, то отправлять его следует только тому пиру, который является адресатом (для этого надо уметь делать поиск по DHT). Обычные сообщения отправляются всем пирам.
+
* Аналогично с отправкой файла - через команду /sendfile или без команды.
+
 
+
==== Общее ====
+
 
+
Для практических заданий рекомендуется использовать python и javascript, разрешено использовать любую другую комбинацию серверного и клиентского языков программирования (erlang + coffeescript, nodesj + js, go + actionscript, etc).
+
 
+
Рекомендованные фреймворки и библиотеки:
+
* http://flask.pocoo.org/
+
* http://yaws.hyber.org/
+
* https://github.com/peers/peerjs
+
 
+
Для тестирования:
+
* https://github.com/yandex/yandex-tank
+
* http://phantomjs.org/
+
* http://tinydns.org/
+
* atop - сбор информации об используемых ресурсах в системе, изучить фоновый режим работы
+
* htop, lsof, netstat
+
 
+
=== Итоговый тест ===
+
 
+
https://docs.google.com/forms/d/e/1FAIpQLSfRaxJwQn4yz2BUJy9zOt3a1D8viBk35GglSzVN9AynIaIZFw/viewform
+
 
+
=== Оценки ===
+
https://docs.google.com/spreadsheets/d/1BYUds4FV1pxtAVoUIYcwvDBxa6XcsoD0TcxTWDUsnP4/edit?usp=sharing
+
 
+
=== Расчет оценки ===
+
Вклад в оценку:
+
* Практические задания (2 штуки) - 80%, для зачета обязательно нужно выполнить все задания
+
* Итоговый тест (как домашняя работа) - 20%
+
 
+
=== Литература ===
+
Основная литература:
+
* Michał Zalewski. The Tangled Web: A Guide to Securing Modern Web Applications.
+
* James F. Kurose and Keith W. Ross, Computer Networking: A Top-Down Approach, Addison-Wesley, 5th edition.
+
* Douglas Comer. Internetworking with TCP/IP: Principles, protocols and architecture. Prentice Hall, 2006.
+
* Æleen Frisch. Essential system administration. O’Reilly Media Inc., 2002.
+
 
+
Дополнительная литература:
+
* [http://istina.msu.ru/media/diplomas/diploma/aaf/25a/52857264/article-glebius_epasSZw.pdf Глеб Смирнов. Новая неблокирующаяся на дисковом вводе реализация системного вызова sendfile() для FreeBSD]. Магистерская диссертация. МГУ, 2014
+
* [http://www.openwall.com/presentations/Passwords12-The-Future-Of-Hashing/ Solar Designer. Passwords: The Future Of Hashing].
+
* [https://www.cs.cornell.edu/~shmat/shmat_oak14.pdf C. Brubaker et al. Using Frankencerts for Automated Adversarial Testing of Certificate Validation in SSL/TLS Implementations]
+
* [https://www.joyent.com/blog/tcp-puzzlers TCP Puzzlers]
+
* [https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf Kademlia DHT - оригинальная статья]
+
* [https://pdfs.semanticscholar.org/3885/812a092ff0aad3d45c0464660075e98d0231.pdf The Power of Two Choices in Randomized Load Balancing by Michael David Mitzenmacher, 1996]
+
 
+
=== Контакты ===
+
* Почта: gamajun@gmail.com
+
* Tg: @jamadharma
+

Версия 02:27, 18 августа 2022

Segeralah Mendaftar langsung di

Ronin138 slot 4d jayatogel jayatogelcc northcoaststeelhead.com supremeoutlet.us freebet freebet supremeshirtshop.us macanplay royaltotopedia macanplay slot royaltoto olxtoto olxtoto olxtoto fafa138 fafa138 fafa138 fafa138 fafa138 fafa138 fafa138