По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Одна из самых необходимых вещей, которую веб-разработчики захотят установить в Windows 10 для работы веб сервера – это службы IIS (Internet Information Services) . Подробнее про IIS и его сравнение с Apache, другим популярным веб сервером, можно прочесть в нашей статье. Установка IIS На самом деле это даже не установка, как таковая, а включение службы, потому что в Windows 10 этот компонент есть сразу, но он просто выключен. Первым делом нам нужно нажать комбинацию клавиш Win + R, и после того как появится окно “Выполнить”, нам нужно набрать “appwiz.cpl” и нажать OK. Либо мы просто можем пойти в Панель управления и там выбрать пункт Программы – Программы и компоненты – Установка и удаление программ. Тут нам нужно выбрать пункт “Включение или отключение компонентов Windows”. Тут находим пункт “Службы IIS”, ставим на против него галочку и нажимаем ОК, после чего служба будет включена. Если вам, как разработчику, нужны дополнительные параметры, то мы можете раскрыть этот пункт, нажав на плюсик, и включить или отключить те функции, которые вам необходимы. После того как все сделано можно запустить браузер, и вбить в адресной строке localhost, чтобы убедиться, что все работает. Также в меню Пуск и в папке "Средства администрирования" появится пункт "Диспетчер служб IIS". Также туда можно попасть снова нажав Win + R и набрав inetMgr.
img
@media screen and (max-width: 736px){ .video-container { position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; } .video-container iframe { position: absolute; top:0; left: 0; width: 100%; height: 100%; }} Мы живем в мире, в котором побеждают быстрые и общительные. Если говорить о приложениях, то достичь двух этих целей можно через WebSocket. WebSocket часто называют высокопроизводительным протоколом передачи данных, и он необходим для создания канала связи между клиентом и сервером. Так что же это значит, и какую роль WebSocket играет в безопасности API? Обо всем этом поговорим в статье. Что такое WebSocket? Исходя из общепринятого названия, WebSocket – это дуплексный протокол, который часто используется в клиент-серверном канале связи. Он считается двунаправленным, т.е. передача данных выполняется от клиента к серверу и наоборот.  Соединение, установленное с помощью WebSocket, сохраняется до тех пор, пока его не прервет любой из участников. Если одна сторона разрывает соединение, то другая не сможет продолжить коммуникацию, поскольку соединение автоматически разрывается для обоих участников. Чтобы инициировать соединение, WebSocket нужна поддержка со стороны HTTP. Это основа современной разработки веб-приложений, с непрерывным потоком данных и несинхронизированным трафиком. Для чего нужен WebSocket и в каких случаях от него лучше отказаться? WebSocket – это необходимый инструмент для клиент-серверного взаимодействия. Поэтому важно четко понимать его возможности и варианты использования. WebSocket подходит, если вы: Разрабатываете веб-приложения реального времени Самый популярный вариант использования WebSocket – это разработка приложений реального времени с постоянным отображением данных на стороне клиента. Внутренний сервер постоянно отправляет эти данные, а WebSocket реализует их бесперебойную передачу или отправку через уже открытое соединение. Использование WebSocket ускоряет передачу данных и улучшает производительность приложения.  Реальным примером использования такой возможности WebSocket является сайт по торговле биткоинами. WebSocket помогает обрабатывать данные, которые внутренний сервер отправляет клиенту. Создаете чат-приложения Разработчики чат-приложений выбирают WebSocket для выполнения таких операций, как одноразовый обмен и публикация/трансляция сообщений. Для отправки/получения сообщений используется одно и то же WebSocket соединение, поэтому такая коммуникация считается простой и быстрой. Работаете над игровым приложением При разработке игрового приложения крайне важно, чтобы сервер постоянно получал данные, не запрашивая обновления пользовательского интерфейса. WebSocket позволяет достичь этой цели без вмешательства в интерфейс приложения. Теперь, когда стало ясно, для каких целей можно использовать WebSocket, стоит поговорить о том, когда стоит присмотреться к другим решениям. WebSocket – далеко не самый лучший вариант, когда вам нужно получить старые данные, либо же данные требуются только для разовой обработки. В таких случаях лучше ограничиться HTTP-протоколами. WebSocket или HTTP? Поскольку для связи между приложениями используется и HTTP, и WebSocket, люди часто путаются и не могут определиться. Ниже приведено подробное описание каждого из вариантов. Как уже говорилось, WebSocket является двунаправленным и фреймовым протоколом. HTTP – это, наоборот, однонаправленный протокол, работающий над TCP-протоколом. Протокол WebSocket поддерживает непрерывную передачу данных, поэтому часто используется в разработке приложений реального времени. HTTP не зависит от состояния и используется для создания RESTful-приложений.  Передача данных в WebSocket происходит в обе стороны, так что он считается довольно быстрым протоколом. HTTP проигрывает по скорости WebSocket, поскольку в этом протоколе соединение устанавливается с одной стороны. WebSocket использует унифицированное TCP-соединение. Пока один из участников не разорвет это соединение, оно будет активным. HTTP создает разные соединения для разных запросов. После выполнения запроса соединение разрывается автоматически.  Как устанавливается WebSocket-соединение Процесс начинается с «рукопожатия» (handshake), в котором используется новая схема ws или wss. Если проводить параллель, то это примерно то же, что HTTP и защищенный протокол HTTP (HTTPS). В этой схеме клиенты и серверы следуют стандартному протоколу подключения WebSocket. Установка WebSocket-соединения начинается с дополнения HTTP-запроса несколькими заголовками: Connection: Upgrade, Upgrade: WebSocket, Sec-WebSocket- Key и т.д..  Соединение устанавливается в следующие этапы: 1. Запрос Заголовок Connection: Upgrade указывает на WebSocket-рукопожатие, а в Sec-WebSocket-Key содержится случайное значение в кодировке Base64. Это значение произвольно генерируется во время каждого WebSocket-рукопожатия. Частью запроса также является и заголовок ключа. Все вышеперечисленные заголовки образуют GET HTTP-запрос. Он выглядит примерно так: GET ws://websocketexample.com:8181/ HTTP/1.1 Host: localhost:8181 Connection: Upgrade Pragma: no-cache Cache-Control: no-cache Upgrade: websocket Sec-WebSocket-Version: 13 Sec-WebSocket-Key: b6gjhT32u488lpuRwKaOWs== В Sec-WebSocket-Version отмечается версия WebSocket-протокола, которой может пользоваться клиент.  2.Ответ В заголовок ответа Sec-WebSocket-Accept попадает значение, отправленное в заголовке запроса Sec-WebSocket-Key. Ответ привязан к спецификации протокола и активно используется для устранения вводящей в заблуждение информации. Другими словами, такая структура улучшает безопасность API и блокирует некорректно настроенные сервера от создания ошибок при разработке приложения.  HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: rG8wsswmHTJ85lJgAE3M5RTmcCE= WebSocket-протокол Протокол WebSocket – это тип фреймового протокола, который включает в себя различные дискретные блоки с данными. Для корректного функционирования в нем развертывается информационная часть пакета, тип фрейма и длина полезной нагрузки. Чтобы понять принципы работы WebSocket, необходимо разобраться, из чего он состоит. Ключевые элементы перечислены ниже. Бит FIN – это основная часть WebSocket. Он генерируется автоматически при создании подключения. ‍Биты RSV1, RSV2, RSV3 – эти биты зарезервированы для дополнительных возможностей. ‍Opcode – это часть каждого фрейма; объясняет процесс интерпретации данных полезной нагрузки для отдельного фрейма. Примеры распространенных значений: 0x00, 0x0, 0x02, 0x0a, 0x08 и т.д. БитMask активируется, когда один бит задан как 1. Для всех данных полезной нагрузки в WebSocket используется случайный ключ, выбранный клиентом. Ключ маски в сочетании с данными полезной нагрузки помогает обмениваться этими данными через операцию XOR. Это очень важно для безопасности API приложения, поскольку маскирование предотвращает неправильную интерпретацию кэша и т.н. «отравленный кэш». Разберем эти ключевые элементы подробнее. Длина полезной нагрузки Используется для кодирования общей длины данных полезной нагрузки в WebSocket. Отображается, когда закодированная длина данных меньше 126 битов. Если длина данных больше 126 битов, то для описания длины полезной нагрузки используются дополнительные поля.  Ключ маски Каждый фрейм, который клиент отправляет на сервер, маскируется 32-битным значением. Отображается, когда бит маски равен 1. Если бит маски равен 0, то ключ маски также будет нулевым.  Данные полезной нагрузки Все случайные данные приложения и расширения считаются данными полезной нагрузки. Эти данные используются клиентом и серверами для согласования и в процессе первых рукопожатий. Заключение WebSocket – это обновленный, быстрый и простой протокол для установки постоянной клиент-серверной связи. WebSocket гарантирует неразрывность подключения и высокую безопасность данных, даже при непрерывной передаче данных. Использование WebSocket предельно упрощает разработку приложений в режиме реального времени. В ряде случаев WebSocket проявляет себя лучше, чем HTTP, поскольку поддерживает дуплексную связь (например: сайты фондовой биржи, онлайн-игры, приложения для биткоинов, службы обмена сообщениями). WebSocket стал настоящим кладезем полезных возможностей при разработке. Он улучшает безопасность API и поддерживает множество ресурсов (после подключения к внешним библиотекам). Попробуйте заменить свои обычные протоколы обмена данными на WebSocket и оцените его преимущества.
img
Второй метод, который мы можем использовать для настройки адреса, называется EUI-64 (расширенный уникальный идентификатор). Он может быть использован для того, чтобы заставить роутер генерировать свой собственный идентификатор интерфейса вместо того, чтобы вводить его самостоятельно. Роутер будет принимать MAC-адрес своего интерфейса и использовать его в качестве идентификатора интерфейса. Однако MAC-адрес - это 48 бит, а идентификатор интерфейса-64 бит. Что мы будем делать с недостающими частями? В первой части статьи мы рассказывали о стандартной настройке IPv6 на оборудовании Cisco Вот что мы сделаем, чтобы заполнить недостающие биты: Мы берем MAC-адрес и делим его на две части; Мы вставляем "FFFE" между двумя частями, так что бы у нас получилось 64-битное значение; Мы инвертируем 7-й бит идентификатора интерфейса. Например, если мой MAC-адрес 1234.5678.ABCD тогда, после преобразования идентификатор интерфейса получиться: Выше вы видите, как мы разделяем MAC-адрес и помещаем FFFE в середину. "Инвертирование 7-го бита" не является заключительным шагом. Для этого вам нужно преобразовать первые два шестнадцатеричных символа первого байта в двоичный, найти 7-й бит и инвертировать его. Это означает, что если это 0, то вам нужно сделать его 1, а если это 1, то он должен стать 0. 7-й бит представляет собой "универсальный уникальны" бит. По умолчанию в MAC-адресе этот бит всегда будет установлен в 0. При изменении MAC-адреса этот бит должен быть установлен на 1. Обычно люди не меняют MAC-адрес этого роутера, что означает, что EUI-64 будет самостоятельно менять 7-й бит с 0 на 1. Вот как это выглядит: Мы берем первые два шестнадцатеричных символа первого байта, которые являются "12", и преобразуем их обратно в двоичный код. Затем мы инвертируем 7-й бит от 1 до 0 и снова делаем его шестнадцатеричным. Так что на самом деле мой идентификатор интерфейса EUI-64 будет выглядеть следующим образом: Теперь давайте взглянем на конфигурацию EUI-64 на роутере! Я буду использовать 2001:1234:5678:abcd::/64 в качестве префикса: OFF1(config)#interface fastEthernet 0/0 OFF1(config-if)#ipv6 address 2001:1234:5678:abcd::/64 eui-64 В этом случае настроен роутер с префиксом IPv6 и с использованием EUI-64 в конце. Именно так мы можем автоматически генерировать идентификатор интерфейса, используя mac-адрес. Теперь взгляните на IPv6-адрес, который он создал: OFF1#show interfaces fastEthernet 0/0 | include Hardware Hardware is Gt96k FE, address is c200.185c.0000 (bia c200.185c.0000) OFF1#show ipv6 interface fa0/0 FastEthernet0/0 is up, line protocol is up IPv6 is enabled, link-local address is FE80::C000:18FF:FE5C:0 No Virtual link-local address(es): Global unicast address(es): 2001:1234:5678:ABCD:C000:18FF:FE5C:0, subnet is 2001:1234:5678:ABCD::/64 [EUI] Видите эту часть C000:18FF:FE5C:0? Это MAC-адрес, который разделен на 2, FFFE в середине и "2" в "C200" MAC-адреса были инвертированы, поэтому теперь он отображается как "C000". Когда вы используете EUI-64 на интерфейсе, который не имеет MAC-адреса, то он выберет MAC-адрес самого низкого нумерованного интерфейса на роутере. При использовании EUI-64 вы должны ввести 64-битный префикс, а не полный 128-битный IPv6 адрес. Если вы сделаете это, вы не получите ошибку, но Cisco IOS будет только сохранять 64-битный префикс, и в любом случае сгенерирует идентификатор интерфейса. Скорее всего вы, вероятно, не будете использовать EUI-64 на роутере для настройки интерфейса, но это очень полезный метод для обычных хостов, таких как компьютеры windows, linux или mac. Вы, возможно, настроите IPv6-адрес вручную на интерфейсе вашего роутера или используете метод автоконфигурации, такой как DHCP или SLAAC. Когда вы внимательно посмотрите на выходные данные show ipv6 interface, вы можете заметить, что там есть еще один IPv6-адрес: OFF1#show ipv6 interface fa0/0 FastEthernet0/0 is up, line protocol is up IPv6 is enabled, link-local address is FE80::C000:18FF:FE5C:0 Кстати, про теоретические основы IPv6 можно изучить тут Этот адрес называется локальным адресом связи (link-local address), и он имеет некоторые специальные цели для IPv6. Каждое устройство с включенным IPv6 автоматически генерирует локальный адрес связи. Эти адреса являются одноадресными, не могут быть маршрутизированы и используются только в пределах подсети, поэтому они называются "link-local". Некоторые протоколы используют локальные адреса связи вместо глобальных одноадресных адресов, хорошим примером является NDP (Neighbour Discovery Protocol), который используется для обнаружения MAC-адресов других устройств IPv6 в подсети (NDP заменяет ARP для IPv4). Протоколы маршрутизации также используют эти локальные адреса связи для установления соседних областей, а также в качестве следующего перехода для маршрутов. Мы увидим это, когда будем говорить о маршрутизации IPv6. Адресное пространство FE80:: / 10 было зарезервировано для link-local, которые охватывают FE8, FE9, FEA и FEB. Однако RFC, описывающий link-local, утверждает, что следующие 54 бита должны быть нулями, поэтому link-local всегда будут выглядеть так: link-local всегда будет начинаться с FE80:0000:0000:0000, а ID можно настроить с помощью различных методов. Роутеры Cisco будут использовать EUI-64 для создания идентификатора интерфейса, в то время как другие операционные системы, такие как Microsoft, используют случайный метод для создания идентификатора интерфейса. В приведенном ниже примере вы можете видеть, что EUI-64 был использован для создания link-local: OFF1#show interfaces fastEthernet 0/0 | include Hardware Hardware is Gt96k FE, address is c200.185c.0000 (bia c200.185c.0000) OFF1#show ipv6 interface fa0/0 FastEthernet0/0 is up, line protocol is up IPv6 is enabled, link-local address is FE80::C000:18FF:FE5C:0 Первая часть-это FE80:: и вторая часть - это созданный идентификатор интерфейса EUI-64: C000:18FF:FE5C:0 Когда вы настраиваете IPv6-адрес на интерфейсе (глобальный одноадресный или уникальный локальный) или когда вы включаете IPv6 на интерфейсе, вы можете сделать это следующим образом: OFF1(config)#interface fa0/0 OFF1(config-if)#ipv6 enable Использование команды ipv6 enable роутеру создать link-local адрес. OFF1#show ipv6 int fa0/0 FastEthernet0/0 is up, line protocol is up IPv6 is enabled, link-local address is FE80::C000:15FF:FE94:0 По умолчанию Cisco IOS будет использовать EUI-64 для создания link-local адреса, но вы также можете настроить его самостоятельно. Просто убедитесь, что адрес начинается с FE80:: / 10 (FE8, FE9, FEA или FEB). Вот как вы можете настроить link-local адрес: OFF1(config-if)#ipv6 address FE90:1234:5678:ABCD::1 link-local Просто используйте ключевое слово link-local, чтобы сообщить роутеру, что это должен быть адрес link-local. Давайте проверим это: OFF1#show ipv6 int fa0/0 FastEthernet0/0 is up, line protocol is up IPv6 is enabled, link-local address is FE90:1234:5678:ABCD::1 Помимо link-local адресов существует еще один тип адресации, который мы должны обсудить, и это multicast. Я надеюсь, вы обладаете званиями об одноадресных и широковещательных доменах. Когда хост отправляет широковещательную передачу, все остальные устройства в подсети получат ее независимо от того, хотят они этого или нет. Отправка широковещательных сообщений очень неэффективна, и они были удалены из IPv6. Многоадресная рассылка также используется для отправки чего-то с одного хоста на несколько приемников, но разница заключается в том, что многоадресный трафик заканчивается только на хостах, которые хотят его получить. Каждый, кто прослушивает определенный адрес многоадресной рассылки, получит эти пакеты. Это просто как радиостанция, если вы хотите слушать...вы должны настроиться на нужную частоту. IPv6 использует многоадресную рассылку по многим причинам. Узлы IPv6, которые хотят отправить что-то всем узлам, работающим под управлением IPv6, могут использовать адрес многоадресной рассылки FF02::1. Все, у кого включен IPv6, слушают этот адрес. Когда роутер IPv6 хочет отправить что-то всем другим роутерам IPv6 (но не хостам!) он может отправить его в FF02:: 2. Протоколы маршрутизации также используют многоадресные адреса. Например, EIGRP уже использует виде FF02::A и OSPF использует виде FF02::5 и виде FF02::6. Многоадресный трафик маршрутизируется, но часть трафика должна оставаться в пределах подсети. Если это так, то эти адреса будут иметь link-local область, и они не будут перенаправляться роутерами из одной подсети в другую. Диапазон FF00:: / 8 был зарезервирован для многоадресной рассылки IPv6, в то время как диапазон FF02::/16 зарезервирован для многоадресных адресов link-local области. На роутере Cisco вы можете видеть по интерфейсу, к которому многоадресные адреса роутер прослушивает: OFF1#show ipv6 int fa0/0 FastEthernet0/0 is up, line protocol is up IPv6 is enabled, link-local address is FE90:1234:5678:ABCD::1 No Virtual link-local address(es): No global unicast address is configured Joined group address(es): FF02::1 FF02::2 FF02::1:FF00:1 Этот конкретный роутер прослушивает адреса многоадресной рассылки "все хосты IPv6" и "все роутеры IPv6". Как только вы настроите OSPF или EIGRP для IPv6, вы заметите, что интерфейс присоединится к соответствующим адресам многоадресной рассылки. Третий адрес, который у нас есть (FF02::1:FF00:1), называется адресом многоадресной рассылки запрошенного узла. Он используется для обнаружения соседей. Многоадресный адрес запрашиваемого узла основан на одноадресном IPv6-адресе хоста, а если быть более точным...последние шесть шестнадцатеричных символов одноадресного адреса. Все хосты, имеющие одинаковые 6 шестнадцатеричных символов в своем одноадресном IPv6-адресе, в конечном итоге получат один и тот же адрес запрашиваемого узла. Когда вы отправляете что-то на этот адрес запрашиваемого узла, все хосты с одним и тем же адресом получат пакеты. Это что-то вроде многоадресного адреса "все хосты IPv6", но на этот раз у нас есть отдельная комната, где единственными членами являются VIP-персоны, которые разделяют одни и те же последние 6 шестнадцатеричных символов. Все адреса запрашиваемых узлов начинаются с FF02::1:FF, поэтому они выглядят следующим образом: Мой маршрутизатор имеет запрошенный адрес узла FF02:: 1:FF00:1, а link-local адрес -FE90:1234:5678: ABCD:: 1. Когда мы записываем link-local адрес полностью, это выглядит так: FE90:1234:5678:ABCD:0000:0000:0000:0001 Возьмите последние 6 шестнадцатеричных символов из этого адреса: 00:0001 И поместите их за префиксом адреса запрашиваемого узла, чтобы получить полный адрес запрашиваемого узла: FF02:0000:0000:0000:0000:0001:FF00:0001 Мы можем удалить некоторые нули, чтобы сделать его короче, и это будет выглядеть так: FF02::1:FF00:1
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59