По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
API расшифровывается как Application Programming Interface (программный интерфейс приложения). Что же это такое? По сути, это описание способов взаимодействия между программами, как они могут общаться и передавать данные друг другу. Рассмотрим пример из жизни: Приходя в ресторан вы взаимодействуйте с официантом - можете попросить меню, сделать заказ, попросить принести счет. Официант является интерфейсом вашего взаимодействия с рестораном - вам не нужно знать о том как готовится еда, ингредиенты, как рассчитывать чек, все это сделает ресторан, и отдаст вам результаты при помощи официанта, который в этом примере представляет собой API ресторана. От вас скрываются сложные детали и просто происходит общение между двумя системами - клиентом и рестораном. Вернемся к компьютерам. Предположим, что у нашей платформы доступного айти образования Merion Academy есть интерфейс работы с клиентами - тот самый API, в котором есть определенные функции, куда можно отправить какой - то запрос, и получить ответ. Представим, что у нашего API есть функция вернуть список курсов по Linux, на которые сейчас действует скидка 50% - в такой случае браузер должен сделать запрос к нашему API на получение такого списка курсов, а ответ получить эти данные и отрисовать на странице. Важно учесть, что API интерфейсы не всемогущи - вы получите только те функции, которые заложил разработчик. Например, если помимо курсов по Linux со скидкой 50% вы захотите еще получить прогноз погоды в селе “Добрые Пчёлы” - то сорри, наш API пока так не умеет. Для добавления каждой такой новой функции программист должен разработать ее. API состоит из двух частей: это сам интерфейс взаимодействия, скажем так некий мост, портал, окно, а вторая часть - это его описание, которое отвечает на вопрос “а как этой штукой то пользоваться?” Взаимодействие может быть не только между клиентом и сервером, как в примере с нашей ИТ платформой, но и между серверами. Представьте: решили вы полететь в солнечный Дубай, купили билетик на сайте, а он вам еще и погоду показывает. Как же так! Неужели у компании по продаже билетов еще и метеорологические датчики по всему миру стоят, которые сообщают о погоде? Конечно нет - сайт с билетами взаимодействует с каким - то сервисом погоды по API, который как раз занимается погодными данными. А сайт с билетиками еще и скорее всего платит за каждый запрос небольшую денюжку. Кстати, API может быть не только у веб - сервисов, где общение происходит по протоколу HTTP. API есть и у операционных систем, для взаимодействия с самой операционкой и железом. Например, если вы создаете свой аналог инстаграма, то для работы с камерой на устройстве вам нужно взаимодействовать с API системы, которая уже знает как работать с камерой, а не придумывать что-то самому с нуля, да еще и для миллиона разных устройств. API действительно делает жизнь разработчика удобнее, а чтобы работа с API не превратилась в бардак, оно стандартизировано. Самый популярный, это конечно же REST API, но перед тем как перейти к нему, скажем пару слов про SOAP (Service Object Access Protocol), который появился несколько раньше и описывал правила синтаксиса для сообщений запросов и ответов, отправляемых веб-приложениями. Подробнее про SOAP - тут. Ну и все, кто поддерживал SOAP должны были обмениваться XML-сообщениями между системами через HTTP или SMTP. XML (Extensible Markup Language), он же расширяемый язык разметки - это формат для хранения и передачи данных, в котором данные размещены в тегах, что делает их легко читаемыми как для компьютера, так и для человека. Развиваясь, люди перешли на REST, который в отличии от SOAP не является протоколом, а является архитектурным стилем. В SOAP приходилось писать в разы больше кода и заворачивать каждое сообщение в XML. REST же делает данные доступными в качестве ресурсов, которые представлены уникальным URL-адресом, и можно запросить этот ресурс, указав его URL-адрес. Например чтобы посмотреть свои подписки на ютубе нужно выполнить запрос на вот такой адрес https://www.youtube.com/feed/subscriptions. Веб-API, соответствующие стандартам подхода REST, называются RESTful API. Они используют различные HTTP-запросы для работы с ресурсами, такие как GET - запрос, который используется для получения информации или POST, который в свою очередь нужен для отправки данных. RESTful системы поддерживают обмен сообщениями в различных форматах, таких как самый обычный текст, HTML формат, YAML, XML и JSON, в то время как SOAP разрешает только XML, как мы и сказали ранее. Самый популярный это конечно JavaScript Object Notation, он же JSON - простой и универсальный формат, который содержит в себе набор пар ключ:значение. Также хотим сказать про штуку, которая называется gRPC (Remote Procedure Calls) которая в основном используется для связи между разными сервисами и работает очень быстро благодаря тому что тут используется протокол HTTP/2 который работает гораздо быстрее засчет всяких новинок вроде сжатия хедеров, а вместо JSON или XML используется формат Protocol Buffers (protobuf), который работает быстрее и потребляет меньше ресурсов при работе с ним. Работает все это настолько быстро, что можно делать вызов к функции на другом сервере с такой же скоростью, как если бы она находилась на нашем. Подробнее про gRPC и Protobuf - тут Ну и не можем не сказать про модный GraphQL - это язык запросов для API который позволяет указывать точные данные, которые ему нужны, и упрощает получение и склейку данных из нескольких источников, поэтому разработчик может использовать один вызов API для запроса всех необходимых ему данных.
img
Для того, чтобы вывести Asterisk за пределы корпоративной сети и получить возможность звонить “во внешний мир”, необходимо воспользоваться услугами VoIP – провайдеров. В сегодняшней статье, мы расскажем как настроить SIP-транк с провайдером Youmagic (MTT) на примере Asterisk 13.7.1 и FreePBX 13. Создание SIP - транка через FreePBX Для того, чтобы приступить к настройке нового транка, необходимо с главной страницы перейти по следующему пути: Connectivity -> Trunks. Откроется следующее окно: Далее нужно нажать кнопку Add Trunk. В появившемся, выпадающем окне выбираем Add SIP (chan_sip) Trunk В открывшемся окне, указываем имя нового транка и задаём исходящий Caller ID, именно в таком формате будет отображаться Ваш номер телефона при исходящих звонках, если конечно провайдер не перекрывает его другим АОН’ом. Далее, необходимо перейти на вкладку sip Settings и заполнить её разделы Outgoing и Incoming, в соответствии с данными, полученными от провайдера Раздел Outgoing заполняется следующим образом: type=friend defaultuser=74957775566 secret=Ваш_пароль host=voip.mtt.ru dtmfmode=rfc2833 disallow=all allow=alaw&ulaw&g729 canreinvite=no insecure=port,invite qualify=200 Где secret - Ваш пароль, выданный провайдером, defaultuser - Ваш телефонный номер, выданный провайдером и host - адрес провайдерского сервера В разделе Incoming, необходимо заполнить только последнюю строчку Register String, по следующему шаблону: defaultuser:Ваш_пароль@host/defaultuser Соответственно, после замены этих параметров нашими значениями, получится 74957775566:Ваш_пароль@voip.mtt.ru/74957775566 Не забываем нажимать Submit и Apply Config Входящая маршрутизация МТТ (Youmagic) Далее нужно создать новый входящий маршрут для звонков, поступающих из нового транка. Для этого переходим в Connectivity -> Inbound Routes, добавляем новый маршрут кнопкой Add Inbound Route. Даем новому маршруту какое-нибудь описание, а в поле DID Number вписываем номер, который приобрели у МТТ(Youmagic). Далее в поле Set Destination выбираем, куда будут отправляться все входящие звонки, поступившие на данный номер. Это может быть что угодно на Вашей АТС: IVR, голосовое приветствие, ринг-группа и так далее. На примере ниже, все звонки будут поступать на IVR. Исходящая маршрутизация МТТ (Youmagic) Создаём исходящий маршрут. Переходим в Connectivity -> Outbound Routes, жмём кнопку Add Outbound Route. Указываем имя нового маршрута, наш новый номер и привязываем данный маршрут к ранее созданному транку с помощью Trunk Sequence for Matched Routes На вкладке Dial Patterns настраиваем шаблоны набора, которые будут использоваться на данном маршруте Нажимаем кнопки Submit и Apply Config. На этом настройка завершена, теперь можно совершать и принимать вызовы на номер, приобретенный у провайдера Youmagic (МТТ) Более подробно с настройкой маршрутизации вы можете ознакомиться в статье по ссылке ниже: Маршрутизация вызовов FreePBX Настройка через конфигурационные файлы Если вы производите настройку через конфигурационные файлы Asterisk, то настройка нового транка должна осуществляться в файле sip.conf, как показано ниже: [general] register => 74957775566:Ваш_пароль@voip.mtt.ru/74957775566 [youmagic] type=friend dtmfmode=rfc2833 host= voip.mtt.ru disallow=all allow=g729 directmedia=no insecure=port,invite qualify=no А настройка входящих и исходящих маршрутов производится в файле extensions.conf, следующим образом: [youmagic] exten => _8XXXXXXXXXX,1,Dial(SIP/youmagic/${EXTEN}) exten => _8XXXXXXXXXX,n,Hangup [from-youmagic] exten => _4957775566,1,Dial (SIP/trunk/${EXTEN}) exten => _4957775566,n,HangUp()
img
Возможно, вы уже слышали о термине "wirespeed" раньше. Это то, что отдел маркетинга любит использовать, когда речь заходит о продаже сетевого оборудования. Это означает, что пакеты могут быть переданы без какой-либо заметной задержки. Кстати, для остальной части этой статьи слова "многоуровневый коммутатор" и "маршрутизатор" - это одно и то же. Все, что я объясняю о многоуровневых коммутаторах отныне, также относится и к маршрутизаторам. Давайте посмотрим на разницу между коммутаторами 2уровня и многоуровневыми коммутаторами с точки зрения коммутации: Вы знаете, что коммутаторы 2 уровня будут переключать только кадры Ethernet в пределах VLAN, и, если мы хотим, мы можем фильтровать трафик на основе уровня 2 (например, с защитой портов). Многоуровневый коммутатор может делать то же самое, но он также способен маршрутизировать между VLAN и фильтровать на уровне 3 или 4 с помощью списков доступа. Переадресация на уровне 2 основана на конечном MAC-адресе. Наш коммутатор изучает исходные MAC-адреса на входящих кадрах и строит таблицу MAC-адресов. Всякий раз, когда фрейм Ethernet входит в один из наших интерфейсов, мы проверяем таблицу MAC-адресов, чтобы найти конечный MAC-адрес, и отправляем его в правильный интерфейс. Переадресация на уровне 3 основана на IP-адресе назначения. Переадресация происходит, когда коммутатор получает IP-пакет, где исходный IP-адрес находится в другой подсети, чем конечный IP-адрес. Когда наш многоуровневый коммутатор получает IP пакет со своим собственным MAC адресом в качестве назначения в заголовке Ethernet есть две возможности: Если конечный IP-адрес является адресом, настроенным многоуровневом коммутаторе, то IP-пакет был предназначен для этого коммутатора. Если конечный IP-адрес - это адрес, который не настроен на многоуровневом коммутаторе, то мы должны действовать как шлюз и "маршрутизировать" пакет. Это означает, что нам придется сделать поиск в таблице маршрутизации, чтобы проверить наличие самого полного совпадения. Кроме того, мы должны проверить, разрешен ли IP-пакет, если вы настроили ACL. В те не далекие времена коммутация производилась на аппаратной скорости, а маршрутизация-на программной. В настоящее время как коммутация, так и маршрутизация выполняются на аппаратной скорости. В оставшейся части этой статьи вы узнаете почему. Давайте рассмотрим разницу между обработкой кадров Ethernet и IP-пакетов: Жизнь коммутатора уровня 2 проста Коммутатор проверит контрольную сумму кадра Ethernet, чтобы убедиться, что он не поврежден или не изменен. Коммутатор получает кадр Ethernet и добавляет исходный MAC-адрес в таблицу MAC-адресов. Коммутатор направляет кадр Ethernet к правильному интерфейсу, если он знает конечный MAC-адрес. Если нет,то он будет отброшен (помечен как flood). Там нет никакого изменения кадра Ethernet! Теперь давайте посмотрим, что происходит, когда получает IP-пакет многоуровневый коммутатор: В приведенном выше примере компьютер А посылает IP-пакет к компьютеру В. Обратите внимание, что они находятся в разных подсетях, поэтому нам придется его маршрутизировать. Когда наш многоуровневый коммутатор получит IP-пакет, вот что произойдет: Коммутатор проверит контрольную сумму кадра Ethernet, чтобы убедиться, что он не поврежден или не изменен. Коммутатор проверит контрольную сумму IP-пакета, чтобы убедиться, что он не поврежден или не изменен. Многоуровневый коммутатор проверит таблицу маршрутизации, заметит, что 192.168.20 /24 напрямую подключен, и произойдет следующее: Проверит таблицу ARP, чтобы увидеть, есть ли сопоставление уровня 2-3 для компьютера B. Если нет сопоставления, многоуровневый коммутатор отправит запрос ARP. Конечный MAC-адрес изменится с FFF (многоуровневый коммутатор Fa0 / 1) на BBB (компьютер B). Исходный MAC-адрес изменится с AAA (компьютер A) на GGG (многоуровневый коммутатор Fa0/2). Поле TTL (time to live) в IP-пакете уменьшится на 1, и из-за этого контрольная сумма IP-заголовка будет пересчитана. Контрольная сумма фрейма Ethernet должна быть пересчитана заново. Фрейм Ethernet, несущий IP-пакет, будет отправлен из интерфейса к компьютеру B. Как вы можете видеть, имеется довольно много шагов, связанных с маршрутизацией IP-пакетов. Когда мы рассматриваем многоуровневый коммутатор возникает "разделение обязанностей". Мы должны построить таблицу для MAC-адресов, заполнить таблицу маршрутизации, ARP-запросы, проверить, соответствует ли IP-пакет списку доступа и т. д. И нам нужно переслать наши IP-пакеты. Эти задачи разделены между "плоскостью управления" и "плоскостью данных". Ниже приведен пример: Плоскость управления отвечает за обмен информацией о маршрутизации с использованием протоколов маршрутизации, построение таблицы маршрутизации и таблицы ARP. Плоскость данных отвечает за фактическую пересылку IP-пакетов. Таблица маршрутизации не очень подходит для быстрой переадресации, потому что мы имеем дело с рекурсивной маршрутизацией. Что такое рекурсивная маршрутизация? Давайте рассмотрим пример: В приведенном выше примере у нас есть три маршрутизатора. У R3 есть loopback интерфейс, к которому мы хотим получить доступ из R1. Будем использовать статические маршруты для достижения поставленной цели: R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2 Первый статический маршрут предназначен для достижения интерфейса loopback0 R3 и указывает на интерфейс FastEthernet0/0 R3. Второй статический маршрут необходим для достижения сети 192.168.23.0/24. Всякий раз, когда R1 хочет достичь 3.3.3.0/ 24, мы должны выполнить 3 поиска: Первый поиск должен проверить запись для 3.3.3.0/24. Он должен быть там и должен быть IP-адрес следующего прыжка-192.168.23.3 Второй поиск относится к 192.168.23.3. Есть запись, и IP-адрес следующего прыжка - 192.168.12.2. Третий и последний поиск относится к 192.168.12.2. Там имеется вход, и он напрямую подключен. R1 должен проверить таблицу маршрутизации 3 раза, прежде чем он будет знать, куда отправлять свой трафик. Звучит не очень эффективно, верно? Выполнение нескольких поисков для достижения определенной сети называется рекурсивной маршрутизацией. Большую часть времени все входящие и исходящие IP-пакеты будут обрабатываться и пересылаться плоскостью данных, но есть некоторые исключения, давайте сначала рассмотрим картинку ниже: Большая часть IP-пакетов может быть передана плоскостью данных. Однако есть некоторые "специальные" IP-пакеты, которые не могут быть переданы плоскостью данных немедленно, и они отправляются на плоскость управления, вот некоторые примеры: IP-пакеты, предназначенные для одного из IP-адресов многоуровневый коммутатора. Трафик протокола маршрутизации, такой как OSPF, EIGRP или BGP. IP-пакеты, которые имеют некоторые параметры, заданные в IP-заголовке. IP-пакеты с истекшим сроком действия TTL Плоскость управления может пересылать исходящие IP-пакеты на плоскость данных или использовать свой собственный механизм пересылки для определения исходящего интерфейса и следующего IP-адреса прыжка. Примером этого является маршрутизация на основе локальной политики. Наш многоуровневый коммутатор выполняет больше шагов для пересылки пакетов, чем коммутаторы уровня 2, поэтому теоретически он должен работать медленнее, верно? Одна из причин, по которой многоуровневые коммутаторы могут передавать кадры и пакеты на wirespeed, заключается в том, что в плате данных используется специальное оборудование, называемое ASICs. Такая информация, как MAC-адреса, таблица маршрутизации или списки доступа, хранится в этих ASIC. Таблицы хранятся в content-addressable memory (Cam) и ternary content addressable memory (TCAM). Таблица CAM используется для хранения информации уровня 2, например: Исходный MAC-адрес. Интерфейс, на котором мы узнали MAC-адрес. К какой VLAN относится MAC-адрес. Поиск таблицы происходит быстро! Всякий раз, когда коммутатор получает кадр Ethernet, он будет использовать алгоритм хэширования для создания "ключа" для целевого MAC-адреса + VLAN, и он будет сравнивать этот хэш с уже хэшированной информацией в таблице CAM. Таким образом, он может быстро искать информацию в таблице CAM. Таблица TCAM используется для хранения информации "более высокого уровня", например: Списки доступа. Информацию о качестве обслуживания. Таблицу маршрутизации. Таблица TCAM может соответствовать 3 различным значениям: 0 = не просматривать. 1 = сравнивать X = любое приемлемое значение. Полезно для поиска, когда нам не нужно точное совпадение. (таблица маршрутизации или ACL, например). Поскольку существует 3 значения, мы называем его троичным. Так почему же существует 2 типа таблиц? Когда мы ищем MAC-адрес, нам всегда требуется точное совпадение. Нам нужен точный MAC-адрес, если мы хотим переслать кадр Ethernet. Таблица MAC-адресов хранится в таблице CAM. Всякий раз, когда нам нужно сопоставить IP-пакет с таблицей маршрутизации или списком доступа, нам не всегда нужно точное соответствие. Например, IP-пакет с адресом назначения 192.168.20.44 будет соответствовать: 192.168.20.44 /32 192.168.20.0 /24 192.168.0.0 /16 По этой причине такая информация, как таблица маршрутизации, хранится в таблице TCAM. Мы можем решить, должны ли совпадать все или некоторые биты. Пример таблицы TCAM Если мы хотим сопоставить IP-адрес 192.168.10.22, многоуровневый коммутатор сначала посмотрит, есть ли "самое полное совпадение". Там ничего нет, что соответствовало бы полностью 192.168.10.22/32, поэтому мы продолжим сравнение на не полное соответствие. В этом случае есть запись, которая соответствует 192.168.10.0/24. Приведенный выше пример относится к поиску таблиц маршрутизации, спискам доступа, а также к качеству обслуживания, спискам доступа VLAN и многим другим. Теперь вы знаете все шаги, которые должен выполнять многоуровневый коммутатор, когда он должен пересылать IP-пакеты, плоскость управления/данных и, что мы используем разные таблицы, хранящиеся в специальном оборудовании, называемом ASIC. Давайте подробнее рассмотрим фактическую "пересылку" IP-пакетов. Существуют различные методы коммутации для пересылки IP-пакетов. Вот различные варианты коммутации: Процессорная коммутация: Все пакеты проверяются процессором, и все решения о пересылке принимаются в программном обеспечении...очень медленно! Быстрая коммутация (также известное как кеширование маршрутов): Первый пакет в потоке проверяется процессором; решение о пересылке кэшируется аппаратно для следующих пакетов в том же потоке. Это более быстрый метод. (CEF) Cisco Express Forwarding (также известный как переключение на основе топологии): Таблица пересылки, созданная в аппаратном обеспечении заранее. Все пакеты будут коммутироваться с использованием оборудования. Это самый быстрый метод, но есть некоторые ограничения. Многоуровневые коммутаторы и маршрутизаторы используют CEF. При использовании процессорной коммутации маршрутизатор удалит заголовок каждого кадра Ethernet, ищет IP-адрес назначения в таблице маршрутизации для каждого IP-пакета, а затем пересылает кадр Ethernet с переписанными MAC-адресами и CRC на исходящий интерфейс. Все делается в программном обеспечении, так что это очень трудоемкий процесс. Быстрая коммутация более эффективна, потому что она будет искать первый IP-пакет, но будет хранить решение о переадресации в кэше быстрой коммутации. Когда маршрутизаторы получают кадры Ethernet, несущие IP-пакеты в том же потоке, он может использовать информацию в кэше, чтобы переслать их к правильному исходящему интерфейсу. По умолчанию для маршрутизаторов используется CEF (Cisco Express Forwarding):
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59