exam12 - stankin/inet-2022 GitHub Wiki

Билет 12

  1. Понятие интернет-провайдера. Виды доступа в интернет. Государственное регулирование в интернете.
  2. Современные технологии интернет-программирования.

◀️ Реферат к вопросам экзамена по дисциплине Интернет-технологии 1 курса магистратуры ▶️

Выполнили: Сырмакешев Дмитрий ИДМ-22-07, Чешков Леонид ИДМ-22-05, Люманов Осман ИДМ 22-04, Ступивцев Алексей ИДМ-22-06

Понятие интернет-провайдера. Виды доступа в интернет. Государственное регулирование в интернете.

Интернет-провайдер

Интернет-провайдер (англ. Internet Service Provider, ISP – поставщик интернет-услуг) – организация, которая занимается предоставлением услуг доступа к сети Интернет и связанные с Интернетом услуги1(https://dic.academic.ru/dic.nsf/ruwiki/10510).

Изначально организации обеспечивали доступ клиентов к сети посредством коммутируемых соединений по телефонным линиям. В дальнейшем, в начале 21 века, была разработана и внедрена технология DSL, которая позволила провайдерам предоставлять широкополосный доступ в интернет2(https://trends.rbc.ru/trends/industry/61e686cd9a7947865a134bb6).

Всех провайдеров можно разделить по уровням охватываемых областей: так, на первом уровне находятся 163(https://www.pcmag.com/encyclopedia/term/tier-1-network) интернет-компаний, владеющих главными магистралями передачи данных (магистральные провайдеры). Среди них 5 находятся в США (AT&T, CenturyLink, GTT, Verison и the Zayo Group), остальные находятся в странах Европы и Азии. Между собой эти компании обмениваются траффиком бесплатно. На уровнях ниже находятся компании, которые покупают траффик у провайдеров выше и продают находящимся на низших уровнях. На самом низком уровне находятся провайдеры «последней мили», которые продают траффик непосредственно конечным потребителям.

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

  • широкополосный доступ в Интернет;

  • коммутируемый доступ в Интернет;

  • беспроводной доступ в Интернет;

  • выделение дискового пространства для хранения и обеспечения работы сайтов (хостинг);

  • поддержка электронных почтовых ящиков или виртуального почтового сервера;

  • размещение оборудования клиента на площадке провайдера (колокация);

  • аренда выделенных и виртуальных серверов (VPS, VDS);

  • резервирование данных.

Выработкой и реализацией государственной политики и нормативно-правовым регулированием интернета в России занимается федеральный орган исполнительной власти - Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации.4(https://digital.gov.ru/ru/)

В России юридически интернет-провайдером признают оператора связи, который имеет лицензию на оказание услуг связи. Лицензию выдает Роскомнадзор сроком до 5 лет.5(http://pravo.gov.ru/proxy/ips/?docbody=&nd=102091109&intelsearch=%CF%EE%F1%F2%E0%ED%EE%E2%EB%E5%ED%E8%E5+%CF%F0%E0%E2%E8%F2%E5%EB%FC%F1%F2%E2%E0+%D0%D4+%EE%F2+18.02.2005+%B9+87)

Надзор государства над интернетом в России осуществляет Федеральная служба по надзору в сфере связи, информационных технологий и массовых коммуникаций. Для этого в сетях российских интернет провайдеров установлено оборудование Системы оперативно-розыскных мероприятий. Государство получает от провайдеров информацию о пользователях и контенте в сети, чтобы контролировать и пресекать нарушения.

Виды доступа в интернет

На текущий момент существуют следующие основные виды доступа в интернет:

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

    Коммутируемый (dial-up) доступ обеспечивался обычной телефонной сетью и коммутируемым модемом, который к ней подключался. Максимальная скорость такого соединения - 56 Кбит/c 7(http://ipkey.com.ua/faq/1092-internet-connection-types.html).

  • DSL

    DSL подключение обеспечивается цифровым DSL модемом и сетевой картой на устройстве пользователя. Максимальная скорость - 24 Мбит/с.

  • GPRS, GSM, LTE

    Эту группу "мобильных" подключений объединяет то, что они используются преимущественно на мобильных устройствах: смартфонах, планшетах и т.д. Устройство, будь то телефон или мобильный GSM модем, подключенный к компьютеру через USB или Bluetooth, должен обрабатывать информацию по сотовой связи.

  • Выделенная линия

    Самый распространенный способ подключения на данный момент.7(http://ipkey.com.ua/faq/1092-internet-connection-types.html)8(https://docs.google.com/document/preview?hgd=1&id=1bnN5l5VrZFHMLYHKxr0Jeo7jEerMrDHolnPktrH3lm4) Поставщик услуг размещает в зоне пользования (например, в месте общего пользования многоквартирного дома) коммутатор, к которому каждый пользователь подключается по отдельному кабелю (витая пара или FTTB) непосредственно или через личный роутер.

  • Радиоинтернет

    Подключение с использованием радиосвязи объединяет в себе несколько способов: это и антенна, и спутниковая связь и технология Wi-Fi. В первом и во втором случае требуется антенна, модем и конвертор. Для второго необходима поддержка технологии с обеих сторон.

Современные технологии интернет-программирования

Интернет-программирование (веб-программирование) - раздел программирование, ориентированные на разработку программ, обеспечивающих функционирование динамических сайтов Всемирной паутины.

Языки веб-программирования условно делятся на две группы: клиентские и серверные.

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

Программы на серверных языках обрабатываются на сервере, то есть выполняются все программы, связанные со страницей, и возвращаются пользователю по сети в виде файла.[5]

В основе лежат следующие технологии:

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

CSS - каскадные таблицы стилей используются для описания внешнего вида веб-контента.

HyperText Transfer Protocol (HTTP) — это протокол, по которому доставляются HTML и прочие медиа-документы.

JavaScript — язык программирования, широко используемый для реализации взаимодействия пользователя с веб-сайтами и приложениями.

API - в общем плане это описание способов взаимодействия программных компонентов между собой. Web API - определенный набор HTTP запросов и определение HTTP ответов, описанных обычно при помощи XML или JSON.

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

CANVAS - элемент предоставляет API для рисования 2D-графики, с использованием JavaScript.

SVG (Scalable Vector Graphics - масштабируемая векторная графика) - позволяет вам описать изображение в виде линий, кривых и других геометрических фигур. Благодаря этому можно масштабировать рисунок без потери качества.

Новые технологии:

WebSockets10(https://www.html5rocks.com/en/tutorials/websockets/basics/) - протокол, обеспечивающий полнодуплексную связь между веб-браузером и веб-сервером по одному долговременному соединению. Благодаря этому достигается двусторонняя связь в режиме реального времени между клиентом и сервером, которая может использоваться для различных приложений, таких как онлайн-игры, чат-приложения и потоки данных в режиме реального времени. WebSockets поддерживается всеми основными веб-браузерами и может быть реализован с использованием JavaScript.

WebAssembly11(https://habr.com/ru/post/475778/) - это двоичный формат, который позволяет веб-браузерам выполнять скомпилированный код на скорости, близкой к родной. Он разработан как низкоуровневая виртуальная машина, которая является быстрой, переносимой и безопасной. WebAssembly предназначен для дополнения JavaScript, а не замены его, и может использоваться для запуска критически важного для производительности кода, такого как игровые движки, обработка видео и аудио, а также научное моделирование. WebAssembly поддерживается всеми основными веб-браузерами и может быть написана на таких языках, как C, C++ и Rust.

Snowpack12(https://bestprogrammer.ru/programmirovanie-i-razrabotka/snowpack-vysokoproizvoditelnyj-instrument-dlya-sborki-vneshnego-interfejsa) - это быстрый и легкий инструмент сборки и сервер разработки для современных веб-приложений. Впервые он был выпущен в 2020 году командой Pika, менеджером пакетов для современного JavaScript. Snowpack призван упростить процесс разработки, предоставляя более быстрый и эффективный способ создания современных веб-приложений. Он использует встроенные в современные браузеры модули ES, чтобы ускорить время сборки и запуска сервера разработки по сравнению с традиционными инструментами сборки, такими как Webpack.

Svelte13(https://habr.com/ru/company/vdsina/blog/496094/) - это современный фреймворк веб-приложений для создания реактивных пользовательских интерфейсов. Он был создан Ричем Харрисом и впервые выпущен в 2016 году. Svelte отличается от других популярных интерфейсных фреймворков тем, что переносит большую часть работы, которая традиционно выполнялась бы во время выполнения, на время компиляции, что приводит к более быстрым приложениям и меньшему размеру пакета. Svelte предоставляет модель реактивного программирования и поддержку "хранилищ", которые представляют собой объекты, хранящие часть состояния приложения и автоматически запускающие обновления при изменении состояния. Svelte завоевал популярность в последние годы благодаря своей простоте и производительности.

Когда вы познакомитесь с Web Components, вам может понадобиться библиотека Polymer. Этот проект с открытым исходным кодом запустил Google. Он предназначен для создания стандартизированных веб-компонентов.

Проект Accelerated Mobile Pages (AMP) позволяет адаптировать любую веб-страницу для мобильных устройств по стандартному шаблону.

Gulp позволяет автоматизировать рутинные задачи. Он умеет компилировать Sass в CSS, добавлять в код шаблоны или заплатки для браузеров, автоматически обновлять страницы после внесения в код каких-либо изменений.

С помощью контейнерной платформы Docker можно поддерживать полную виртуальную среду и легко переносить сайты на разные серверы. Виртуальные контейнеры содержат интерфейсы для простой передачи файлов с одного сервера на другой.

В последнее время большую популярность снискал язык программирования(ЯП) Python. С помощью этого ЯП можно создавать как мобильные и desktop приложения, так и web-приложения. На данный момент наиболее популярны два фреймворка для web-программирования: Django и FastAPI.

FastAPI - это современный, легкий фреймворк, предназначенный для быстрого и эффективного создания API. Он построен на базе фреймворка Starlette и использует библиотеку Pydantic для валидации и сериализации данных. FastAPI известен своей высокой производительностью и простотой использования, и особенно хорошо подходит для создания микросервисов и масштабируемых бэкендов API.

Django, с другой стороны, является более комплексным веб-фреймворком, который предоставляет широкий спектр инструментов и возможностей для создания сложных веб-приложений. Он включает ORM для доступа к базам данных, шаблонизатор для рендеринга HTML и мощный интерфейс администратора для управления данными приложения. Django известен своей надежностью, гибкостью и пригодностью для создания крупномасштабных веб-приложений.

Для работы с базами данных(БД) в Python используется SQLAlchemy. SQLAlchemy - это мощная библиотека Python, которая предоставляет высокоуровневый интерфейс для работы с реляционными базами данных. Она спроектирована таким образом, чтобы быть простой в использовании и в то же время предоставлять расширенные возможности для более сложных случаев использования.

SQLAlchemy предоставляет систему объектно-реляционного отображения (ORM), которая позволяет разработчикам взаимодействовать с базами данных с помощью классов и объектов Python. Это означает, что вы можете создавать таблицы базы данных, вставлять и обновлять записи, запрашивать данные, используя код Python, а не писать необработанные SQL-запросы. SQLAlchemy также предоставляет мощный API запросов, который позволяет создавать сложные запросы к базе данных с помощью кода Python.

Одним из основных преимуществ SQLAlchemy является поддержка широкого спектра баз данных, включая PostgreSQL, MySQL, SQLite, Oracle и Microsoft SQL Server. Это делает его универсальным инструментом, который можно использовать в широком спектре проектов.

В целом, SQLAlchemy - это мощная и гибкая библиотека для работы с базами данных на Python. Независимо от того, создаете вы небольшое веб-приложение или крупную корпоративную систему, SQLAlchemy предоставляет инструменты, необходимые для взаимодействия с базами данных простым способом.

Так же хочу отметить такие веб проекты как

Hotwire

Hotwire — набор инструментов для создания быстрых веб-приложений с минимальным использованием кода на JavaScript от одного из корр-разработчиков Ruby on Rails, компании Basecamp.

Подход увеличивает скорость загрузки веб-страниц и сокращает количество кода на JavaScript за счет отправки HTML вместо JSON (Hotwire — HTML-over-the-Wire).

https://youtu.be/0HNUOn-wIlM

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

Progressive Web Applications (PWA)

PWA — впервые предложенный в 2018 году подход к разработке быстрых, надежных и удобных для пользователя веб-приложений. Поисковая система Google отделяет веб-приложения от нативных именно по этим критериям, поэтому в 2022 году подход будет набирать популярность.

Чтобы приложение можно было назвать прогрессивным, в нем должен использоваться определенный набор технологий:

Service Worker — прокси-слой между фронтендом и бэкэндом, через который проходят все запросы браузера; HTTPS — подход предполагает, что все ресурсы сайта передаются через защищенный протокол. Кроме того, на сайте не должно быть ссылок на незащищенные ресурсы; App shell — основа графического интерфейса, которая хранится на стороне клиента и загружается при запуске веб-приложения; Web App manifest — определяет, как будет выглядеть название приложения, его иконка и само PWA в браузере; Push-уведомления — те самые всплывающие окошки с предложением получать новости от сайта. Единственная широко используемая технология PWA, которой многие владельцы сайтов злоупотребляют.

Low-Code и No-Code

Как ни странно, пока во всем мире происходит бум онлайн-обучения программированию, Low-Code и No-Code платформы становятся все популярнее — и в 2022 году эта тенденция сохранится.

Low-Code и No-Code позволяют разрабатывать приложения, сайты и программы, а также автоматизировать рабочие процессы без знания кода (или с базовыми навыками программирования).

https://youtu.be/g8gjWuzTwh0

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

Podman

Альтернатива инструменту для контейнеризации приложений Docker, который в августе прошлого года объявил о введении платной подписки. Сервис перестал быть бесплатным — теперь доступ к нему стоит $5 в месяц для каждого разработчика в средних и крупных компаниях (от 249 сотрудников и от $10 млн годового оборота).

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

Podman — бесплатный сервис для контейнеризации, который вместе с Rancher Desktop в 2022 году будет набирать популярность среди разработчиков.

ИСТОЧНИКИ

  1. 📑Понятие интернет-провайдера
  2. 📃Статья на портале РБК
  3. 📃Понятие о магистральных интернет-провайдерах
  4. 📑Сайт Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации
  5. 📑Постановление Правительства РФ от 18.02.2005 №87 «Об утверждении перечня наименований услуг связи, вносимых в лицензии, и перечней лицензионных условий»
  6. 📑Веб-программирование
  7. 📃Типы и виды соединения
  8. 📃Способы подключения к интернету
  9. 📃Стартапы для веб-программирования 2022
  10. 📑Introduction to WebSockets on HTML5 Rocks
  11. 📑WebAssembly: что и как
  12. 📑Snowpack: высокопроизводительный инструмент для сборки внешнего интерфейса
  13. 📑Почему стоит использовать Svelte для своих веб-проектов