По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:

На дворе 1988 год – «Microsoft» выпустила операционную систему «MS DOS 4.0», на вершине Эвереста проведена первая в истории телетрансляция, а за окном неспешно протекает эпоха дутых, бесформенных курток :). Казалось бы, все здорово, но ребята из CCITT решают подлить масла в огонь и релизят первое описание ISDN (Integrated Services Digital Network), о котором мы и поговорим.
А что это?
В целом, ISDN это набор стандартов для передачи голоса, видео, блоков данных сети передачи данных и других сервисов по обычным каналам ТфОП (PSTN) - телефонной сети общего пользования. Одновременно. До появления Integrated Services Digital Network, телефонные системы рассматривались как инструмент передачи голоса, с некоторыми сервисами на сети.
ISDN использует временное мультиплексирование TDM (Time Division Multiplexing) и может работать с голосом и данными по одним и тем же линиям. В классических телефонных системах такого и близко не было :)
Сам по себе ISDN представляет гибрид, обеспечивая как доступ в сеть с коммутацией каналов, так и в сеть с коммутацией пакетов. Обеспечивая цифровую передачу голоса или данных, ISDN обеспечивает высокое качество передаваемых данных. По скорости: разгон до 64 кбит/с по абонентской линии и до 128 кбит/с по BRI интерфейсу в обе стороны (загрузка/передача).
В контексте семиуровневой модели OSI (Open Systems Interconnection), ISDN уютно расположился на 1, 2 и 3 уровнях (физический, канальный и сетевой). К первому уровню мы можем отнести BRI/PRI интерфейсы, то есть именно физические соединения, ко второму, протокол контроль ошибок физический линии (LAPD), а на третьем, то есть сетевом, расположился ОКС7 (SS7, Signaling System 7).
ISDN интерфейсы
Мы можем отметить следующие интерфейсы стандарта ISDN:
Basic Rate Interface (BRI) - в BRI интерфейсе существуют два B – канала, которые созданы для передачи данных и 1 D – канал, которые переносит сигнализацию. B – каналы разгоняются до 64 кбит/с, а D – канал гоняет на скорости 16 кбит/c. Кстати, B – канала живут свои жизнью независимо – например, по первому может установиться TCP/IP сессия, а по второму передаваться факс;
Более подробно про BRI можно почитать в нашей статье;
Primary Rate Interface (PRI) - слышали про Е1 - поток? ИКМ 30? Это оно и есть. Условно говоря, PRI состоит из D – сигнального канала (двух, в случае Е1) и от 23 до 30 B – каналов, или как их еще называют, тайм слотов (от TDM).;
Мы тут сравнивали PRI и SIP. Почитать можно тут :)
Broadband-ISDN (B-ISDN) - это так называемый «широкополосный ISDN». Это некое уточнение, спецификация к стандарту, которая расширяет параметры обычного ISDN. Он создан для сетевых служб, которые требуют широкую полосу пропускания;
ISDN службы
Условно, сервисы, которые отдает ISDN можно поделить на три категории:
Передача информации - если говорить прямым языком, «перенос» данных (голос, видео и данные) между пользователями. Сервис живет на нижних трех уровнях модели OSI. ISDN сможет «переносить» данные поверх сетей с коммутацией – каналов/пакетов/фреймов. В данном случае, ISDN не производит никаких манипуляций с содержимым блоков данных;
Телеслужбы - то, что живет от 4 до 7 уровня модели OSI. Вот тут, сеть может менять содержимое пакетов по определенным алгоритмам. ISDN сможет работать с телетекстом, факсом, видеоконференциями. То есть по факту, это некие данные, которые исходят от приложений;
Дополнительные услуги - голосовая почта, вторая линия прочие сервисы, которые могут строить компании поверх ISDN. И зарабатывать на этом :);
Основные принципы ISDN
Как мы сказали в начале статьи, ISDN живет по правилам, описанные CCITT (сейчас это всем известный ITU-T). Вот на чем ребята из ITU – T делают основные акценты:
Поддержка разнородных приложений в ISDN;
Поддержка не только голосовых сервисов;
Акцент на 64 кбитных коннекциях;
Интеллектуальность сети;
Распределенная по уровням архитектура ISDN (по аналогии с OSI);
Огромное разнообразие конфигурации сети;

Четвертая часть тут
Описанные до сих пор технологии—коммутация каналов и пакетов, плоскости управления и QoS—очень сложны. На самом деле, по-видимому, нет конца растущей сложности сетей, особенно по мере того, как приложения и предприятия становятся все более требовательными. В этой лекции будут рассмотрены два конкретных вопроса, связанных со сложностью и сетями:
Что такое сложность сети?
Можно ли «решить» сложность сети?
Почему сети должны быть сложными?
Хотя наиболее очевидным началом понимания темы может быть определение сложности, но на самом деле более полезно рассмотреть вопрос, почему сложность требуется рассмотреть в более общем смысле. Проще говоря, возможно ли «решить» сложность? Почему бы просто не проектировать более простые сети и протоколы? Почему каждая попытка сделать что-то более простое в сетевом мире в конечном итоге явно усложняет ситуацию в долгосрочной перспективе?
Например, благодаря туннелированию поверх (или через) IP сложность плоскости управления снижается, а сеть в целом упрощается. Почему тогда туннельные оверлеи сложны?
Есть два ответа на этот вопрос. Во-первых, поскольку человеческая природа является тем, чем она является, инженеры всегда будут изобретать десять различных способов решения одной и той же проблемы. Это особенно верно в виртуальном мире, где новые решения (относительно) просты в развертывании, (относительно) легко найти проблему с последним набором предлагаемых решений, и (относительно) легко создать новое решение, которое «лучше старого». Это особенно верно с точки зрения поставщика, когда создание чего-то нового часто означает возможность продавать совершенно новую линейку продуктов и технологий, даже если эти технологии очень похожи на старые. Другими словами, виртуальное пространство настолько хаотично, что там легко создать что-то новое.
Второй ответ, однако, заключается в более фундаментальной проблеме: сложность необходима, чтобы справиться с неопределенностью, связанной с трудноразрешимыми проблемами.
Добавление сложности, по-видимому, позволяет сети легче справляться с будущими требованиями и неожиданными событиями, а также предоставлять больше услуг по меньшему набору базовых функций. Если это так, то почему бы просто не построить единый протокол, работающий в одной сети, способный обрабатывать все требования, потенциально предъявляемые к нему, и может обрабатывать любую последовательность событий, которую вы можете себе представить? Одна сеть, работающая по одному протоколу, безусловно, уменьшит количество «движущихся частей», с которыми приходится работать сетевым администраторам, и сделает нашу жизнь проще, верно? На самом деле существует целый ряд различных способов управления сложностью, например:
Абстрагируйтесь от сложности, чтобы построить black box вокруг каждой части системы, чтобы каждая часть и взаимодействие между этими частями были более понятны сразу.
Переместите сложность в другую область — чтобы переместить проблему из области сетей в область приложений, кодирования или протокола. Как говорится в RFC1925 «Проще переместить проблему (например, переместив ее в другую часть общей сетевой архитектуры), чем решить ее»
Добавьте еще один слой сверху, чтобы рассматривать всю сложность как black box, поместив другой протокол или туннель поверх того, что уже есть. Возвращаясь к RFC1925 «Всегда можно добавить еще один уровень indirection»
Проникнитесь сложностью, обозначьте то, что существует как «наследие», и гонитесь за какой-то новой блестящей вещью, которая, как считается, способна решить все проблемы гораздо менее сложным способом.
Игнорируя проблему и надеясь, что она уйдет. Аргументация в пользу исключения «только на этот раз», так что конкретная бизнес-цель может быть достигнута или какая-то проблема устранена в очень сжатые сроки, с обещанием, что проблема сложности будет решена «позже», является хорошим примером.
Каждое из этих решений, однако, имеет ряд компромиссов для рассмотрения и управления. Кроме того, в какой-то момент любая сложная система становится хрупкой - прочной, но хрупкой. Система является надежной, но хрупкой, когда она способна устойчиво реагировать на ожидаемый набор обстоятельств, но неожиданный набор обстоятельств приведет к ее отказу.
Определение Сложности
Учитывая, что сложность необходима, инженеры должны научиться управлять ею каким-то образом, находя или создавая модель, или структуру. Лучше всего начать построение такой модели с самого фундаментального вопроса: что означает сложность в терминах сетей? Можно ли поставить сеть на весы и сделать так, чтобы стрелка указывала на «комплекс»? Существует ли математическая модель, в которую можно включить конфигурации и топологию набора сетевых устройств для получения «индекса сложности»? Как понятия масштаба, устойчивости, хрупкости и элегантности соотносятся со сложностью? Лучшее место для начала построения модели — это пример.
Состояние Control Plane в зависимости от протяженности.
Что такое протяженность сети? Проще говоря, это разница между кратчайшим путем в сети и путем, который фактически принимает трафик между двумя точками. Рисунок 1 иллюстрирует эту концепцию.
Если предположить, что стоимость каждого канала в этой сети равна 1, то кратчайший физический путь между маршрутизаторами A и C также будет кратчайшим логическим путем: [A,B, C]. Однако что произойдет, если метрика на ссылке [A,B] изменится на 3? Самый короткий физический путь по-прежнему [A,B,C], но самый короткий логический путь теперь [A,D,E,C]. Разница между кратчайшим физическим путем и кратчайшим логическим путем-это расстояние, которое должен пройти пакет, пересылаемый между маршрутизаторами A и C—в этом случае протяженность может быть вычислена как (4 [A,D,E,C])?(3 [A,B, C]), для протяженности 1.
Как измеряется протяженность?
Способ измерения протяженности зависит от того, что является наиболее важным в любой конкретной ситуации, но наиболее распространенным способом является сравнение количества прыжков в сети, как это используется в приведенных здесь примерах. В некоторых случаях может оказаться более важным рассмотреть метрику по двум путям, задержку по двум путям или какую-то другую метрику, но важно последовательно измерять ее по всем возможным путям, чтобы обеспечить точное сравнение между путями.
Иногда бывает трудно отличить физическую топологию от логической. В этом случае была ли метрика канала [A,B] увеличена, потому что канал связи на самом деле является более медленной линией связи? Если да, то является ли это примером протяженности или примером простого приведения логической топологии в соответствие с физической топологией, спорно.
В соответствии с этим наблюдением, гораздо проще определить политику с точки зрения протяженности, чем почти любым другим способом. Политика — это любая конфигурация, которая увеличивает протяженность сети. Использование Policy-Based Routing или Traffic Engineering для перенаправления трафика с кратчайшего физического пути на более длинный логический путь, например, для уменьшения перегрузки в определенных каналах, является политикой - она увеличивает протяженность.
Увеличение протяженности — это не всегда плохо. Понимание концепции протяженности просто помогает нам понять различные другие концепции и поставить рамки вокруг компромиссов сложности и оптимизации. Самый короткий путь, с физической точки зрения, не всегда лучший путь.
Протяженность, на этом рисунке, очень простая—она влияет на каждый пункт назначения и каждый пакет, проходящий через сеть. В реальном мире все гораздо сложнее. Протяженность фактически приходится на пару источник / приемник, что делает ее очень трудной для измерения в масштабах всей сети.
Определение сложности: модель А
Три компонента - state, optimization, и surface, являются общими практически в каждом решении по проектированию сети или протокола. Их можно рассматривать как набор компромиссов, как показано на рисунке 2 и описано в следующем списке.
Увеличивающаяся оптимизация всегда движется в направлении большего количества состояний или большего количества поверхность взаимодействия.
Уменьшающееся состояние всегда движется в сторону меньшей оптимизации или большего количества поверхности взаимодействия.
Уменьшение поверхности взаимодействия всегда приводит к меньшей оптимизации или большему состоянию.
Конечно, это не железные правила; они зависят от конкретной сети, протоколов и требований, но они, как правило, достаточно верны, чтобы сделать эту модель полезной для понимания компромиссов в сложности.
Поверхность взаимодействия.
Хотя понимание определения состояние и оптимизация интуитивно понятны, стоит потратить еще немного времени на понимание понятия поверхности взаимодействия. Концепция поверхностей взаимодействия трудна для понимания прежде всего потому, что она охватывает широкий спектр идей. Возможно, был бы полезен данный пример. Предположим, что функция, которая:
Принимает два числа в качестве входных данных
Добавляет их
Умножает полученную сумму на 100
Возвращает результат
Эту единственную функцию можно рассматривать как подсистему в некоторой более крупной системе. Теперь предположим, что вы разбили эту единственную функцию на две функции, одна из которых выполняет сложение, а другая-умножение. Вы создали две более простые функции (каждая из которых выполняет только одну функцию), но вы также создали поверхность взаимодействия между двумя функциями—вы создали две взаимодействующие подсистемы внутри системы, где раньше была только одна.
В качестве другого примера предположим, что у вас есть две плоскости управления, работающие в одной сети. Одна из этих двух плоскостей управления несет информацию о пунктах назначения, доступных вне сети (внешние маршруты), в то время как другая несет пункты назначения, доступные внутри сети (внутренние маршруты). Хотя эти две плоскости управления являются различными системами, они все равно будут взаимодействовать многими интересными и сложными способами. Например, доступность к внешнему назначению будет обязательно зависеть от доступности к внутренним назначениям между краями сети. Эти две плоскости управления теперь должны работать вместе, чтобы построить полную таблицу информации, которая может быть использована для пересылки пакетов через сеть.
Даже два маршрутизатора, взаимодействующие в пределах одной плоскости управления, могут рассматриваться как поверхность взаимодействия. Именно эта широта определения делает очень трудным определение того, что такое поверхность взаимодействия.
Поверхности взаимодействия не плохая вещь. Они помогают инженерам и дизайнерам разделить и победить в любой конкретной области проблемы, от моделирования до реализации.
Управление сложностью через Wasp Waist.
Wasp waist, или модель песочных часов, используется во всем мире и широко имитируется в инженерном мире. Хотя инженеры не часто сознательно применяют эту модель, на самом деле она используется постоянно. На рис. 3 показана модель песочных часов в контексте четырехуровневой модели Department of Defense (DoD), которая привела к созданию пакета интернет-протоколов (IP).
На нижнем уровне, физической транспортной системе, имеется широкий спектр протоколов, от Ethernet до Satellite. На верхнем уровне, где информация распределяется и представляется приложениям, существует широкий спектр протоколов, от протокола передачи гипертекста (HTTP) до TELNET. Однако, когда вы перемещаетесь к середине стека, происходит забавная вещь: количество протоколов уменьшается, создавая песочные часы. Почему это работает, чтобы контролировать сложность? Если мы вернемся к трем компонентам сложности-состоянию, поверхности и сложности, - то обнаружим связь между песочными часами и сложностью.
Состояние делится песочными часами на два разных типа состояния: информация о сети и информация о данных, передаваемых по сети. В то время как верхние уровни занимаются маршалингом и представлением информации в удобной для использования форме, нижние уровни занимаются обнаружением того, какая связь существует и каковы ее свойства на самом деле. Нижним уровням не нужно знать, как форматировать кадр FTP, а верхним уровням не нужно знать, как переносить пакет по Ethernet - состояние уменьшается на обоих концах модели.
Поверхности управляются путем уменьшения количества точек взаимодействия между различными компонентами до одного - Интернет-протокола (IP). Эту единственную точку взаимодействия можно четко определить с помощью процесса стандартизации, при этом изменения в одной точке взаимодействия тщательно регулируются.
Оптимизация осуществляется путем разрешения одному слою проникать в другой слой, а также путем сокрытия состояния сети от приложений. Например, TCP на самом деле не знает состояния сети, кроме того, что он может собрать из локальной информации. TCP потенциально может быть гораздо более эффективным в использовании сетевых ресурсов, но только за счет нарушения уровня, которое открывает трудноуправляемые поверхности взаимодействия.
Таким образом, наслоение многоуровневой сетевой модели — это прямая попытка контролировать сложность различных взаимодействующих компонентов сети.
Очень простой закон сложности можно сформулировать так: в любой сложной системе будут существовать наборы трехсторонних компромиссов. Описанная здесь модель State/Optimization/Surface (SOS) является одним из таких компромиссов. Еще один, более знакомый администраторам, работающим в основном с базами данных, - это Consistency/Accessibility/Partitioning (теорема CAP). Еще один, часто встречающийся в более широком диапазоне контекстов, — это Quick /Cost/Quality (QSQ). Это не компоненты сложности, а то, что можно назвать следствиями сложности.
Администраторы должны быть искусны в выявлении такого рода компромиссных треугольников, точно понимать «углы» треугольника, определять, где в плоскости возможного лежит наиболее оптимальное решение, и быть в состоянии сформулировать, почему некоторые решения просто невозможны или нежелательны.
Если вы не нашли компромиссов, вы недостаточно усердно искали — это хорошее эмпирическое правило, которому следует следовать во всех инженерных работах.

Веб-сервер - это серверное приложение, предназначенное для обработки HTTP-запросов между клиентом и сервером. HTTP - это базовый и широко используемый сетевой протокол.
Apache HTTP Server сыграл важную роль в разработке веб-сайтов. Только у него доля рынка 37,3%. Nginx занимает второе место в списке, с долей рынка 32,4%. Microsoft IIS и LiteSpeed с долей рынка 7,8% и 6,9% занимают 3 и 4 места соответственно.
Но недавно я наткнулся на веб-сервер с названием Caddy. Когда развернул его для тестирования и попытался узнать о его функциях, был приятно удивлён. Это переносимый веб-сервер с минимальной конфигурацией. Я решил, что это очень крутой проект и захотел поделиться им с вами.
Что такое Caddy?
Caddy с его простотой в настройках и использовании является альтернативой популярному веб-серверу Apache. Мэтью Холт - руководитель проекта Caddy утверждает, что их продукт является веб-сервером общего назначения, и он предназначен для обычных людей, и, вероятно, является единственным в своем роде.
Caddy является первым и единственным веб-сервером, который может автоматически получать и обновлять сертификаты SSL/TLS с помощью сервиса Let 's Encrypt.
Функции Caddy
Быстрое выполнение HTTP-запросов с использованием HTTP/2.
Веб-сервер с наименьшей конфигурацией и беспрепятственным развертыванием.
TLS шифрование обеспечивает безопасную связь между приложениями и пользователями через Интернет. Вы можете использовать собственные ключи и сертификаты.
Простота развертывания/использования. Только один файл без зависимости от платформы.
Установка не требуется.
Портативные исполняемые файлы.
Запуск нескольких ЦП/ядер.
Усовершенствованная технология WebSockets - интерактивный сеанс связи между браузером и сервером.
Разметка документов на лету.
Полная поддержка нового протокола IPv6.
Создает журнал в пользовательском формате.
Поддержка Fast CGI, обратного прокси, перезаписи и перенаправления, чистый URL-адрес, сжатия Gzip, просмотра каталогов, виртуальных хосты и заголовков.
Доступно для всех известных платформ - Windows, Linux, BSD, Mac, Android.
Чем отличается Caddy?
Caddy стремится обслуживать интернет, как это должно быть в 2020 году, а не в традиционном смысле.
Обладает новейшими функциями - HTTP/2, IPv6, Маркдаун, WebSockets, CreateCGI, шаблоны и другие стандартные функции.
Запуск исполняемые файлы без установки.
Подробная документация с наименьшим техническим описанием.
Разработан с учетом потребностей конструкторов, разработчиков и блоггеров.
Поддержка виртуального хоста можете создавать любое количество сайтов.
Подходит для всех - независимо от того, является ли ваш сайт статическим или динамическим.
Вы фокусируетесь на том, чего достичь, а не на том, как этого добиться.
Доступность поддержки большинства платформ - Windows, Linux, Mac, Android, BSD.
Обычно на каждый сайт приходится по одному файлу Caddy.
Возможность настройки буквально за 1 минуту, даже для тех, кто не сильно дружит с компьютером.
Тестовая среда
Я буду тестировать его на сервере CentOS, а также на сервере Debian, но те же инструкции работают и на дистрибутивах RHEL и Debian. Для обоих серверов я буду использовать 64-разрядные исполняемые файлы.
Установка веб-сервера Caddy на Linux
Независимо от используемой платформы и архитектуры Caddy предоставляет готовые установщики, которые можно запустить с помощью встроенного в систему пакетного менеджера.
Установка Caddy на Fedora, RedHat, CentOS
Мы установим последнюю версию веб-сервера Caddy из репозитория CORP на Fedora и RHEL/CentOS8.
# dnf install 'dnf-command(copr)'
# dnf copr enable @caddy/caddy
# dnf install caddy
На RHEL/CentOS 7 используйте следующие команды:
# yum install yum-plugin-copr
# yum copr enable @caddy/caddy
# yum install caddy
Установка Caddy на Debian и Ubuntu
$ echo "deb [trusted=yes] https://apt.fury.io/caddy/ /"
| sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
$ sudo apt update
$ sudo apt install caddy
Установив веб-сервер Caddy, с помощью следующих команд systemctl его можно запустить, активировать или же проверить статус:
# systemctl start caddy
# systemctl enable caddy
# systemctl status caddy
Теперь откройте браузер и введите следующий адрес, и вы должны увидеть страницу приветствия Caddy:
http://Server-IP
OR
http://yourdomain.com
Настройка доменов в Caddy
Чтобы настроить домен, сначала необходимо указать DNS-записи A/AAAA домена на этом сервере на панели управления DNS. Затем создайте корневой каталог документа для веб-сайта "example.com" в папке/var/www/html, как показано на рисунке.
$ mkdir /var/www/html/example.com
При использовании SELinux необходимо изменить контекст безопасности файлов для веб-содержимого.
# chcon -t httpd_sys_content_t /var/www/html/example.com -R
# chcon -t httpd_sys_rw_content_t /var/www/html/example.com -R
Теперь откройте и отредактируйте файл конфигурации caddy по адресу /etc/caddy/Caddyfile.
# vim /etc/caddy/Caddyfile
Замените :80 на название вашего домена и измените корень сайта на /var/www/html/example.com, как показано на рисунке.
Чтобы изменения вступили в силу перезапустите службу Caddy:
# systemctl reload caddy
Теперь создайте какую-нибудь HTML-страницу (можно создать собственную) и сохраните её в корневом каталоге веб-сайта.
# touch /var/www/html/example.com/index.html
Добавьте следующий HTML-код в только что созданный файл.
# echo '<!doctype html><head><title>Caddy Test Page at TecMint</title></head><body><h1>Hello, World!</h1></body></html>' | sudo tee /var/www/html/index.html
А теперь перезагрузите страницу, и вы должны увидеть нечто подобно скриншоту ниже:
Если все настроено правильно, домен будет доступен по протоколу HTTPS, что означает на вашем сайте настроено безопасное SSL подключения.
Заключение
Если вы новичок и хотите настроить веб-сервер, не заморачиваясь долгой настройкой, этот инструмент идеально подходит для вас. Даже если вы опытный пользователь, который нуждается в мгновенном и простом веб-сервере, то стоит обратить внимание на Caddy. Если необходим более навороченный сервер с расширенными возможностями, то можно с минимальными конфигурациями задать разрешения на папки, управлять аутентификацией, страницей ошибок, архивацией, перенаправлением HTTP запросов и другими настройками.
Конечно же нельзя воспринимать Кэдди в качестве замены Apache или Nginx. Caddy не предназначен для работы в среде с высоким трафиком. Но он хорошо подойдёт в тех случаях, где нужно быстро настроить надежный веб-сервер.