Подключение трех розеток от одного провода: Как подключить несколько розеток от одного провода?
Как подключить несколько розеток от одного провода?
Электромонтажные работы относятся к числу опасных мероприятий, поэтому их выполнение требует профессионального подхода и практического опыта. Перед тем, как установить розетки, электрик разрабатывает схему подключения точек электропитания между собой или вывода слаботочных сетей в один питающий кабель. Времена, когда от одной розетки запитывались несколько габаритных электроприборов через тройники или сетевые фильтры, уходят в прошлое.
Современные технологии позволяют сделать наружную, скрытую, комбинированную проводку или осуществить подключение нескольких розеток от одного провода. Сегодня мастера используют 4 метода подключения точек: последовательно, параллельно, по кольцевой или смешанной схеме.
При выборе способа подсоединения нужно сразу рассчитать количество точек. Основное внимание уделяется скруток на соединениях, поскольку они наиболее уязвимы.
Шлейфовое соединение
Последовательная схема подразумевает монтаж нескольких розеток с подведением нулевой жилы и фазы и к основной электроточке. Монтировать распределительную коробку не требуется. Метод категорически не подходит для подключения мощных электроприборов, таких как, например, стиральная машина, кондиционер, бойлер и т.д. При повышенной нагрузке на сеть перегорают контакт первой точки электропитания, а в результате все подключенные к ней электроточки перестанут функционировать. Технология подходит для объединения нескольких слаботочных сетей в единый блок.
Параллельное соединение
В народе схема подключения путем запитки нескольких розеток к одному питающему кабелю называется «звезда». Электрик устанавливает распределительную коробку и подводит к ней ответвления в соответствии с заранее разработанным планом электроразводки. Преимущество такого метода заключается в том, что каждая точка электропитания работает автономно. Напряжение исчезает во всех электроточках только, если перегорает основной электрокабель. При этом, нагрузка на каждую точку может быть выбрана, исходя из мощности электроприбора. Единственный минус – высокий расход проводки.
Смешанное соединение
Суть метода состоит в подключении отдельных розеток, соединенных между собой шлейфом, и отдельных точек электропитания к распределительной коробке. Схема считается одной из самых надежных, поскольку каждый элемент обособлен, и в случае выхода из строя не влияет на систему в целом.
Подключить несколько розеток от одного провода можно за счет монтажа розеточного блока внутреннего или накладного типа. Опытные электрики подбирают силовые линии под определенную группу розеток, исходя из напряжения в сети, сечения провода и номинала выключателя. Для аккуратного оформления стен подрозетники «утапливаются» внутрь поверхности.
Если вам нужно заменить электропроводку в доме или подключить несколько розеток от одного провода, вызывайте нашего мастера! Звоните по номеру телефона +7 (499) 394-66-58 или оставляйте заявку на сайте. У нас опытные электрики, которые имеют необходимые к проведению работ под высоким напряжением допуски и могут безопасно запитать розетки от одного провода!
как сделать работы своими руками, установить тройное устройство и подсоединить по схеме
Обычно в помещении обустраивается несколько розеток, однако их не всегда хватает для подключения необходимых бытовых приборов. Поэтому часто монтируются двойные и даже тройные изделия, чтобы использовать электричество без удлинителя или сетевого фильтра. Это актуально для кухни и рабочей комнаты с оргтехникой и компьютером. Но подключить тройную розетку немного сложнее, чем обычную одинарную.Что собой представляет устройство из 3 разъемов?
Розетка независимо от количества посадочных мест в ней имеет стандартную конструкцию:- керамическую сердцевину, на которой содержатся клеммы для нулевого и фазового проводов, иногда и для заземления;
- декоративную пластиковую коробку;
- металлические пластины, которые обжимают штыри штекера для замыкания цепи.

Среди нескольких конфигураций тройных приборов популярны ленточные, в которых гнёзда расположены на одной линии, или в форме треугольника, где посадочные места располагаются более компактно в вершинах треугольника.
Принципиального различия в их работе нет, всё зависит от предпочтений и потребностей хозяев.Плюсы и минусы
Для установки в кухне или комнате бытовых приборов используется несколько розеток. Однако с каждым годом выпускаются новинки, которые подключаются к бытовой сети и существенно упрощают жизнь. Яркий пример:- кондиционеры;
- вентиляторы;
- локальные обогреватели;
- приборы для ухода за волосами, ногтями, внешностью;
- увлажнители и ионизаторы воздуха, множество других изделий.

- невысокая цена;
- удобство эксплуатации;
- лёгкий монтаж;
- в случае появления неисправности легко отремонтировать;
- могут устанавливаться в подрозетники одинарных предшественников, поэтому сменить одинарную розетку на тройную труда не составит;
- не требует подведения дополнительной проводки;
- обладают безопасным креплением;
- надёжны.
- Многосекционные блочные отличаются крупными габаритами, что часто приводит к их механическим поломкам, поскольку повышается нагрузка от нескольких вилок приборов.
- Необходимо рассчитывать максимально допустимую нагрузку. Если подключить сразу 3 мощных электроприбора, то перегореть могут розетка, контакты и вся проводка до распределительного короба, что требует трудоёмкого ремонта.
- Поскольку вес от трёх вилок разных приборов постоянно будет воздействовать на всю конструкцию, то со временем будет разрушаться декоративное покрытие и корпус из пластика. Это может стать причиной короткого замыкания.
Важно
Чтобы предотвратить эти недостатки, необходимо перед установкой правильно рассчитать мощность подключаемых в неё приборов и взять небольшой запас. Все крепления элементов выполнять качественно.
Зачем нужна установка?
Возможность подключения тройной розетки нужна для организации питания сразу для трёх электроприборов. Чаще всего такие розетки требуются для кухни и комнат с установленным компьютером, оргтехникой, телевизором и дополнительными акустическими системами. Тогда при небольшой суммарной мощности можно пользоваться одновременно всеми подключёнными изделиями. Необходимо понимать, что для прокладки новой розетки потребуется подсоединить к распределительной коробке проводник, на поверхности стены сделать жёлоб для укладки проводки, высверлить отверстие для подрозетника. Если в квартире сделан ремонт или подобные мероприятия потребуют сложного заделывания покрытий, то лучше заменить одинарное изделие тройным. Это повысит функциональность электросети, труда и ресурсов. О том, как установить розетки и выключатели своими руками, узнайте здесь.Основные разновидности
В общем плане тройные розетки представляют собой пластиковый короб с декоративной накладкой, в которой содержится 3 расположенных внутри треугольника или в линию гнезда. Внутри розетка может состоять из одного или трёх керамических сердечников, которые содержат клеммы с пружинами, где фиксируются фазные и нулевые провода. Может выпускаться продукт с наличием заземления или без него, тогда добавляется ещё одна клемма для подключения провода заземления. Тройные розетки бывают таких типов:- С5 – стандартная, для вилок советского образца и без провода заземления. В продаже встречаются реже, однако часто можно встретить в квартирах, где ремонт последний раз делался не менее двух десятилетий назад.
- С6 – более современные, содержат разного типа заземление, оснащены более широкими отверстиями под штыри вилки. Представлены в очень широком ассортименте с возможностью выбора походящего дизайна.
- с автоматическим выключателем, который срабатывает в ответ на перегрузки;
- без заземления или с ним;
- накладные или встраиваемые;
- внешние (наружные) с защитной крышкой;
- внутренние, разработанные специально для подключения при организации скрытой проводки.
Совет
Тройные розетки с общим подрозетником — более компактные, простые в установке, но менее безопасные и удобные в использовании.
Комплектующие для сборки
Можно приобрести тройные розетки, но чаще их собирают вручную из отдельных деталей в один прибор. Возможные проблемы подбора комплектующих:- Цена изделия существенно выше, чем отдельных трёх розеток.
- Требования к нему не соответствуют цели установки.
- стандартные одинарные розетки равного размера с номинальным показателем силы тока 16 А;
- накладная рамка, которая объединяет три сердечника одинарных розеток;
- крепёжные элементы, например, шурупы для фиксации декоративной наладки.
Как установить своими руками?

- разметки;
- высверливания углубления под подрозетник;
- установка прибора;
- сборка.
Разметка стен
Этап самый важный, поскольку от качества выполнения и ровности нанесения зависит монтаж, удобство фиксации приборов.Внимание
Необходимо пользоваться строительным уровнем (можно до 1 м длиной), чтобы выставлять прибор строго по вертикали и горизонтали. Это гарантирует простое подключение.Для успешного монтажа тройной розетки необходимо соблюдать среднее расстояние между центрами элементов. Оптимальная величина равна 7,2 см. Такого размера обычно выпускаются тройные декоративные панели, поэтому несоблюдение размеров приведёт к невозможности установки рамки. К штроблению стен, сверлению углубления под подрозетники необходимо приступать только после выполнения разметки. Исправить углубления или перенести их на несколько сантиметров невозможно без потери прочности фиксации изделия в стене.Высверливание отверстия
Для высверливания ниши под подрозетник нужна электродрель с корончатым сверлом с победитовым напылением. Это позволит просверлить кирпич, бетон. Чтобы сделать углубления под проводку, используется шлифмашина угловая и зубило с молотком. Углубление делается так:- Нужно удерживать дрель перпендикулярно к стене, просверлить на глубину подрозетника с запасом примерно 0,5 см.
- Зубилом и молотком устраняется средняя часть кирпичной кладки или бетона.
- При установке в листе гипсокартона используется соответствующая насадка.
- Сверление выполняют аналогично бетонным или кирпичным поверхностям, но лишнее остаётся внутри коронки. Если такого инструмента нет, то в ГКЛ отверстие вырезается канцелярским или сапожным ножом.
Фиксация подрозетника в бетонной стене

- В кирпичную кладку или бетон вставляется короб с фиксацией на алебастр или раствор.
- При креплении в гипсокартонном листе необходимо вставить в отверстие подрозетник, а затем подкрутить шурупы, которые держат раздвижные лапки. Необходимо подкручивать с таким усилением, чтобы полотно не раскрошилось, при этом прибор не шатался.
Важно
Перед установкой короба в нишу необходимо вырезать в нём отверстие для проводки, которая будет подсоединяться к клеммам сердцевины розетки.
Проводка подключается, когда смесь в нише высыхает.- Если это алебастр, то потребуется примерно 2–3 часа для застывания раствора.
- Если другой тип смеси, то высыхание будет более длительным.
Схема подключения

- Для фиксации тройных розеток на кухне необходимо выбирать место, где будут располагаться несколько бытовых приборов — обычно над столешницей, чтобы не использовать тройники или удлинители.
- Если установка выполняется в комнате, выполняют монтаж ближе к телевизору или компьютеру — так, чтобы экран маскировал конструкцию.
- При монтаже в кухне или санузле, где будет повышенная влажность и колебания микроклимата, нужно крепить не ближе 0,6 м от источника воды и не ниже 0,5 м от пола. Это обеспечит безопасность приборов.
Как подсоединить выключатель?

- С распределительной коробки снимается напряжение, подключаются нулевой и фазный провода к клеммам розетки.
- Розетка будет использоваться, как распределительная коробка, чтобы подключать освещение. Коммутация выполняется в обычном порядке: выводятся провода к выходам светильника.
- Защитные и нулевые провода подключаются уже от розетки трёхжильным кабелем: на клеммы розетки подаётся защитный и нулевой провода, а фазный – на вывод выключателя.
- Для тестирования работоспособности выключателя с тройной розеткой необходимо подключить напряжение и проверить с нагрузкой, например, основным освещением (проверка выключателя) и настольной лампой (проверка розеток).
Внимание
При коммутации многорожковой лампы необходим трёх- и четырехжильный кабель.
При этом трёхжильный соединяет клеммы розетки и выход выключателя, а четырехжильный – защитным и фазным проводом подсоединяется к выходам розетки, а другая пара проводников – к выходам выключателя.Техника безопасности
При выполнении электромонтажных работ с установкой тройной розетки и выключателей необходимо придерживаться техники безопасности:- использовать качественный инструмент с хорошей изоляцией;
- надевать защитную одежду, обувь с прорезиненной подошвой;
- выполнять действия только днём при хорошем освещении;
- отключать питание в электрощите, чтобы избежать поражения током;
- позаботиться о том, чтобы никто не включил электричество: повесить на щиток табличку с предупреждающей надписью, лично предупредить соседей;
- удостовериться в полном отсутствии проводки в местах, где планируется сверление и штробление стен под электропроводку и подрозетники;
- хорошо затягивать все винты в клеммах, чтобы не было искрения или нагревания в таких соединениях;
- работы выполнять в сухом помещении.
- подготовка;
- разметка стен;
- сверление отверстия под короб;
- сам монтаж.
как подключить, специфика и схемы установки
Там, где необходимо подключить взаимодействующую группу бытовой техники, устанавливается блок розеток, включающий от двух до четырех электрических точек. Установка и подключение этого варианта отличается от тех же действий с обычной розеткой. Чтобы результат радовал надежностью, нужно знать тонкости. Согласны?
Мы подробно расскажем, как подключают блок розеток, какие варианты подключения с учетом потребителей существуют. У нас вы узнаете, какие правила монтажа стоит учитывать при установке подобного модульного устройства. Представленные к рассмотрению сведения опираются на ПУЭ.
Подробно изложенную технологию монтажа и подключения розеточных блоков мы подкрепили схемами, пошаговыми фото-руководствами, видео.
Содержание статьи:
Устройство и места установки розеточных блоков
Конструкция розеточного блока отличается от обычной розетки только количеством «посадочных» мест. Он состоит из пластмассового корпуса и внутренней части, представленной терминалами с контактами и клеммами, к которым прикрепляются пружины для вилок.
Большинство современных моделей оснащены заземляющими контактами, которые призваны повышать безопасность системы и снижать напряжение со всех подключенных через блок электроприборов.

Количество точек подключения устанавливаемого розеточного блока определяется исходя из наличия бытовой техники, посаженной на одну группу
Розеточные блоки бывают двух типов:
- Предназначены для скрытой проводки. Устанавливаются в толщу стены с помощью модуля из выполненных в форме стаканов подрозетников;
- Предназначены для открытой проводки. Устанавливаются на поверхность стены с помощью выполненного в форме пластины подрозетника.
Кроме двух основных разновидностей розеточных блоков есть еще весьма практичный выдвижной тип. Они легко монтируются в столешницу или в шкаф, из которых выдвигаются в период эксплуатационной необходимости. Их принцип работы аналогичен источникам питания, расположенным на/в стене.
Розеточные блоки часто , располагая их за рабочим столом на высоте в 10 см, внутри кухонных тумб и за стенками соседних тумбочек на уровне 30-60 см от чистового пола. Встроенные розетки удобно использовать при подключении группы не мощных бытовых приборов: вытяжки, мультиварки, холодильника…


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


Единственным «минусом» такой схемы является то, что в случае повреждения в месте контакта одной из жил перестают функционировать и все расположенные за ней элементы
Сегодня подключение блока розеток часто осуществляют комбинированным способом, в основе которого лежит параллельная схема. Этот способ активно практикуется в европейских странах. У нас он применяется для обеспечения отдельной линией мощных потребителей.
Параллельное подключение предполагает прокладку от распределительной коробки двух кабелей:
- первый направляется в виде шлейфа, запитывая четыре из пяти розеток 5-местного блока;
- второй – подводится отдельно к пятой точке розеточной группы, которая предназначена будет для запитки мощного прибора.
Способ хорош тем, что обеспечивает работоспособность отдельной точки и делает ее независимой от функционирования расположенных рядом других участников цепи.


Главное достоинство комбинированного способа – в обеспечении максимальной степени безопасности, что особо актуально при эксплуатации мощных и дорогостоящих приборов
Единственный недостаток схемы – увеличение расхода кабеля и затрат труда электромонтажника.
Как шлейфовый, так и комбинированный способ подключения может быть закрытого и открытого исполнения. Первый предполагает выдалбливание каналов в стене для прокладки линий и «гнезд» под разъемы, второй реализуется путем прокладки РЕ проводника на поверхности стены.


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


После отключения автомата в электрощите в обязательном порядке следует убедиться, что нет напряжения, используя для этого индикаторную отвертку
В домах старой постройки, где не установлены автоматы, чтобы обесточить помещение нужно лишь выкрутить пробки.
Из материалов необходимо заранее подготовить:
- розеточный блок;
- декоративную планку;
- провода для перемычек;
- кабель для проводки;
- подрозетники, соединяющиеся в блоки;
- гипс или алебастр.
Выбор розеточного блока должен основываться на качестве изделия, а также возможности отдельного подключения РЕ проводников.
Из инструментов потребуются:
- перфоратор, оснащенный бурильной коронкой D 70 мм;
- строительный уровень;
- рулетка, линейка и маркер;
- электромонтажный набор инструментов;
- емкость для замешивания гипса;
- шпатель.
Выбор коронки для перфоратора зависит от материала, с которым приходится работать. Насадки для гипсокартона или того же бетона различаются по эксплуатационным параметрам и, соответственно, по цене.
Нанесение разметки на стену
Удобство установки и подключения розеточной группы во многом зависит от правильности нанесения разметки. Перед началом выполнения работ следует удостовериться в отсутствии под стеной коммуникаций. При работе с гипсокартонной основой важно не попасть на поддерживающий ее профиль.
С помощью линейки, уровня и маркера размечают место, где планируют производить установку. При нанесении разметки ориентируются на то, сколько электроточек включает группа. Перекрестными линиями обозначают центры будущих отверстий.
Галерея изображений
Фото из
Шаг 1 — выбор места установки блока подрозетников
Шаг 2 — использование лазерного или пузырькового уровня
Шаг 3 — обозначение на стене точек монтажа розеток
Шаг 4 — определение точного места посадки каждого подрозетника
В центре будущих отверстий удаляют углубления. Важно следить, чтобы направляющее сверло бурильной коронки не «уходило» в сторону. Маленькая хитрость: поскольку при создании розеточного блока довольно сложно добиться горизонтальности расположения отверстий, для работы можно использовать коронку чуть большего размера диаметром в 80 мм.


Расстояние между центрами подрозетников должно соответствовать 72 мм, иначе при установке декоративной крышки она просто не «сядет» на свое место
Чтобы при скрытой прокладке кабеля впоследствии избежать ошибочного просверливания отверстий, на этапе монтажа лучше сделать чертеж, в котором отобразить расположение проводов.
Способы устройства разводки и прокладки кабеля в квартире подробно изложены в нашего сайта.
Создание штроб и «посадочных» мест
Подготавливая «посадочные» места в бетонной или кирпичной стене, бурение по отмеченным перекрестиям начинают на малых оборотах, не забывая при этом контролировать положение сверла.
Чтобы обеспечить точность монтажа, отверстие сначала намечают сверлом небольшого диаметра. Лишь после этого насаживают коронку, которая делает углубление по контуру будущего «посадочного» места.


Чтобы установить розеточную группу в бетонной или кирпичной стене, необходимо сначала сформировать контуры с помощью коронки, а затем с помощью зубила и молотка изъять середину
Оставшийся в отверстиях стенной материал выдалбливают перфорированным зубилом. После этого между отверстиями прокладывают канавки, необходимые для соединительных выступов .
Планируя выполнить скрытую прокладку провода, по намеченным линиям выдалбливают борозды. При запитке одной из точек блока отдельной линией необходимо от щитка проложить еще одну борозду.
Все отверстия и канавы вычищают от раздробленных кусочков и пыли с помощью кисточки или хлопчатобумажной салфетки. В дальнейшем для защиты РЕ проводника и удобства прокладывания кабель лучше запускать в гофрорукаве.


Если под рукой нет перфоратора – смело используйте болгарку; оснастив прибор алмазным диском, вы сможете при минимуме усилий создать идеально ровные контуры канавок
При желании штробление стен можно выполнить и «дедовским» способом с применением зубила и молотка. Но будьте готовы, что на реализацию этого способа понадобится больше сил и времени. Да и делать углубления зубилом в кирпиче под прокладку кабеля – непростая задача, которая не всегда дает опрятный желаемый результат.
Намного проще работать с гипсокартонной основой. Чтобы сделать посадочные места необходимо лишь с помощью насадки по гипсокартону согласно разметке вырезать круглые штробы. Главное – сильно не нажимать, чтобы не сломать хрупкую основу.
Специфика крепления подрозетников
Для крепления подрозетников удобнее всего использовать специальные стаканы, соединенные между собой пластиковыми фиксаторами. Конструкции стандартных размеров круглой или квадратной формы обеспечивают жесткое скрепление элементов в плоскости.


Переходники в таких подрозетниках чаще всего представляют собой съемные конструкции, которые защелкиваются в специальные пазы
Для фиксации подрозетников в кирпичной кладке или стене используют алебастр или гипсовый раствор. Порошок разводят с водой в пропорции 4:1. При работе с этими сметанообразными составами следует помнить, что они быстро схватываются.
Порошок нужно разводить небольшими порциями и быстро закладывать в отверстие, пока смесь не затвердела. Этим же раствором обмазывают примыкающие к поверхности наружные боковые грани и дно соединенных стаканов, после чего весь блок вставляют в отверстие.
Положение заглубленных стаканов корректируют с помощью уровня, не допуская чтобы выступы краев выходили за пределы плоскости стены.
Убедившись в правильности положения подрозетников, края замазывают жидким раствором, придавая плоскости максимально ровную поверхность. Остатки алебастра или гипса можно использовать на маскирование проложенного к розетке провода.


Пластиковые стаканы заглубляют в посадочные места и фиксируют с помощью гипсового раствора или размещенных по бокам специальных лапок
Монтажные стаканы для гипсокартона дополнительно оснащены специальными лапками. Посредством прижимания к обратной стороне поверхности плиты эти лапки затягивают стакан в отверстие.
Заглубленные в стену подрозетники не должны упираться и выступать за ее пределы. В случае если промежуток между стеной и гипсокартонной плитой недостаточный для размещения подрозетника, отверстие в стене дополнительно углубляют.
Исключение составляет лишь тот вариант, когда предполагается облицовка поверхности плиткой или отделка штукатуркой. В этом случае подрозетник делают немного выступающим за пределы стены на 5-7 мм.
Тонкости подключения электрики
После того, как раствор приобретет желаемую прочность, переходят к подключению внутреннего блока. Чтобы подключить розетки шлейфовым способом, проложенные от распределительной коробки провода заводят в первый подрозетник.
Непосредственно перед этим концы кабеля на 10-15 мм зачищают от плетки. Выполнить работу можно с помощью остро заточенного ножа. Но чтобы добиться максимальной аккуратности, опытные хозяева рекомендуют использовать бокорезы.
Чтобы в дальнейшем иметь возможность при необходимости выполнить новое подключение, мастера рекомендуют при зачистке оставлять небольшой запас питающего кабеля, направленного от распределительной коробки. В процессе монтажа его можно сложить внутри подрозетника в виде спирали большого диаметра либо же в форме змейки.


Главное – не допускать резкий изгиб или перелом, чем нередко «грешат» неопытные хозяева, укладывая провода внутри стакана на “скорую руку”
Заранее подготавливают отрезы разноцветных проводов для создания перемычек. Сечение перемычек должно соответствовать проводниками питающей линии. Проводники перемычки не стоит делать слишком длинными. Иначе в процессе подключения они будут мешать и не позволять розетке плотно «сесть» в монтажную коробку. В отрезанных проводах также зачищают изоляцию приблизительно на сантиметр.
Сквозь переходники предварительно очищенных от остатков гипса полостей подрозетников продевают провода. Для упрощения монтажа концы проводников подгибают в направлении расположения клемм.
С самого розеточного блока снимают защитную крышку, затем на 5-6 мм откручивают зажимные винты. Зачищенный конец фазного провода питающего кабеля подводят к первой розетке с учетом положения клемм. От нее через контакты РЕ проводник и нулевые провода питающего кабеля направляют во вторую розетку.


Подключение остальных розеток осуществляют через перемычки, соединяющие механизмы устройств. Жилы с одинакового цвета оплеткой подключают согласно окраса: фаза – красного цвета, «ноль» – синего, а заземляющий проводник – зеленого
По такому же принципу осуществляют подключение всех последующих розеток. Гнезда с аккуратно уложенными проводами не сильно плотно затягивают винтами. При шлефировании розеток в обязательном порядке соблюдают полярность контактов: от клеммы с фазным проводником отводят фазный, от нулевого – нулевой.

Чтобы жилы проводов надежно попадали в монтажные гнезда, перед установкой болты зажимом откручивают по максимуму, а после его завершения – возвращают в исходное положение
При подключении защитного проводника следует строго соблюдать основное требование ПУЭ, которое гласит, что все соединения этого провода должны быть неразборными. Недооценка важности качества монтажа чревата тем, что при опасном инциденте в разы увеличивается риск поражения электрическим током.
Так, если в головной питающей розетке в процессе монтажа пропадает контакт с землей, следующие за ней участники цепи утрачивают защитный ноль. В дальнейшем при случайном попадании на корпус сетевого напряжения, к примеру, из-за неисправности утюга, под напряжением окажутся корпуса всех подключенных к питающему проводу электроприборов.

Для достижения максимальной надежности соединения проводов лучше использовать розетки, оснащенные не одним болтом, а двумя креплениями
Подрозетники с подключенными жилами к соответствующим клеммам вставляют в стеновые отверстия и закрепляют боковыми зажимами. Затем проверяют надежность установки всех устройств, с помощью уровня корректируют их положение. При необходимости оголенные участки провода обматывают изоляционной лентой или изолируют термоусаживаемой губкой.
После этого остается только «дожать» все саморезы, зафиксировать корпус в подрозетнике и установить на место декоративную крышку.
Пошаговая фотоинструкция:
Галерея изображений
Фото из
Шаг 1 — выведение и зачистка проводов
Шаг 2 — монтаж проводов в клеммы
Шаг 3 — установка корпуса в подрозетник
Шаг 4 — посадка корпуса на крепежные винты
Шаг 5 — монтаж последней в ряду розетки
Шаг 6 — выравнивание розеток по горизонтали
Шаг 7 — протяжка крепежа в «ушках»
Шаг 8 — монтаж декоративной крышки
Если блок подключен правильно, все розетки должны работать, а рамка с подрозетниками не двигаться при использовании.
Выводы и полезное видео по теме
Предложенные нами видео-материалы наглядно помогут понять, как правильно установить блок силовых розеток.
Видео #1. Обустройство подрозетников для розеточной панели:
Видео #2. Инструкция по установке пятирозеточного блока:
Установка розеточного блока по трудоемкости монтажа не намного сложнее подключения обычной или сдвоенной розетки. Проявив внимание и максимальную аккуратность, осуществить монтаж вполне под силу любому хозяину, владеющими лишь базовыми навыками электромонтажных работ.
Хотите рассказать о вашем личном опыте по монтажу и подключению групповых розеток? Есть полезная информация или появились вопросы во время ознакомления со статьей? Пишите, пожалуйста, комментарии в блоке, находящимся ниже.
Как из одной розетки сделать две: варианты устройства проводки
У вас возникла потребность в дополнительных розетках, а капитальный ремонт пока не планируется? Стоимость вызова профессионального электрика высока, а дешевым мастерам вы не доверяете и хотите решить проблему своими силами?
Перспектива страдать без жизненно необходимой электроточки ближайшие годы в ожидании ремонта совсем не привлекает, ведь верно? Но без должного опыта вам сложно сходу разобраться, как из одной розетки сделать две и с чего начинать?
Мы подскажем, как можно решить эту проблему самостоятельно, не прибегая к вызову электрика, — в статье приведены популярные способы установки дополнительной розетки от уже существующей. Рассмотрены необходимые для монтажа инструменты и соответствующие расходные материалы, что могут пригодиться в процессе электромонтажных работ.
Варианты монтажа дополнительной розетки сопровождаются наглядными фотографиями и содержательными видеорекомендациями.
Содержание статьи:
Проводить или нет розетку от розетки?
Вариант с установкой дополнительной розетки поможет избавиться от ссор между членами семьи, которым требуются электроточки для включения различных бытовых приборов.
Особенно остро такая проблема встает на кухне с покупкой новой техники – блендера, мини-комбайна, йогуртницы, хлебопечки, мультиварки и прочих приборов.
Выходит, что существующие розетки уже не справляются со своими обязанностями – их количества физически не хватает для удовлетворения потребностей всех домочадцев. На нашем сайте есть целая статья посвященная выбору и размещению .
Поэтому целесообразным будет решение о проведении дополнительной розетки от уже существующей.

Технически оснащенная кухня нуждается в достаточном количестве точек подключения к электросети. Об этом следует помнить еще на этапе составления дизайн-проекта интерьера будущего помещения
Но тут можно столкнутся с реальной проблемой – не всегда такую задачу возможно выполнить. Существует ряд ограничений, когда категорически нельзя проводить такую модернизацию существующей электросети:
- если нужна розетка для электроплиты;
- когда решили со стиральной машиной подключить бойлер;
- если суммарная мощность приборов более 2,2 кВт.
В домах или квартирах, где владельцы приобрели новую электроплиту взамен старой газовой, потребуется новая розетка для ее подключения. В такой ситуации нельзя от обычной розетки проводить еще одну для включения этого мощного прибора.
Здесь потребуется монтаж отдельной ветки от распределительной коробки, а еще лучше – от щитка. Да и устройство защитного отключения для мощной техники нужно установить. Для того чтобы узнать о правилах подключения розетки для электроплиты рекомендуем прочесть .
Еще один неудачный пример, когда в ванной предусмотрена розетка только для стиральной машины. Но со временем приобрели бойлер. А о том, как правильно расположить и подключить розетки в ванной, читайте .
В одну двойную розетку эти приборы одновременно включать нельзя – проводка может сгореть. Проблематично будет всегда контролировать очередность включения бойлера со стиральной машиной.


Результат перенапряжения сети может быть плачевным – хорошо, когда проблему вовремя обнаружили или сработал автомат и пожара удалось избежать
Также нужно еще до начала работ по установке еще одной розетки просчитать предполагаемую мощность приборов, которые будут одновременно включаться в новый блок розеток.
Часто модернизировать планируют точку подключения к электросети, которую питает провод сечением 1,5-2,5 мм2. Поэтому суммарная мощность приборов может быть чуть более 2 кВт.


Нельзя в такие розетки-соседки, запитанные от одной жилы, включать одновременно посудомоечную машину, духовой шкаф и обогреватель, или бойлер и стиральную машинку
Варианты обустройства двух розеток из одной
Решившись на самостоятельную установку дополнительной электроточки, предстоит изучить, как правильно провести новую розетку от уже существующей розетки, ознакомится с рекомендациями и советами опытных мастеров.
Если нет уверенности в собственных силах, то лучше пригласить электрика, имеющего недюжинный практический опыт за плечами.
При самостоятельном монтаже дополнительной розетки предстоит решить, какой она будет:
- новая точка, удаленная от существующей на пару метров;
- сдвоенная модель вместо одинарной;
- целый блок из 3-6 точек.
В зависимости от индивидуальных потребностей следует выбирать наиболее приемлемый вариант. Если просто не хватает еще одной электроточки для включения всех нужных приборов, то удобнее и проще поставить сдвоенную модель.
Такое решение сможет реализовать даже новичок, не имеющий опыта и особых знаний по электромонтажным работам. Но если с подключением розеток вы сталкиваетесь впервые, рекомендуем для начала изучить следующий материал, в котором приведен пошаговый инструктаж по подключению электроточек.


Для электрической плиты требуется отдельный силовой кабель, способный выдержать большую нагрузку
Когда в комнате переставили диван и поменяли место дислокации телевизора или повзрослевшим детям купили ПК – здесь двойной розеткой не обойдешься. Понадобится поставить дополнительно одну-две новые.
А если потребности в электропотреблении выше, но и толщина сечения провода позволяет – лучше всего поставить блок на 4-6 гнезд. Такое решение сможет гармонично вписаться в интерьер, не нагромождая стены лишними деталями.
Правила проведения розетки от розетки
Разобравшись с нужным , которую предстоит подключить к уже существующей, предстоит приобрести необходимые материалы и взять инструменты, которые пригодятся во время проведения работ. Также предстоит решить вопрос с маскировкой провода.
Правило #1 — правильно прячем провод
Питающий провод, который будет соединять существующую электроточку с устанавливаемой, нужно куда-то спрятать. Это вопрос не только дизайна, но и безопасности эксплуатации помещения.


Хорошо, когда вопрос с еще одной розеткой решается на этапе черновых ремонтных работ. В это время проще всего спрятать провод в штробу
Длина провода и вариант его маскировки будет отличаться в разных случаях. Так, если в помещении скрытая проводка, то прятать предстоит в стену, проделав для этого штробу.
Этот способ крайне затратный – ведь отделка стен может серьезно пострадать. Поэтому в сложных ситуациях, когда в комнате красивый ремонт, выбирают что-то не такое разрушительное – чтобы стены и обои на них не пострадали.
Как вариант, расположить розетку в 15-30 см от пола и спрятать провода в специальный широкий плинтус, который легко поставить своими руками.
Когда же розетка находится над столешницей, здесь удобно использовать двойную модель или разместить рядом вторую. Желательно, чтобы у нее был такой же дизайн и цвет. Провода при таком монтаже замечательно спрячутся за крышками.
Еще один вариант – открытая проводка. Это актуально, если помещение оформлено в стиле ретро – красивое ажурное переплетение проводов, идущих к розеткам и выключателям гармонично перекликается с другими предметами интерьера.
Прятать ничего не нужно, а если понадобиться заменить участок – доступ ничем не затруднен.
Галерея изображений
Фото из
Монтаж проводки открытым способом
Медные трубы поверх деревянной отделки
Провода спрятать внутри подрозетника
Провода утоплены в стену
Правило #2 — тонкости установки двойной модели
Быстрый и простой способ одну розетку превратить в две – снять декоративную накладку, открутить старый рабочий механизм, достав его из подрозетника. Вместо этого предстоит поставить новую розетку на 2 рабочих гнезда.
Она отличается от одиночной 2 посадочными местами, которые способны выдержать суммарный ток до 16 А.
Устанавливается такая модель в один подрозетник. От одиночной ее рабочий механизм отличается наличием 2-х клеммников, разведенных в разные стороны.


Механизм двойной розетки визуально отличается от одиночной модели. Главное, чтобы все провода были подключены правильно
Для установки потребуется:
- отключить электричество во всем доме/квартире;
- убедиться, что дом действительно обесточен;
- снять одиночную розетку, освободив провода из ее рабочего механизма;
- обрезать потрепанные концы оголенных проводов;
- снять изоляцию с кончиков около 1 см;
- вставить коричневый фазный провод в правый контакт механизма;
- вставить синий провод ноля в левый контакт;
- вставить желто-зеленый провод земли в центральный заземляющий контакт;
- все контакты рабочего механизма розетки затянуть отверткой;
- провода согнуть гармошкой в подрозетнике и вставить поверх рабочий механизм;
- зафиксировать все саморезами;
- надеть декоративную крышку розетки и затянуть крепежный винт по центру.
После завершения работы по превращению одной розетки в 2 предстоит проверить ее работоспособность. Если все работает, можно включать электричество в квартире/доме. Более подробно о подключении двойной розетки в один подрозетник можно прочесть в этом материале.
Правило #3 — нюансы монтажа новой розетки рядом
Вариант с установкой новой электроточки на определенном расстоянии от существующей потребует больше времени и усилий. Здесь, как и в предыдущем варианте, предстоит обесточить дом/квартиру и только потом приступать к работам.


Чтобы убедиться, что коричневый провод – это фаза, можно использовать специальную индикаторную отвертку. При соприкосновении с фазой ее лампочка загорается
Далее нужно отметить место будущей дислокации. Теперь нужно разобрать старую розетку, вынув ее механизм. Предстоит шлейфовым способом к ней питающий провод для новой розетки.
Крепление проводов осуществляется так же, как и для двойной розетки. Одно отличие – в каждый контакт вставляется по 2 одинаковых провода, а крепления затягиваются отверткой. Чтобы получить шлейф.
Провод земли предстоит раздвоить – присоединить 2 желто-зеленых куска, в месте соединения поставить гильзу, опрессовать пресс-клещами, сверху надеть термоусаживающую трубку для изоляции.
Одно ответвление вставится в механизм старой розетки, а второе – новой. Питающая жила из 3-х проводов наращивается до нужной длины.


Для соединения двух отрезков провода можно использовать специальный колпачок – такое соединение надежное, но для его удаления придется откусить часть провода
В стене делается отверстие для установки подрозетника – стену придется сверлить. Затем питающий провод продевается внутрь, а стакан фиксируется алебастровой смесью. Осталось подключить рабочий механизм розетки – действия такие же, как и для двойной розетки.
После установки декоративной крышки останется спрятать или замаскировать провод, используя наиболее подходящий для этого вариант.
Правило #4 — особенности подключения блока
Когда толщина магистральной жилы достаточная, а потенциальные приборы, которые будут питаться от будущих розеток, обладают умеренной мощностью, можно вместо одной старой розетки соорудить блок розеток в модульной рамке. Это может быть 2 подряд, 3, 4, 5 или 6 штук.
Чтобы придать такому блоку эстетичный вид, покупают декоративную модульную рамку. Причем, цвет и материал можно подобрать согласно личным предпочтениям.
Для подключения этого варианта розеток предстоит сначала обесточить помещение. А лучше и всю квартиру/дом.

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


После установки важно проверить работоспособность новой розетки – лампочка должна зажечься
Теперь можно включать питание – все работы завершены. При таком варианте проведения еще одной розетки провода прятать не нужно, ведь они все уместятся в подрозетниках. Рекомендуем вам прочесть более подробно о подсоединении блока розеток .
Ошибки при проведении розетки
И хотя проведение дополнительной розетки является несложным заданием, новички часто допускают ошибки. Такое досадное недоразумение, как неправильный монтаж новой электроточки, способно обернуться крупными неприятностями.
Поэтому важно обратить особое внимание на наиболее распространенные ошибки и постараться их избежать.
Во-первых, нужно использовать провод для подключения новой розетки такой же толщины, что у существующей. В противном случае о корректной работе и речи быть не может.
Во-вторых, желательно использовать провода из одного материала – если розетка запитана медным проводом, то вторую от нее следует проводить тоже с применением медного провода такого же диаметра.
Галерея изображений
Фото из
Розетка с заземлением: монтаж, подключение и проверка
Все электроприборы в квартире должны включаться в современные розетки. Это помогает обеспечить безопасность и предотвратить короткое замыкание и пожар. Розетка с заземлением может устанавливаться своими руками, если соблюдать советы.
Что такое заземление
Под заземлением понимают намеренное соединение электрической установки или точки сети с заземляющим устройством. Розетки в частных домах, квартирах и на предприятиях давно являются заземленными. Раньше такие устройства называли «евророзетками» — технология зародилась в Европе.
Реализуемые в магазинах розетки имеют три клеммы — фазу, ноль (нейтраль), землю (трехполюсные устройства). Проводка в новостройках делается трехжильной по требованиям безопасности. Двухжильная проводка осталась в старых квартирах, на дачах, но и она активно заменяется современной. Разница между старыми и новыми розетками — в наличии третьего провода «земля».
Цели заземления в доме
Предназначение заземления — в снижении опасности короткого замыкания и обеспечении комфортных условий жизни человека. У каждого электроприбора есть корпус и изоляция электрических проводов, они не дают электрическому току нанести вред человеку. При нарушении целостности изоляции есть риск появления напряжения, способного вызвать электрический удар. Заземление не допустит таких последствий.
к содержанию ↑Достоинством розетки является то, что заземляющие контакты первыми начинают работать, позже включаются проводящие ток элементы. Если в сети есть неполадки, электроснабжение изделия будет прекращено. Поставить изделие с заземляющим контактом — значит защитить электроприборы от скачков напряжения, которые могут повредить технику.
Особенности монтажа
Когда человек проживает в новой квартире, доме, жилье построено с учетом требований безопасности, электрические кабели в нем трехжильные. Подсоединить розетку будет несложно. Но при отсутствии третьего контакта придется заземлять провод — надо обратиться в управляющую компанию и пригласить специалистов. Меньшие расходы понесут жильцы верхних этажей.
Как провести заземление к розетке: варианты
В квартире, где заземление не предусмотрено, возможно проведение его двумя способами:
- Протянуть шину из жилья к распределительному щиту на лестничной площадке. Это делается медной проволокой.
- Установить зануление, заменив им заземление. Под занулением понимают подключение контакта «земля» к контакту «ноль». Такой метод подключения может быть опасным.
Если в квартире есть распределительная коробка, следует подвести кабель к ней или к щитку, фазу и ноль завести за устройство, а на выходе развести провода по местам постановки розеток.
к содержанию ↑Расположение фазы и ноля
Чтобы правильно и безопасно выполнить работы по монтажу розетки с заземлением, важно определить нахождение фазы и ноля. Перед началом поиска нужно отключить автоматы, чтобы обесточить линию или всю квартиру. Далее при помощи специальной отвертки выявляется фаза (лампочка или неоновый индикатор подсвечиваются) и ноль (света нет). Между ними будет находиться заземляющий провод.
Демонтировав старое устройство, можно выявить расположение фазы и нейтрали по цвету. Не перепутать их нахождение поможет окраска провода:
- у ноля — синий, сине-белый;
- у фазы — черный, красный или коричневый;
- у заземления — желто-зеленый.
Четкого предписания, где будет находиться фаза и ноль, нет — их можно менять местами. Важно правильно закрепить провод «земля» на верхней или центральной клемме, а к двум оставшимся прикреплять фазу и нейтраль в произвольном порядке, чтобы замкнуть контур.
Запрещается устанавливать перемычку к клемме заземления от нейтрали — это опасно для жизни из-за риска попадания фазного напряжения на блок розетки!
к содержанию ↑Подключение проводов: специфика
В качественных изделиях провода крепко зажимаются специальными клеммами и не выпадают, но иногда приходится разбирать их и подкручивать крепежные элементы. Есть надежный способ свести работу к минимуму.
Необходимо согнуть зачищенные от изоляции провода в колечки 0,5 см в диаметре, подвести их под верх болтов. Так контакты будут незначительно греться, а зона касания защитных контактов и токопроводящих элементов станет максимальной.
к содержанию ↑Место для розетки
Прежде чем сделать заземление розетки и установить ее, нужно определиться с местом расположения устройства. Оно будет зависеть от предполагаемых для эксплуатации приборов. Часто ставят устройство на 30 см от плинтуса, но индивидуальные потребности тоже нужно учитывать.
Если для установления новой розетки придется повредить обои, стоит ставить ее у плинтуса для пускания по нему кабелей (подобное положение устройства будет неудобным). Для комнаты среднего размера достаточно 3–4 гнезд.
Розетки бывают наружными и внутренними. Первые выпирают над поверхностью стены, вторые «утапливаются» в стену полностью. Это следует учесть при выборе места их положения. Проще всего монтировать изделия на этапе ремонта — так можно избежать грязи, пыли, неудобств.
к содержанию ↑Монтирование розетки
Установка розетки с заземлением со скрытой проводкой начинается с монтажа пластикового подрозетника, который следует приобрести отдельно. Также надо проверить сечение кабеля в стене и проводов в приобретенном изделии — они должны быть одинаковыми! Порядок монтажа устройства таков:
- Обесточить квартиру путем выключения автомата или выкручивания пробок.
- Отметить на стене место для подрозетника (стакана) карандашом.
- Сделать нишу с нужными размерами перфоратором.
- Замесить небольшое количество гипса (цемента, алебастра).
- Зафиксировать пластиковый стакан в нише гипсом, закрепить проводку.
- Через 20 минут закрутить крепежные болты на стакане.
Далее подготовить кабели — их требуется на 7–10 см разделить на отдельные жилки, концы на 0,5 см зачистить от изоляции. Современные розетки оснащены контактами со специальными зажимами, монтировать их несложно. Следует подключить каждый провод к соответствующему питающему проводу (согласно схеме).
После подключения розетки с заземлением следует ее рабочую часть прикрутить саморезами к установленному ранее стакану. Провода скрыть в стакане. В окончание работы прикручивают крышку. Если устройство будет расположено рядом с плинтусом, лучше сразу купить защитные заглушки — они защитят отверстия розетки от попадания воды во время мытья пола.
к содержанию ↑Розетка открытой проводки
Если приходится заземлять розетку открытой проводки, нужно учитывать ее особенности. У изделий накладного типа внутренняя планка имеет отверстия для крепления. Для ровного расположения устройства надо снять крышку, сделать отметки для дюбелей и аккуратно высверлить дырки. В них вставить дюбели по 2,5 см и пробки на 5 мм.
Способы проверки заземления
Крепкое присоединение устройства с заземлением не всегда обеспечивает его эффективную работу. Начинающий мастер мог ошибиться и неправильно соединить контакты. Для проверки следует удостовериться индикаторной отверткой, что фаза не подключена к заземлению. После прикладывания отвертки к фазе нужно прижать к сенсору изолированный провод. Если появляется яркий сигнал, заземление присутствует.
Запрещается касаться металлических деталей руками, пока идет проверка правильности установки розетки!
Самым надежным методом оценки качества работы является проверка ее специальными приборами, которые есть у электриков. При замерении напряжения вольтметром между заземлением и фазой, между фазой и нейтралью появляется показатель 220 вольт.
к содержанию ↑Монтаж розетки с заземляющим проводом
Когда в старом доме выполнялся современный ремонт, специалисты могли провести заземляющий провод, установить розетки, при этом кабель «земля» не был подключен. Нередкими бывают ситуации, когда во всем многоквартирном доме проводится улучшение электропроводки, и тогда кабель может стать востребованным.
Подобная ситуация значительно облегчает работу по монтажу розетки — важно только верно подсоединить все провода, соблюдая схему. Действия должны быть такими:
- Обесточить квартиру.
- Снять крышку со старой розетки, раскрутить крепления, вытащить рабочую часть устройства.
- Прикрутить новое устройство с заземляющим контактом (или закрепить старую, но начав с прикрепления заземления).
- Проверить правильность работы заземления индикаторной отверткой.
Заземление двойной розетки
Если двойная розетка предполагает применение одного общего подрозетника, то действия монтера по ее установке будут аналогичными. Заземляющий контакт, фаза и ноль подключаются по той же схеме, что и для одиночных розеток. Но когда двойную розетку делают из двух одинарных, порядок действий иной.
Разница в том, что блок розеток желательно скрепить между собой специальным шлейфом, а провода будут идти к следующей розетке от предыдущей. При нарушении работы провода в одном устройстве все последующие работать прекращают.
Чтобы не допустить этого, нужно проложить заземляющий кабель одним куском до самой крайней точки подключения. Напротив предыдущих розеток делают скрутки, а от них заземление будет направляться на соответствующие контакты.
к содержанию ↑Отсутствие заземляющего провода
Случается, что в старом доме заземляющий кабель уже подведен к общему щитку, а в квартире он отсутствует. Единственный выход — прокладка кабеля в квартире, что придется совмещать с ремонтом. Внешняя проводка кабеля будет неудобной. Лучше в целях комфорта и собственной безопасности заменить всю проводку в квартире. Если же заземляющей шины в щитке не предусмотрено, придется объединяться с другими жильцами и писать заявление на проведение кабеля.
Розетка с заземлением: монтаж, подключение и проверка
Схема подключения блока розеток с заземлением
У многих электриков-самоучек возникает вопрос, как правильно подключить несколько розеток подряд, имея один силовой кабель в стене. На самом деле ничего сложного нет, а подсоединение осуществляться шлейфом, если конечно в блок Вы не собираетесь подключать очень мощных потребителей электроэнергии – электроплиту либо котел. Далее мы рассмотрим несколько типовых схем подключения блока розеток с заземлением к сети 220 Вольт!
Итак, первая и наиболее простая электрическая схема подключения выглядит следующим образом:
Как Вы видите, ситуация наиболее популярная – вводной кабель выводится в первый подрозетник, а оттуда уже перемычками все корпуса соединяются друг с другом: фаза с фазой, ноль с нулем, заземление с заземлением. Если Вам нужно подключить варочную панель либо другой, мощный потребитель, лучше воспользоваться следующей схемой подключения розеток в блоке:
Как Вы видите, для мощного электроприбора лучше вынести отдельную точку подключения и установить ее рядышком с блоком. С виду такой вариант подсоединения не будет отличаться от обычного, но зато не возникнет опасной ситуации и корпуса «электрических точек» не расплавятся из-за высокой токовой нагрузки на проводку.
Если же у Вас розетка, соединенная с выключателем света, тут уже разводка провода будет немного другой, нужно будет самому сделать перемычку для фазы и подключить ее к соответствующим клеммам. Схема подключения блока розетка и двойной выключатель выглядит примерно так:
Если в Вашем случае одноклавишная модель, схема не поменяется, просто на выходе из выключателя будет один провод, а не два. Наглядно увидеть процесс монтажа Вы можете на видео ниже:
Подсоединение шлейфом
Альтернативный вариант разводки проводов
Надеемся, что предоставленные варианты подсоединения блока розеток были для Вас полезными и пригодились в электромонтажных работах. Советуем также ознакомиться с инструкцией по подключению евророзетки с заземлением!
Принципыдля обработки тысяч соединений в Java с использованием Netty
Проблема C10K — это термин, обозначающий десять тысяч одновременной обработки соединений. Чтобы добиться этого, нам часто необходимо вносить изменения в настройки созданных сетевых сокетов и настройки ядра Linux по умолчанию, отслеживать использование буферов отправки / получения и очередей TCP, и, в частности, настраивать наше приложение так, чтобы оно было хороший кандидат для решения этой проблемы.
В сегодняшней статье я собираюсь обсудить общие принципы, которым необходимо следовать, если мы хотим создать масштабируемое приложение, способное обрабатывать тысячи соединений.Я буду ссылаться на внутреннее устройство Netty Framework, TCP и Socket, а также на некоторые полезные инструменты, если вы хотите получить представление о своем приложении и базовой системе.
Вам также может понравиться: Модели программирования для серверов на Java
Заявление об отказе от ответственности : Я буду немного педантичен в отношении памяти, потому что, если мы хотим умножить наш поток обработки на количество соединений (10 000>), то каждый килобайт в одном конвейере обработки соединений становится очень дорогим 🙂
Принцип 1. Сделайте свое приложение подходящим для решения проблемы C10K
Как мы упоминали выше, когда нам нужно максимально использовать ЦП с минимальным переключением контекста и малым объемом памяти, тогда вам нужно поддерживать количество потоков в вашем процессе очень близко к количеству процессоров, выделенных для данное приложение.
Имея это в виду, единственное возможное решение — выбрать некоторую неблокирующую бизнес-логику или бизнес-логику, которая имеет очень высокое соотношение времени обработки CPU / IO (но это уже становится рискованным).
Иногда бывает не так просто определить это поведение в стеке вашего приложения. Иногда вам нужно будет переупорядочить свои приложения / код, добавить дополнительную внешнюю очередь (RabbitMQ) или тему (Kafka), чтобы изменить вашу распределенную систему, чтобы иметь возможность буферизовать задачи и иметь возможность разделять неблокирующий код из код, который нельзя легко переопределить с помощью неблокирующих методов (например,грамм. использование драйвера JDBC, в настоящее время нет официального неблокирующего драйвера для реляционных баз данных — насколько мне известно, работа над ADBC - Asynchronous Database Access API — уже остановлена).
Однако, согласно моему опыту, мой код стоит переписать и сделать его более неблокирующим по этим причинам:
Я разделил свое приложение на два разных приложения, которые, скорее всего, не используют одни и те же стратегии развертывания и проектирования, даже если они используют один и тот же «домен» (например.грамм. одна часть приложения — это конечная точка REST, которая может быть реализована с использованием HTTP-сервера на основе пула потоков, а вторая часть — это потребитель из очереди / темы, который что-то записывает в БД с помощью неблокирующего драйвера).
Я могу масштабировать количество экземпляров этих двух частей по-разному, потому что, скорее всего, нагрузка / процессор / память абсолютно разные.
Что может означать, что мы используем подходящие инструменты для такого рода приложений:
Мы стараемся минимизировать количество потоков.Не забудьте проверить не только потоки вашего сервера, но и другие части вашего приложения: потребитель очереди / темы, настройки драйвера БД, настройки ведения журнала (с асинхронным микропакетированием). Всегда делайте дамп потока, чтобы увидеть, какие потоки созданы в вашем приложении и сколько (не забудьте сделать это под нагрузкой, иначе ваши пулы потоков не будут полностью инициализированы, многие из них создают потоки лениво). Я всегда называю свои собственные потоки из пула потоков (гораздо проще найти жертву и отладить код).
Помните о блокировке вызовов HTTP / DB к другим службам, мы можем использовать реактивные клиенты, которые автоматически регистрируют обратный вызов для входящего ответа. Рассмотрите возможность использования протокола, который больше подходит для связи сервис-2-сервис, например, . RSocket.
Убедитесь, что ваше приложение содержит постоянно небольшое количество потоков. Это относится к тому, имеет ли ваше приложение ограниченные пулы потоков и может ли оно выдерживать заданную нагрузку.
Если в вашем приложении несколько потоков обработки, всегда проверяйте, какие из них блокирующие, а какие неблокирующие. Если количество блокирующих потоков является значительным, вам нужно, чтобы почти каждый запрос (по крайней мере, часть потока обработки, где используется блокирующий вызов) обрабатывался в другом потоке (из предопределенного пула потоков), чтобы освободить поток цикла событий для следующего подключения (подробнее в следующей главе).
В этом случае рассмотрите возможность использования HTTP-сервера на основе пула потоков с рабочими, где все запросы помещаются в другой поток из очень огромного пула потоков для увеличения пропускной способности — нет другого пути, если мы не можем избавиться блокировки звонков .
Принцип 2: Кэш-соединения, а не потоки
Этот принцип тесно связан с темой моделей программирования для HTTP-сервера. Основная идея состоит в том, чтобы не связывать соединение с одним потоком, а использовать некоторые библиотеки, которые поддерживают немного сложный, но гораздо более эффективный подход к чтению из TCP.
Это не значит, что TCP-соединение абсолютно бесплатно. Наиболее важной частью является TCP Handshake . Следовательно, вы всегда должны использовать Persistent Connection ( keep-alive ).Если бы мы использовали одно TCP-соединение только для отправки одного сообщения, мы бы оплатили 8 сегментов TCP (соединение и закрытие соединения = 7 сегментов).
Принятие нового TCP-соединения
Если мы находимся в ситуации, когда мы не можем использовать постоянное соединение, то, скорее всего, мы создадим множество соединений за очень короткий период времени. Эти созданные соединения должны быть поставлены в очередь и ждать принятия нашего приложения.
На картинке выше мы видим резервы SYN и LISTEN .В SYN Backlog, мы можем найти соединения, которые просто ждут подтверждения с помощью TCP Handshake . Однако в LISTEN Backlog, у нас уже есть полностью инициализированные соединения, даже с TCP Send / Receive Buffers , которые просто ждут, чтобы их приняло наше приложение.
Прочтите SYN Flood DDoS Attack, если вы хотите узнать больше, почему нам действительно нужны два невыполненных отчета.
На самом деле существует одна проблема, если мы находимся под нагрузкой и имеем много входящих подключений, наши потоки приложений, которые отвечают за прием подключений, могут быть заняты другой работой — выполнением операций ввода-вывода для уже подключенных клиентов.
Во фрагменте кода выше (API конфигурации Netty Server) мы видим БобышкаEventLoopGroup
и workerEventLoopGroup
. Пока workerEventLoopGroup
по умолчанию создается с # процессоров * 2 потока / цикла событий для выполнения операций ввода-вывода,
Бобышка EventLoopGroup
содержит один поток для приема новых подключений. Netty позволяет иметь только одну группу для обоих действий, но в этом случае прием новых подключений может зависнуть из-за выполнения ввода-вывода или выполнения более длительных операций в Обработчики каналов
. Если мы столкнемся с проблемой полного LISTEN Backlog, то мы можем увеличить количество потоков в bossEventLoopGroup
. Мы можем очень легко проверить, способен ли наш процесс выдерживать нагрузку входящих соединений. Я модифицировал наше тестовое приложение Websocket-Broadcaster для подключения 20000 клиентов и многократно выполнял эту команду:
$ ss -plnt sport =: 8081 | кот
Состояние Recv-Q Send-Q Local Address: Port Peer Address: Port
СЛУШАТЬ 42128 *: 8081 *: * users: (("java", pid = 7418, fd = 86))
$ ss -plnt sport =: 8081 | кот
Состояние Recv-Q Send-Q Local Address: Port Peer Address: Port
СЛУШАТЬ 0 128 *: 8081 *: * users: (("java", pid = 7418, fd = 86))
$ ss -plnt sport =: 8081 | кот
Состояние Recv-Q Send-Q Local Address: Port Peer Address: Port
СЛУШАТЬ 20128 *: 8081 *: * users: (("java", pid = 7418, fd = 86))
$ ss -plnt sport =: 8081 | кот
Состояние Recv-Q Send-Q Local Address: Port Peer Address: Port
СЛУШАТЬ 63128 *: 8081 *: * users: (("java", pid = 7418, fd = 86))
$ ss -plnt sport =: 8081 | кот
Состояние Recv-Q Send-Q Local Address: Port Peer Address: Port
СЛУШАТЬ 0 128 *: 8081 *: * users: (("java", pid = 7418, fd = 86))
Буферы отправки / получения TCP
Однако, когда ваше соединение готово, самые жадные части — это TCP Send / Receiver Buffers , которые используются для передачи байтов, записанных вашим приложением, в базовый сетевой стек.Размер этих буферов можно установить через приложение:
Дополнительные сведения о параметрах сокета в Java см. В StandardSocketOptions класс. Новые версии Linux могут автоматически настраивать буферы для достижения оптимального размера для текущей нагрузки в сотрудничестве с окном перегрузки TCP.Считайте размер буфера TCP перед любым изменением размера. Буферы большего размера могут привести к бесполезной трате памяти, с другой стороны, буферы меньшего размера могут затруднить работу приложения чтения или записи, потому что не будет места для передачи байтов в / из сетевого стека.
Почему кеширование потоков — плохая идея?
Сколько памяти наша «микро» сервис должен обрабатывать тысячи подключений, если мы используем соединение на поток Стратегия или более крупные пулы потоков для обработки блокирующей бизнес-логики.
Java Thread — довольно дорогой объект, потому что он однозначно сопоставлен с потоком ядра (будем надеяться, что проект Loom придет рано, чтобы нас спасти). В Java мы можем ограничить размер стека потока с помощью параметра -Xss , который по умолчанию установлен на 1 МБ.Это означает, что один поток занимает 1 МБ виртуальной памяти, но не выделенной памяти.
Реальный RSS (размер резидентного набора) равен текущему размеру стека; память не полностью выделяется и не отображается в физическую память в самом начале (это очень часто неправильно понимается, как показано в этом сообщении: Сколько памяти занимает поток Java?). Обычно (по моему опыту) размер потока составляет сотни килобайт (200-300 КБ), если мы действительно не используем какие-то жадные фреймворки или рекурсию.Этот вид памяти принадлежит Родной Памяти; мы можем отследить это в Native Memory Tracking .
Еще одна проблема с большим количеством потоков — это огромный Root Set . Например, у нас есть 4 процессора и 200 потоков. В этом случае мы по-прежнему можем запускать только 4 потока в данный момент времени, но если все 200 потоков уже заняты обработкой некоторого запроса, мы платим невероятно высокую цену за объекты, которые уже размещены в Java Heap, но не могут сделать никаких прогресс, потому что данный поток ожидает процессорного времени.Все объекты, которые уже были выделены и все еще используются, являются частью Live Set (достижимые объекты, которые необходимо пройти во время цикла сборки мусора и которые не могут быть собраны).
Почему Root Set — это так важно?
Принцип 3: Прекратите генерировать мусор
Если вы действительно хотите написать приложение, которое будет находиться под большой нагрузкой, тогда вам нужно подумать о распределении
Чтение 21: Сокеты и сети
В этом чтении мы исследуем клиент / серверное взаимодействие по сети используя абстракцию socket .
Сетевое взаимодействие по своей природе является параллельным, поэтому для создания клиентов и серверов нам потребуется продумать их параллельное поведение и реализовать их с безопасностью потоков.Мы также должны разработать проводной протокол , который клиенты и серверы используют для связи, точно так же, как мы проектируем операции, которые клиенты ADT используют для работы с ним.
Некоторые операции с сокетами блокируют : они блокируют выполнение потока до тех пор, пока не вернут результат. Блокировка упрощает написание некоторого кода, но также предвещает появление нового класса ошибок параллелизма, с которыми мы скоро будем серьезно бороться: взаимоблокировки.
В этом чтении (и в наборе задач) мы исследуем шаблон проектирования клиент / сервер для связи с передачей сообщений.
В этом шаблоне есть два типа процессов: клиенты и серверы. Клиент инициирует обмен данными, подключившись к серверу. Клиент отправляет запросы на сервер, а сервер отправляет ответы обратно. Наконец, клиент отключается. Сервер может обрабатывать соединения от многих клиентов одновременно, а клиенты также могут подключаться к нескольким серверам.
Многие интернет-приложения работают следующим образом: веб-браузеры являются клиентами для веб-серверов, почтовая программа, такая как Outlook, является клиентом для почтового сервера и т. Д.
В Интернете клиентские и серверные процессы часто выполняются на разных машинах, подключенных только к сети, но это не обязательно так — сервер может быть процессом, выполняющимся на том же компьютере, что и клиент.
IP-адреса
Сетевой интерфейс идентифицируется IP-адресом. Адреса IPv4 — это 32-битные числа, записанные четырьмя 8-битными частями. Например (на момент написания):
18.9.22.69
— это IP-адрес веб-сервера MIT.Каждый адрес, первый октет которого равен18
, находится в сети MIT.18.9.25.15
— адрес обработчика входящей электронной почты MIT.173.194.123.40
— это адрес веб-сервера Google.127.0.0.1
— это адрес обратной связи или локального хоста: он всегда относится к локальной машине. Технически любой адрес, первый октет которого равен127,
, является адресом обратной связи, но127.0.0.1
является стандартным.
Вы можете запросить у Google ваш текущий IP-адрес. Обычно, когда вы носите с собой ноутбук, каждый раз, когда вы подключаете его к сети, ему будет назначаться новый IP-адрес.
Имена хостов
Имена хостов — это имена, которые можно преобразовать в IP-адреса. Одно имя хоста может отображаться на разные IP-адреса в разное время; и несколько имен хостов могут отображаться на один и тот же IP-адрес. Например:
web.mit.edu
— это имя веб-сервера MIT. Вы можете перевести это имя в IP-адрес самостоятельно, используяdig
,host
илиnslookup
в командной строке, например:$ копать + короткий web.mit.edu 18.9.22.69
dmz-mailsec-scanner-4.mit.edu
— это название одной из машин MIT для фильтрации спама, отвечающих за обработку входящей электронной почты.google.com
— именно то, что вы думаете.Попробуйте использовать одну из приведенных выше команд, чтобы найти IP-адресgoogle.com
. Что ты видишь?localhost
— это имя для127.0.0.1
. Если вы хотите поговорить с сервером, работающим на вашем собственном компьютере, поговорите сlocalhost
.
Преобразование имен хостов в IP-адреса — это работа системы доменных имен (DNS). Это супер круто, но не в нашей сегодняшней дискуссии.
Номера портов
На одной машине может быть несколько серверных приложений, к которым клиенты хотят подключаться, поэтому нам нужен способ направлять трафик на одном и том же сетевом интерфейсе различным процессам.
Сетевые интерфейсы имеют несколько портов, идентифицируемых 16-битным числом от 0 (которое зарезервировано, поэтому мы фактически начинаем с 1) до 65535.
Серверный процесс привязывается к определенному порту — теперь прослушивает на этом порт. Клиенты должны знать, какой номер порта прослушивает сервер. Есть несколько хорошо известных портов, которые зарезервированы для процессов системного уровня и предоставляют стандартные порты для определенных служб. Например:
- Порт 22 — стандартный порт SSH.Когда вы подключаетесь к
athena.dialup.mit.edu
с помощью SSH, программа автоматически использует порт 22. - Порт 25 — стандартный порт почтового сервера.
- Порт 80 — это стандартный порт веб-сервера.
Когда вы подключаетесь к URL-адресу
http://web.mit.edu
в своем веб-браузере, он подключается к18.9.22.69
через порт 80.
Если порт не является стандартным, он указывается как часть адреса.
Например, URL-адрес http://128.2.39.10:9000
относится к порту 9000 на машине по адресу 128.2.39.10
.
Когда клиент подключается к серверу, это исходящее соединение также использует номер порта на сетевом интерфейсе клиента, обычно выбираемый случайным образом из доступных не -хорошо известных портов.
Сетевые сокеты
Сокет представляет собой один конец соединения между клиентом и сервером.
Прослушивающий сокет используется серверным процессом для ожидания подключений от удаленных клиентов.
В Java используйте
ServerSocket
для создания слушающего сокета и используйте его методaccept
для его прослушивания.Подключенный сокет может отправлять и получать сообщения от процесса на другом конце соединения. Он идентифицируется как локальным IP-адресом, так и номером порта, а также удаленным адресом и портом, что позволяет серверу различать одновременные подключения с разных IP-адресов или с одного и того же IP-адреса на разных удаленных портах.
В Java клиенты используют конструктор
Socket
для установления соединения сокета с сервером.Серверы получают подключенный сокет как объектSocket
, возвращенный изServerSocket.accept
.
Буферы
Данные, которыми клиенты и серверы обмениваются по сети, отправляются фрагментами. Это редко бывает просто кусками размером в байты, хотя может быть. Отправляющая сторона (клиент, отправляющий запрос или сервер, отправляющий ответ) обычно записывает большой фрагмент (может быть, целая строка, такая как «HELLO, WORLD!» Или, может быть, 20 мегабайт видеоданных).Сеть разбивает их на пакеты, и каждый пакет маршрутизируется отдельно по сети. На другом конце получатель повторно собирает пакеты вместе в поток байтов.
Результатом является периодическая передача данных — данные могут уже быть там, когда вы хотите их прочитать, или вам, возможно, придется подождать, пока они придут и будут повторно собраны.
Когда данные поступают, они попадают в буфер , массив в памяти, который хранит данные до тех пор, пока вы их не прочитаете.
Упражнения по чтению
Буфер сокета клиент-сервер *
Вы разрабатываете новую программу веб-сервера на своем собственном ноутбуке.Вы запускаете сервер, работающий на порте 8080.
Заполните поля для URL-адреса, который вы должны посетить в своем веб-браузере, чтобы поговорить с вашим сервером:
__A__: // __ B__: __C__
__A__
80,8080 , http, localhost, loopback, веб-сервер (отсутствует ответ)
__B__
80,8080, http, localhost, loopback, веб-сервер (отсутствует ответ)
__C__
80,8080, http, localhost, loopback, веб-сервер (отсутствует ответ)
Адрес сетевого наполнителя имени хоста *
Подключенный сокет идентифицируется по:* см. Что делать, если Dr.Сьюз писал технические статьи? , хотя проблема, описанная в первом абзаце, больше не актуальна с устареванием дисководов для гибких дисков.
Потоки
Данные, входящие в сокет или исходящие из него, представляют собой поток размером байтов.
В Java объекты InputStream
представляют источники данных, поступающих в вашу программу.
Например:
OutputStream
объекты представляют собой приемники данных, места, в которые мы можем записывать данные.
Например:
В Руководствах по Java прочтите:
- Потоки ввода-вывода до включительно из командной строки (8 страниц)
Что касается сокетов, помните, что выход одного процесса — это вход другого процесса.Если Алиса и Боб имеют соединение через сокет, у Алисы есть выходной поток, который поступает во входной поток Боба, и , наоборот, .
Блокировка означает, что поток ожидает (не выполняя дальнейшей работы), пока не произойдет событие. Мы можем использовать этот термин для описания методов и вызовов методов: если метод является блокирующим методом , то вызов этого метода может блокировать блок , ожидая, пока не произойдет какое-либо событие, прежде чем оно вернется к вызывающей стороне.
Потоки ввода / вывода сокета проявляют поведение блокировки:
- Когда буфер входящего сокета пуст, вызов
читает блоки
до тех пор, пока данные не станут доступными. - Когда буфер целевого сокета заполнен, вызов
записывает
блоков, пока не освободится место.
Блокирование очень удобно с точки зрения программиста, потому что программист может писать код так, как будто вызов read
(или write
) будет работать всегда, независимо от времени поступления данных.
Если данные (или для запись
, пространство) уже доступны в буфере, вызов может вернуться очень быстро.
Но если чтение или запись не удается, вызов блокирует .Операционная система заботится о деталях задержки этого потока до тех пор, пока чтение
или запись
может быть успешным.
Блокирование происходит во время параллельного программирования, а не только при вводе-выводе (обмен данными в процессе и из процесса, возможно, по сети, или в / из файла, или с пользователем в командной строке или графическом интерфейсе,…). Параллельные модули не работают синхронно, в отличие от последовательных программ, поэтому им обычно приходится ждать, пока друг друга догонят, когда требуются скоординированные действия.
В следующем чтении мы увидим, что это ожидание приводит к возникновению второго основного вида ошибок (первым из которых были условия гонки) в параллельном программировании: тупик , когда модули ждут друг друга, чтобы что-то сделать, поэтому нет из них может добиться любого прогресса. Но это в следующий раз.
Убедитесь, что вы прочитали о потоках по ссылке выше на Руководство по Java, затем прочтите о сетевых сокетах:
В Руководствах по Java прочтите:
Это чтение описывает все, что вам нужно знать о создании серверных и клиентских сокетов, а также о записи и чтении из их потоков ввода-вывода.
На второй странице
В этом примере используется синтаксис, которого мы не видели: оператор try-with-resources. Этот оператор имеет вид:
попробуйте (
) {
} ловить(...) {
}
На последней странице
Обратите внимание, как ServerSocket.accept ()
и in.readLine ()
блокируют .
Это означает, что серверу потребуется нового потока для обработки ввода-вывода с каждым новым клиентом.
Пока клиентский поток работает с этим клиентом (возможно, заблокирован при чтении или записи), другой поток (возможно, основной поток) заблокирован, ожидая, пока примет
новое соединение.
К сожалению, их многопоточная реализация Knock Knock Server создает этот новый поток путем подкласса Thread
.
Это , а не рекомендуемая стратегия.
Вместо этого создайте новый класс, который реализует Runnable
, или используйте анонимный Runnable
, который вызывает метод, в котором это клиентское соединение будет обрабатываться, пока оно не будет закрыто.
Не используйте extends Thread
.
Упражнения по чтению
Сетевые сокеты 1
Алиса подключила сокет к Бобу.Как она отправляет сообщение Бобу?
Сетевые сокеты 2
Какие из них необходимо знать клиенту для подключения к серверу и связи с ним?
Echo echo echo echo
В примере EchoClient, какой из них может блокировать ?
И что в EchoServer может блокировать ?
Block block block block
Поскольку BufferedReader.readLine ()
— это метод блокировки , какой из них истинен:
Теперь, когда у нас есть клиент и сервер, подключенные к сокетам, что они передают туда и обратно через эти сокеты?
Протокол — это набор сообщений, которыми могут обмениваться две взаимодействующие стороны.В частности, проводной протокол представляет собой набор сообщений, представленных в виде байтовых последовательностей, таких как hello world
и bye
(при условии, что мы договорились о способе кодирования этих символов в байты).
Большинство Интернет-приложений используют простые проводные протоколы на основе ASCII. Вы можете использовать программу Telnet, чтобы проверить их. Например:
HTTP
Протокол передачи гипертекста (HTTP) — это язык Всемирной паутины. Мы уже знаем, что порт 80 — это хорошо известный порт для передачи HTTP-сообщений веб-серверам, поэтому давайте поговорим с ним в командной строке.] ‘. ПОЛУЧИТЬ / ↵ … много вывода …
Команда GET
получает веб-страницу. /
— это путь к нужной странице на сайте.
Таким образом, эта команда получает страницу по адресу http://www.eecs.mit.edu:80/
.
Поскольку 80 является портом по умолчанию для HTTP, это эквивалентно посещению http://www.eecs.mit.edu/ в вашем веб-браузере.
Результатом является HTML-код, который ваш браузер отображает для отображения домашней страницы EECS.] ‘. GET / aboutmit / HTTP / 1.1↵
Хост: web.mit.edu↵
↵ HTTP / 1.1 200 ОК
Дата: Вт, 31 марта 2015 г., 15:14:22 GMT … другие заголовки … … подробнее HTML …
На этот раз ваш запрос должен заканчиваться пустой строкой. HTTP версии 1.1 требует, чтобы клиент указывал дополнительную информацию (называемую заголовками) с запросом, а пустая строка сигнализирует о конце заголовков.
Вы также более чем вероятно обнаружите, что telnet не завершает работу после выполнения этого запроса — на этот раз сервер сохраняет соединение открытым, поэтому вы можете сразу же сделать другой запрос.
Чтобы выйти из Telnet вручную, введите escape-символ (вероятно, Ctrl
— ]
), чтобы вызвать приглашение telnet>
, и введите quit
.
SMTP
Простой протокол передачи почты (SMTP) — это протокол для отправки электронной почты (различные протоколы используются для клиентских программ, которые получают электронную почту из вашего почтового ящика).Поскольку система электронной почты была разработана задолго до спама, современная электронная почта полна ловушек и эвристик, предназначенных для предотвращения злоупотреблений.
Но мы все еще можем попробовать говорить на SMTP.
Напомним, что хорошо известный порт SMTP — 25, а dmz-mailsec-scanner-4.mit.edu
было именем обработчика электронной почты MIT.
Вам нужно будет ввести ваш-IP-адрес-здесь и ваше-имя-пользователя-здесь , а ity для ясности укажите символы новой строки. Это будет работать только в том случае, если вы подключены к MITnet, и даже тогда ваша почта может быть отклонена из-за подозрительности:
$ telnet dmz-mailsec-scanner-4.] '. 220 dmz-mailsec-scanner-4.mit.edu ESMTP Symantec Messaging Gateway HELO ваш IP-адрес здесь ↵ 250 2.0.0 dmz-mailsec-scanner-4.mit.edu сообщает HELO на your-ip-address : порт ПОЧТА ОТ: < your-username-here @ mit.edu> ↵ 250 2.0.0 ПОЧТА ОТ принято RCPT TO: < your-username-here @ mit.edu> ↵ 250 2.0.0 RCPT TO принято ДАННЫЕ↵ 354 3.0.0 продолжить. закончено "\ r \ n. \ r \ n" От: < ваше-имя-пользователя-здесь @mit.edu> ↵ Кому: < ваше-имя-пользователя-здесь @ mit.edu> ↵ Тема: тестирование↵ Это электронное письмо ручной работы. .↵ 250 2.0.0 ОК 99 / 00-11111-22222222 ВЫЙТИ 221 2.3.0 dmz-mailsec-scanner-4.mit.edu закрытие соединения Соединение прервано внешним хостом.
SMTP довольно болтлив по сравнению с HTTP, предоставляя некоторые удобочитаемые инструкции, такие как continue. закончил с "\ r \ n. \ r \ n"
, чтобы сообщить нам, как завершить содержимое нашего сообщения.
Проектирование проводного протокола
При разработке проводного протокола примените те же практические правила, которые вы используете для разработки операций с абстрактным типом данных:
Сохраняйте количество различных сообщений маленьким .Лучше иметь несколько команд и ответов, которые можно комбинировать, чем множество сложных сообщений.
Каждое сообщение должно иметь четко определенную цель и согласованное поведение .
Набор сообщений должен быть адекватным для клиентов, чтобы они могли делать запросы, которые им нужно сделать, и для серверов для доставки результатов.
Так же, как мы требуем независимости представления от наших типов, мы должны стремиться к независимости от платформы в наших протоколах.HTTP может использоваться любым веб-сервером и любым веб-браузером в любой операционной системе. Протокол ничего не говорит о том, как веб-страницы хранятся на диске, как они подготавливаются или генерируются сервером, какие алгоритмы клиент будет использовать для их рендеринга и т. Д.
Мы также можем применить три большие идеи в этом класс:
Безопасность от ошибок
Протокол должен быть простым для генерации и анализа для клиентов и серверов. Более простой код для чтения и записи протокола (написан ли он с помощью генератора синтаксического анализатора, такого как ANTLR, с регулярными выражениями и т. Д.)) будет меньше возможностей для ошибок.
Подумайте, как сломанный или злонамеренный клиент или сервер может поместить мусорные данные в протокол, чтобы нарушить процесс на другом конце.
Электронный спам — один из примеров: когда мы говорили о SMTP выше, почтовый сервер попросил нас сказать, кто отправлял электронное письмо, и в SMTP нет ничего, что помешало бы нам открыто солгать. Нам пришлось построить систему на основе SMTP, чтобы попытаться остановить спамеров, которые лгут о
адресах From:
.Уязвимости в системе безопасности — более серьезный пример. Например, протоколы, которые позволяют клиенту отправлять запросы с произвольными объемами данных, требуют осторожной обработки на сервере, чтобы избежать нехватки буферного пространства или того хуже.
Легко понять : например, выбор текстового протокола означает, что мы можем отлаживать ошибки связи, читая текст обмена клиент / сервер. Это даже позволяет нам произносить протокол «вручную», как мы видели выше.
Готово к изменениям : например, HTTP включает возможность указывать номер версии, поэтому клиенты и серверы могут согласовывать друг с другом, какую версию протокола они будут использовать. Если нам потребуется внести изменения в протокол в будущем, старые клиенты или серверы могут продолжать работать, объявив версию, которую они будут использовать.
Сериализация — это процесс преобразования структур данных в памяти в формат, который можно легко сохранить или передать.Вместо того, чтобы изобретать новый формат для сериализации ваших данных между клиентами и серверами, используйте существующий. Например, JSON (объектная нотация JavaScript) — это простой и широко используемый формат для сериализации основных значений, массивов и карт с строковыми ключами.
Указание проводного протокола
Чтобы точно определить для клиентов и серверов, какие сообщения разрешены протоколом, используйте грамматику.
Например, вот очень небольшая часть грамматики запросов HTTP 1.1 из RFC 2616, раздел 5:
request :: = request-line
((общий заголовок | заголовок запроса | заголовок объекта) CRLF) *
CRLF
тело сообщения?
строка-запроса :: = метод ПРОБЕЛ URI-запроса ПРОБЕЛ http-версия CRLF
метод :: = "ОПЦИИ" | «ПОЛУЧИТЬ» | «ГОЛОВА» | "ПОЧТА" | ...
...
Используя грамматику, мы можем видеть, что в этом примере запроса из более раннего:
GET / aboutmit / HTTP / 1.1
Хост: web.mit.edu
-
GET
— это метод -
/ aboutmit /
— этозапрос-uri
: описание того, что мы хотим получить. -
HTTP / 1.1
— это http-версия -
Хост: web.mit.edu
— это своего рода заголовок — нам нужно будет изучить правила для каждой из опций...- header
, чтобы определить, какой из них. - И мы можем понять, почему нам пришлось завершить запрос пустой строкой: поскольку один запрос
- У нас нет
message-body
— и поскольку сервер не ждал, чтобы узнать, отправим ли мы его, по-видимому, это применимо только к другим типам запросов.
Грамматики недостаточно: она выполняет ту же роль, что и сигнатуры методов при определении ADT. Нам все еще нужны спецификации:
Каковы предварительные условия сообщения? Например, если конкретное поле в сообщении представляет собой строку цифр, является ли любое число действительным? Или это должен быть ID-номер записи, известной серверу?
При каких обстоятельствах можно отправить сообщение? Действительны ли определенные сообщения, только если они отправляются в определенной последовательности?
Каковы постусловия? Какое действие будет выполнять сервер на основании сообщения? Какие данные на стороне сервера будут изменены? Какой ответ сервер отправит клиенту?
Упражнения по чтению
Протоколы проводов 1
Какие из следующих инструментов вы могли бы использовать для общения по протоколу HTTP с веб-сервером?
Учебники по программированию на Python
Учебное пособие по сокетам с Python 3, часть 1 — отправка и получение данных
Добро пожаловать в учебник по сокетам с Python 3.Нам есть о чем рассказать, поэтому давайте сразу перейдем к делу. Библиотека socket
является частью стандартной библиотеки, так что она у вас уже есть.
импортная розетка # создаем сокет # AF_INET == ipv4 # SOCK_STREAM == TCP s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
Переменная s
— это наш сокет TCP / IP. AF_INET относится к семейству или домену, это означает ipv4, в отличие от ipv6 с AF_INET6. SOCK_STREAM означает, что это будет сокет TCP, который является нашим типом сокета.TCP означает, что он будет ориентирован на соединение, а не без установления соединения.
Хорошо, а что такое розетка? Сам сокет — это лишь одна из конечных точек связи между программами в какой-то сети.
Сокет будет привязан к какому-то порту на каком-то хосте. В общем, у вас будет объект или программа клиентского или серверного типа.
В случае сервера
вы привяжете сокет к какому-либо порту на сервере (localhost). В случае клиента
вы подключите сокет к этому серверу на том же порту, который использует код на стороне сервера.
Давайте пока сделаем этот код нашей серверной:
s.bind ((socket.gethostname (), 1234))
Для IP-сокетов адрес, к которому мы привязываемся, представляет собой кортеж из имени хоста и номера порта.
Теперь, когда мы это сделали, давайте послушаем входящие соединения. Мы можем обрабатывать только одно соединение в данный момент времени, поэтому мы хотим разрешить какую-то очередь, на случай, если мы получим небольшой всплеск. Если кто-то попытается подключиться, пока очередь заполнена, ему будет отказано.
Сделаем очередь из 5:
s.listen (5)
А теперь послушаем!
, пока True: # теперь наша конечная точка знает о ДРУГОЙ конечной точке. clientocket, адрес = s.accept () print (f "Соединение с {адрес} установлено.")
Полный код для server.py
:
импортная розетка s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) s.bind ((socket.gethostname (), 1234)) s.listen (5) в то время как True: # теперь наша конечная точка знает о ДРУГОЙ конечной точке.clientocket,
HttpClient Connection Pooling в .NET Core — Стив Гордон
Прошло некоторое время с тех пор, как я написал сообщение в блоге, посвященное HttpClient. Этот был в моем списке для завершения довольно долгое время. Я хочу осветить кое-что очень важное, что произошло в .NET Core 2.1 в отношении управления временем жизни HTTP-соединений.
TL; DR;
HttpClient в .NET Core (начиная с версии 2.1) выполняет объединение пулов и управление временем жизни этих подключений.Это поддерживает использование одного экземпляра HttpClient, что снижает вероятность исчерпания сокетов, обеспечивая при этом периодическое повторное подключение соединений для отражения изменений DNS.
Обзор истории HttpClient
HttpClient изначально начал свою жизнь как пакет NuGet, который при желании мог быть включен в проекты .NET Framework 4.0. В .NET Framework 4.5 он был включен в комплект как часть BCL (библиотеки базовых классов). Это было построено на основе ранее существовавшей реализации HttpWebRequest.В .NET Framework API-интерфейсы ServicePoint могут использоваться для контроля и управления HTTP-соединениями, включая установку времени жизни соединения путем настройки ConnectionLeaseTimeout для конечной точки.

Прокатывание вперед; .NET Core 1.0 был первоначально выпущен в июне 2016 года. Эта первая версия была ограничена гораздо меньшей поверхностью API, чем была доступна в .NET Framework, в основном ориентирована на создание веб-приложений ASP.NET Core. API, доступный с .NET Core 1.0 — это HttpClient. Однако API для HttpWebRequest и ServicePoint не были включены. HttpClient в .NET Core 1.0 был построен непосредственно поверх API-интерфейсов платформы ОС, которые используют неуправляемый код, WinHTTP для Windows и LibCurl для Linux и Mac.

К августу 2016 года вскоре было отмечено, что рекомендация повторно использовать экземпляры HttpClient для предотвращения исчерпания сокетов имеет один довольно неприятный побочный эффект. Орен Новотны открыл то, что стало очень давним выпуском GitHub под названием «Singleton HttpClient не принимает во внимание изменения DNS».В этой проблеме было признано, что повторное использование одного экземпляра HttpClient приведет к тому, что соединения останутся открытыми бесконечно, и в результате изменения DNS могут вызвать сбой запроса или связь с устаревшими конечными точками.
В .NET Core 2.0 снова был добавлен HttpWebRequest для поддержки .NET Standard 2.0. Это находится поверх реализации HttpClient, в противоположность тому, как это работает в .NET Framework 4.5+. Также был добавлен ServicePoint, хотя большая часть его поверхности API либо не реализована (генерирует исключение PlatformNotSupportedException), либо не имеет реализации или эффекта.

изменений по сравнению с .NET Core 2.1
Это проблемное поведение привело к необходимости работать над двумя разными командами. Команда ASP.NET начала работу над пакетом Microsoft.Extensions.Http , основной функцией которого является IHttpClientFactory . Эта самоуверенная фабрика для экземпляров HttpClient также включает управление жизненным циклом базовых цепочек HttpMessageHandler. Если вы хотите узнать больше об этой функции, вы можете просмотреть серию моих сообщений в блоге, где я подробно рассказываю об этом.
Функция IHttpClientFactory была выпущена как часть ASP.NET Core 2.1 и для многих была хорошим компромиссом, решая проблему повторного использования соединений наряду с управлением временем жизни.
В то же время команда .NET работала над собственным решением. Также выпущенный в .NET Core 2.1, команда представила новый SocketsHttpHandler в основе цепочки обработчиков для HttpClient. Этот обработчик был построен непосредственно поверх API-интерфейсов Socket, реализующих HTTP в управляемом коде.Часть этой работы включала систему пула соединений и возможность устанавливать максимальное время жизни для этих соединений. Эта функция будет в центре внимания оставшейся части этого поста.

Но прежде чем мы перейдем к этому, я хочу отметить, что хотя SocketsHttpHandler был включен по умолчанию из .NET Core 2.1, реализация была ограничена связью HTTP / 1.1. Тем, кому требуется HTTP / 2, пришлось отключить эту функцию и использовать старую цепочку обработчиков, которая, как и прежде, полагалась на неуправляемый код и не включала пул соединений.
К счастью, это ограничение было снято в .NET Core 3.0, и теперь доступна поддержка HTTP / 2. Это должно сделать использование HttpClient на основе цепочки SocketsHttpHandler подходящим для всех.
Что такое пул подключений?
SocketsHttpHandler устанавливает пул соединений для каждой уникальной конечной точки, на которую ваше приложение отправляет исходящий HTTP-запрос через HttpClient. При первом запросе к конечной точке, когда существующих подключений не существует, будет установлено новое HTTP-соединение, которое будет использоваться для запроса.По завершении этого запроса соединение остается открытым и возвращается в пул.
Последующие запросы к той же конечной точке будут пытаться найти доступное соединение из пула. Если свободных подключений нет и лимит подключений для этой конечной точки не достигнут, будет установлено новое подключение. По достижении лимита подключения запросы помещаются в очередь до тех пор, пока соединение не станет свободным для их отправки.
Я погрузился во внутренний код этой реализации и, возможно, сделаю более глубокий анализ поведения пула в одном из будущих сообщений блога.
Как управлять пулом подключений
Есть три основных параметра, которые можно использовать для управления поведением пула соединений.
PooledConnectionLifetime , определяет, как долго соединения остаются активными при объединении в пул. По истечении этого срока жизни соединение больше не будет объединяться или выдаваться для будущих запросов.
PooledConnectionIdleTimeout , определяет, как долго неиспользуемые соединения остаются в пуле. По истечении этого срока жизни бездействующее соединение будет очищено и удалено из пула.
MaxConnectionsPerServer , определяет максимальное количество исходящих подключений, которые будут установлены на конечную точку. Подключения для каждой конечной точки объединяются отдельно. Например, если максимальное количество подключений равно 2, а ваше приложение отправляет запросы как на www.github.com, так и на www.google.com, всего может быть до 4 открытых подключений.
По умолчанию, начиная с .NET Core 2.1 и далее, SocketsHttpHandler используется в качестве внутреннего обработчика HttpClientHandler более высокого уровня.Без какой-либо пользовательской конфигурации применяются настройки по умолчанию для пула соединений.
Значение PooledConnectionLifetime по умолчанию бесконечно, поэтому при регулярном использовании для запросов соединения могут оставаться открытыми бесконечно. Для PooledConnectionIdleTimeout по умолчанию установлено значение 2 минуты, при этом соединения очищаются, если они не используются в пуле дольше этого периода времени. MaxConnectionsPerServer по умолчанию имеет значение int.MaxValue и, следовательно, соединения практически не ограничены.
Если вы хотите управлять любым из этих значений, экземпляр SocketsHttpHandler можно создать вручную и настроить при необходимости.
В предыдущем примере SocketsHttpHandler настроен таким образом, что соединения перестанут выдаваться повторно и закрываться максимум через 10 минут. При бездействии в течение 5 минут соединения будут удалены раньше в процессе очистки пула. Мы также ограничили максимальное количество подключений (на конечную точку) до десяти. Если нам нужно сделать больше исходящих запросов параллельно, некоторые запросы могут быть поставлены в очередь до тех пор, пока соединения из пула из 10 не станут доступными для использования.
Чтобы применить обработчик, он передается в конструктор HttpClient.
Проверка срока службы соединения
Возьмем, к примеру, эту программу-пример:
Используя параметры, которые мы только что обсудили, этот код выполняет 5 запросов последовательно к одной и той же конечной точке. Между каждым запросом он делает паузу на две секунды. Код также выводит IPv4-адрес, полученный из DNS для сервера Google. Мы можем использовать этот IP-адрес для проверки открытых для него соединений с помощью команды netstat, выданной в PowerShell:
.netstat -ano | Сибирь 216.58.211
В моем случае вывод этой команды:
TCP 192.168.1.139:53040 216.58.211.164:443 УСТАНОВЛЕН 20372
Мы видим, что в этом случае открыто только 1 соединение с удаленной конечной точкой. После каждого запроса это соединение возвращается в пул и поэтому доступно для повторного использования при выдаче следующего запроса.
Если мы изменим время жизни соединений так, чтобы они истекали через 1 секунду, мы можем проверить, как это влияет на поведение:
TCP 192.168.1.139: 53115 216.58.211.164:443 TIME_WAIT 0
TCP 192.168.1.139:53116 216.58.211.164:443 TIME_WAIT 0
TCP 192.168.1.139:53118 216.58.211.164:443 TIME_WAIT 0 1638: 192.168.131.52.164.164.164.28.128.138.192.128.139 : 443 TIME_WAIT 0
TCP 192.168.1.139:53121 216.58.211.164:443 УСТАНОВЛЕНО 25948
В этом случае мы видим, что было использовано пять соединений. Первые четыре из них были удалены из пула через 1 секунду, поэтому не были доступны для повторного использования при следующем запросе.В результате каждый запрос открывал новое соединение. Исходные соединения теперь находятся в состоянии TIME_WAIT и недоступны для повторного использования ОС для новых исходящих соединений. Последнее соединение показано как УСТАНОВЛЕННОЕ, потому что я поймал его до истечения срока его действия.
Проверка максимального количества подключений
Для следующего тестового примера мы будем использовать следующую программу:
Код ограничивает MaxConnectionsPerServer значением 2. Затем он запускает 200 задач, каждая из которых выдает HTTP-запрос к той же конечной точке.Эти задачи будут выполняться одновременно. Время, необходимое для выполнения всех запросов, записывается в консоль.
После запуска на моей машине результат будет:
8013 мс на 200 запросов
Если мы просмотрим соединения с помощью netstat, мы можем увидеть два установленных соединения в соответствии с установленным лимитом.
TCP 192.168.1.139:52780 216.58.204.36:443 УСТАНОВЛЕН 16076
TCP 192.168.1.139:52780 216.58.204.36:443 УСТАНОВЛЕН 16076
Если мы настроим этот код, чтобы разрешить MaxConnectionsPerServer = 10, мы сможем повторно запустить приложение.На этот раз времени потребуется примерно в 4 раза меньше.
2123 мс на 200 запросов
Когда мы просматриваем соединения, мы видим, что действительно было установлено десять соединений.
TCP 192.168.1.139:52798 216.58.204.36:443 УСТАНОВЛЕН 30856
TCP 192.168.1.139:52799 216.58.204.36:443 УСТАНОВЛЕН 30856
TCP 192.168.1.139:52800 216.58.204.36:446.139:52800 216.58.204.36:446.168.198LISH.168.168.190.168.190.168.168.168.168.168.168.18 .204.36: 443 УСТАНОВЛЕНО 30856
TCP 192.168.1.139: 52802 216.58.204.36:443 УСТАНОВЛЕНА 30856
TCP 192.168.1.139:52803 216.58.204.36:443 УСТАНОВЛЕН 30856
TCP 192.168.1.139:52804 216.58.204.36:443 TCP 192.168.1.139:52804 216.58.204.36:443 TCP 904.168.168.168.168.168.168.168.168.168.168.168.168.168.168.168.18 : 443 УСТАНОВЛЕН 30856
TCP 192.168.1.139:52806 216.58.204.36:443 УСТАНОВЛЕН 30856
TCP 192.168.1.139:52807 216.58.204.36:443 УСТАНОВЛЕН 30856
В результате увеличивается пропускная способность. Мы разрешили больше исходящих подключений, поэтому очередь запросов может обрабатываться быстрее, при этом больше запросов отправляется параллельно через дополнительные подключения.
Мне все еще нужен IHttpClientFactory?
Это очень логичный вопрос, который может возникнуть в результате этого поста. Одной из функций IHttpClientFactory является управление временем жизни цепочек HttpMessageHandler и, как следствие, также базовых соединений. Зная, что HttpClient и SocketsHttpHandler могут достичь того же эффекта, нужно ли нам возиться с IHttpClientFactory?
Я считаю, что IHttpClientFactory имеет и другие преимущества, помимо помощи в управлении временем жизни соединений, и по-прежнему повышает ценность при отправке исходящих HTTP-запросов.Он предоставляет отличный шаблон для определения логических конфигураций для экземпляров HttpClient с использованием именованных или типизированных клиентских подходов. Более поздние типизированные клиенты — мои личные фавориты.
Гибкий подход к настройке этих логических клиентов также делает использование настраиваемых DelegatingHandler с клиентами очень простым и понятным. Это включает расширение этого подхода командой ASP.NET для интеграции с Polly, чтобы легко применять отказоустойчивость и обработку временных сбоев для исходящих запросов.
Даже без элемента управления сроком службы я планирую использовать фабрику в своих приложениях в течение некоторого времени. Из обсуждений, которые я видел в Интернете, вполне возможно, что в будущих выпусках функция управления временем жизни будет устаревшей и / или удалена из IHttpClientFactory, поскольку проблема, которую она решала, больше не применима.
Сводка
В этом посте мы увидели, что с момента выпуска .NET Core 2.1 при использовании реализации SocketsHttpHandler по умолчанию эти пулы соединений поддерживаются.Используя настройки для пулов, мы можем контролировать время жизни соединений и ограничивать количество исходящих соединений, которые могут быть созданы для каждой конечной точки.
Мы также обсудили, что IHttpClientFactory имеет преимущества и функции, выходящие за рамки простого управления временем жизни соединения, и поэтому по-прежнему является ценным инструментом.
Кредиты
Диаграммы в этом посте перерисованы, немного изменены и обновлены на основе некоторых, которые изначально использовались Карелом Зикмундом, менеджером по разработке программного обеспечения в.NET в Microsoft.
RFC 6455 — протокол WebSocket
[Docs] [txt | pdf] [draft-ietf-hybi …] [Tracker] [Diff1] [Diff2] [Errata]Обновлено: 7936, 8307, 8441 ПРЕДЛАГАЕМЫЙ СТАНДАРТ
Errata Exist
Инженерная группа Интернета (IETF) И. Фетте Запрос комментариев: 6455 Google, Inc.Категория: Эталоны трассы А. Мельников ISSN: 2070-1721 Isode Ltd. Декабрь 2011 г. Протокол WebSocket Аннотация Протокол WebSocket обеспечивает двустороннюю связь между клиентом. запуск ненадежного кода в контролируемой среде на удаленный хост который согласился получать сообщения от этого кода. Охрана Модель, используемая для этого, - это обычно используемая модель безопасности на основе происхождения с помощью веб-браузеров.Протокол состоит из открывающего рукопожатия. за которым следует базовое формирование сообщения, наложенное поверх TCP. Цель эта технология должна обеспечить механизм для браузерных приложения, которым требуется двусторонняя связь с серверами, не полагаться на открытие нескольких HTTP-соединений (например, используя XMLHttpRequest или
RFC 6455 Протокол WebSocket, декабрь 2011 г. включить упрощенный текст лицензии BSD, как описано в разделе 4.е из Правовые положения Trust и предоставляются без гарантии, как описана в упрощенной лицензии BSD. Содержание 1. Введение . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Задний план . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Обзор протокола. . . . . . . . . . . . . . . . . . . . 5 1.3. Открытие рукопожатия. . . . . . . . . . . . . . . . . . . . 6 1.4. Заключительное рукопожатие. . . . . . . . . . . . . . . . . . . . 9 1.5. Философия дизайна. . . . . . . . . . . . . . . . . . . . 9 1.6. Модель безопасности. . . . . . . . . . . . . . . . . . . . . . 10 1.7. Связь с TCP и HTTP. . . . . . . . . . . . . . . 11 1.8. Установление соединения. . . . . . . . . . . . . . . . 11 1.9. Подпротоколы, использующие протокол WebSocket. . . . . . . . 12 2. Соответствие требованиям. . . . . . . . . . . . . . . . . . . 12 2.1. Терминология и другие условные обозначения. . . . . . . . . . . . 13 3.URI WebSocket. . . . . . . . . . . . . . . . . . . . . . . . 14 4. Вступительное рукопожатие. . . . . . . . . . . . . . . . . . . . . . 14 4.1. Требования клиента. . . . . . . . . . . . . . . . . . . 14 4.2. Требования на стороне сервера. . . . . . . . . . . . . . . . . 20 4.2.1. Чтение вступительного рукопожатия клиента. . . . . . . . 21 год 4.2.2. Отправка открывающего рукопожатия сервера. . . . . . . . 22 4.3. Собран ABNF для новых полей заголовков, используемых в рукопожатии. .25 4.4. Поддержка нескольких версий протокола WebSocket. . . . 26 5. Фрейминг данных. . . . . . . . . . . . . . . . . . . . . . . . . 27 5.1. Обзор. . . . . . . . . . . . . . . . . . . . . . . . . 27 5.2. Базовый протокол кадрирования. . . . . . . . . . . . . . . . . . 28 5.3. Маскирование клиент-сервер. . . . . . . . . . . . . . . . . 32 5.4. Фрагментация. . . . . . . . . . . . . . . . . . . . . . 33 5.5. Рамки управления. . . . . . . . . . . . . . . . .. . . . . 36 5.5.1. Близко . . . . . . . . . . . . . . . . . . . . . . . . 36 5.5.2. Пинг . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.5.3. Понг. . . . . . . . . . . . . . . . . . . . . . . . . 37 5.6. Фреймы данных. . . . . . . . . . . . . . . . . . . . . . . 38 5.7. Примеры . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.8. Расширяемость. . . . . . . . . . . . . . . . . . . . . . 39 6. Отправка и получение данных. . . . . . . .. . . . . . . . . . 39 6.1. Отправка данных. . . . . . . . . . . . . . . . . . . . . . . 39 6.2. Получение данных . . . . . . . . . . . . . . . . . . . . . . 40 7. Завершение соединения. . . . . . . . . . . . . . . . . . . . 41 год 7.1. Определения. . . . . . . . . . . . . . . . . . . . . . . 41 год 7.1.1. Закройте соединение WebSocket. . . . . . . . . . . . 41 год 7.1.2. Запустите рукопожатие закрытия WebSocket. . . . . . . . 42 7.1.3. Завершение рукопожатия WebSocket запущено.. . . . . 42 7.1.4. Соединение WebSocket закрыто. . . . . . . . . . 42 7.1.5. Код закрытия соединения WebSocket. . . . . . . . . 42 Стандарты Фетте и Мельникова [Страница 2]
RFC 6455 Протокол WebSocket, декабрь 2011 г. 7.1.6. Причина закрытия соединения WebSocket. . . . . . . . 43 7.1.7. Не удалось установить соединение WebSocket. . . . . . . . . . . . 43 7.2. Аномальные закрытия.. . . . . . . . . . . . . . . . . . . 44 7.2.1. Закрытие по инициативе клиента. . . . . . . . . . . . . . . 44 7.2.2. Закрытие, инициированное сервером. . . . . . . . . . . . . . . 44 7.2.3. Восстановление после ненормального закрытия. . . . . . . . . . . 44 7.3. Нормальное закрытие соединений. . . . . . . . . . . . . . 45 7.4. Коды состояния. . . . . . . . . . . . . . . . . . . . . . . 45 7.4.1. Определенные коды состояния. . . . . . . . . . . . . . . . . 45 7.4.2. Зарезервированные диапазоны кодов состояния.. . . . . . . . . . . . 47 8. Обработка ошибок. . . . . . . . . . . . . . . . . . . . . . . . 48 8.1. Обработка ошибок в данных в кодировке UTF-8. . . . . . . . . . 48 9. Расширения. . . . . . . . . . . . . . . . . . . . . . . . . . 48 9.1. Ведение переговоров о продлениях. . . . . . . . . . . . . . . . . . 48 9.2. Известные расширения. . . . . . . . . . . . . . . . . . . . . 50 10. Соображения безопасности. . . . . . . . . . . . . . . . . . . 50 10.1. Клиенты, не использующие браузер. .. . . . . . . . . . . . . . . . . 50 10.2. Соображения происхождения. . . . . . . . . . . . . . . . . . 50 10.3. Атаки на инфраструктуру (маскирование). . . . . . . . . . . 51 10.4. Ограничения, зависящие от реализации. . . . . . . . . . . . . . 52 10.5. Проверка подлинности клиента WebSocket. . . . . . . . . . . . . 53 10.6. Конфиденциальность и целостность подключения. . . . . . . . . 53 10.7. Обработка неверных данных. . . . . . . . . . . . . . . . . 53 10.8. Использование SHA-1 в WebSocket Handshake.. . . . . . . . 54 11. Соображения IANA. . . . . . . . . . . . . . . . . . . . . 54 11.1. Регистрация новых схем URI. . . . . . . . . . . . . 54 11.1.1. Регистрация схемы "ws". . . . . . . . . . . . . 54 11.1.2. Регистрация схемы "wss". . . . . . . . . . . . . 55 11.2. Регистрация ключевого слова обновления HTTP "WebSocket". . . 56 11.3. Регистрация новых полей заголовка HTTP. . . . . . . . . . 57 11.3.1. Sec-WebSocket-Key. . . . .. . . . . . . . . . . . . 57 11.3.2. Sec-WebSocket-Расширения. . . . . . . . . . . . . . . 58 11.3.3. Sec-WebSocket-Accept. . . . . . . . . . . . . . . . . 58 11.3.4. Sec-WebSocket-Протокол. . . . . . . . . . . . . . . . 59 11.3.5. Sec-WebSocket-Версия. . . . . . . . . . . . . . . . 60 11.4. Реестр имен расширений WebSocket. . . . . . . . . . . . 61 11.5. Реестр имен подпротокола WebSocket. . . . . . . . . . . 61 11.6. Реестр номеров версий WebSocket.. . . . . . . . . . . 62 11.7. WebSocket Закрыть реестр кодовых номеров. . . . . . . . . . . 64 11.8. Реестр кодов операций WebSocket. . . . . . . . . . . . . . . . 65 11.9. Реестр битов заголовка кадра WebSocket. . . . . . . . . . 66 12. Использование протокола WebSocket из других спецификаций. . . . 66 13. Благодарности. . . . . . . . . . . . . . . . . . . . . . . 67 14. Список литературы. . . . . . . . . . . . . . . . . . . . . . . . . . 68 14.1. Нормативные ссылки . . .. . . . . . . . . . . . . . . . 68 14.2. Информативные ссылки. . . . . . . . . . . . . . . . . . 69 Стандарты Fette & Melnikov [Страница 3]
RFC 6455 Протокол WebSocket, декабрь 2011 г. 1. Введение 1.1. Задний план _Этот раздел не является нормативным. Исторически сложилось так, что создание веб-приложений, требующих двунаправленного связь между клиентом и сервером (например, обмен мгновенными сообщениями и игровые приложения) потребовали злоупотребления HTTP для опроса сервер для обновлений при отправке восходящих уведомлений как отдельных HTTP-вызовы [RFC6202].Это приводит к множеству проблем: o Сервер вынужден использовать несколько различных базовых TCP подключения для каждого клиента: одно для отправки информации клиент и новый для каждого входящего сообщения. o У проводного протокола высокие накладные расходы, так как каждый клиент-сервер сообщение с заголовком HTTP. o Клиентский сценарий вынужден поддерживать отображение из исходящие подключения к входящему подключению для отслеживания ответов. Более простым решением было бы использовать одно TCP-соединение для трафик в обе стороны.Это то, что протокол WebSocket обеспечивает. В сочетании с API WebSocket [WSAPI] он предоставляет альтернатива HTTP-опросу для двусторонней связи с веб-страницы на удаленный сервер. Тот же метод можно использовать для множества веб-приложений: игры, биржевые тикеры, многопользовательские приложения с одновременной редактирование, пользовательские интерфейсы, отображающие серверные службы в режиме реального времени, и т.п. Протокол WebSocket разработан, чтобы заменить существующие технологии двунаправленной связи, использующие HTTP в качестве транспорта слой, чтобы получить выгоду от существующей инфраструктуры (прокси, фильтрация, аутентификация).Такие технологии были реализованы как компромисс. между эффективностью и надежностью, потому что HTTP изначально не был предназначены для двунаправленной связи (см. [RFC6202] для дальнейшее обсуждение). Протокол WebSocket пытается решить проблему цели существующих двунаправленных HTTP-технологий в контексте существующая HTTP-инфраструктура; как таковой, он предназначен для работы через HTTP-порты 80 и 443, а также для поддержки HTTP-прокси и посредников, даже если это предполагает некоторые сложности, характерные для текущая среда.Однако дизайн не ограничивает WebSocket HTTP и будущие реализации могут использовать более простое рукопожатие через Стандарты Фетте и Мельникова [Страница 4]
RFC 6455 Протокол WebSocket, декабрь 2011 г. выделенный порт, не изобретая заново весь протокол. Этот последний момент важен, потому что шаблоны трафика интерактивных обмен сообщениями не совсем соответствует стандартному HTTP-трафику и может вызвать необычные нагрузки на некоторые компоненты.1.2. Обзор протокола _Этот раздел не является нормативным. Протокол состоит из двух частей: рукопожатия и передачи данных. Рукопожатие от клиента выглядит следующим образом: GET / чат HTTP / 1.1 Хост: server.example.com Обновление: websocket Подключение: Обновление Sec-WebSocket-ключ: dGhlIHNhbXBsZSBub25jZQ == Происхождение: http://example.com Sec-WebSocket-Protocol: чат, суперчат Sec-WebSocket-Версия: 13 Рукопожатие от сервера выглядит следующим образом: HTTP / 1.1101 протокол переключения Обновление: websocket Подключение: Обновление Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK + xOo = Sec-WebSocket-Protocol: чат Ведущая строка от клиента соответствует формату строки запроса. Ведущая строка с сервера соответствует формату строки состояния. В Производство Request-Line и Status-Line определено в [RFC2616]. Неупорядоченный набор полей заголовка идет после ведущей строки в оба случая. Значение этих полей заголовка указано в Раздел 4 этого документа.Дополнительные поля заголовка также могут быть присутствуют, например файлы cookie [RFC6265]. Формат и разбор заголовки определены в [RFC2616]. Как только клиент и сервер отправили свои рукопожатия, и если рукопожатие прошло успешно, затем начинается часть передачи данных. Это двусторонний канал связи, где каждая сторона может, независимо от другого, отправлять данные по желанию. После успешного установления связи клиенты и серверы передают данные обратно и далее в концептуальных единицах, называемых в данной спецификации как "Сообщения".В проводе сообщение состоит из одного или нескольких Стандарты Fette & Melnikov [Страница 5]
RFC 6455 Протокол WebSocket, декабрь 2011 г. кадры. Сообщение WebSocket не обязательно соответствует конкретное кадрирование сетевого уровня, поскольку фрагментированное сообщение может быть объединенные или разделенные посредником. Фрейм имеет связанный тип. Каждый кадр принадлежит одному и тому же сообщение содержит тот же тип данных.Вообще говоря, есть типы текстовых данных (интерпретируется как UTF-8 [RFC3629] текст), двоичные данные (интерпретация которых оставлена на усмотрение приложение), и фреймы управления (которые не предназначены для данные для приложения, но вместо этого для сигнализации на уровне протокола, например, чтобы указать, что соединение должно быть закрыто). Этот версия протокола определяет шесть типов кадров и оставляет десять зарезервировано для использования в будущем. 1.3. Открытие рукопожатия _Этот раздел не является нормативным._ Открывающее рукопожатие предназначено для совместимости с HTTP-протоколом. серверное программное обеспечение и посредники, так что один порт может быть используется обоими HTTP-клиентами, общающимися с этим сервером и WebSocket клиенты разговаривают с этим сервером. Для этого клиент WebSocket рукопожатие - это HTTP-запрос на обновление: GET / чат HTTP / 1.1 Хост: server.example.com Обновление: websocket Подключение: Обновление Sec-WebSocket-ключ: dGhlIHNhbXBsZSBub25jZQ == Источник: http: // example.com Sec-WebSocket-Protocol: чат, суперчат Sec-WebSocket-Версия: 13 В соответствии с [RFC2616] поля заголовка в подтверждении связи могут быть отправляется клиентом в любом порядке, поэтому порядок в котором разный поля заголовка получены не имеет значения. "Request-URI" метода GET [RFC2616] используется для идентификации конечная точка соединения WebSocket, чтобы разрешить несколько доменов обслуживаться с одного IP-адреса и разрешать несколько WebSocket конечные точки должны обслуживаться одним сервером.Клиент включает имя хоста в | Хост | поле заголовка его рукопожатие согласно [RFC2616], чтобы и клиент, и сервер могут убедиться, что они согласны с тем, какой хост используется. Стандарты Фетте и Мельникова [Страница 6]
RFC 6455 Протокол WebSocket, декабрь 2011 г. Дополнительные поля заголовка используются для выбора параметров в WebSocket. Протокол. Типичные варианты, доступные в этой версии: селектор подпротокола (| Sec-WebSocket-Protocol |), список расширений поддержка клиентом (| Sec-WebSocket-Extensions |), | Origin | заголовок поле и др.| Протокол Sec-WebSocket | поле заголовка запроса может быть используется, чтобы указать, какие подпротоколы (протоколы уровня приложений слоями по протоколу WebSocket) приемлемы для клиента. Сервер выбирает один или ни один из допустимых протоколов и выдает эхо это значение в его рукопожатии, чтобы указать, что он выбрал это протокол. Sec-WebSocket-Protocol: чат | Происхождение | поле заголовка [RFC6454] используется для защиты от несанкционированное использование сервера WebSocket из разных источников скриптами, использующими API WebSocket в веб-браузере.Сервер информируется о источник скрипта, генерирующий запрос на соединение WebSocket. Если сервер не желает принимать соединения от этого источника, он может выберите отклонение соединения, отправив соответствующую ошибку HTTP код. Это поле заголовка отправляется клиентами браузера; для не-браузера клиентов, это поле заголовка может быть отправлено, если оно имеет смысл в контекст этих клиентов. Наконец, сервер должен доказать клиенту, что он получил рукопожатие клиента WebSocket, так что сервер не принимает соединения, которые не являются соединениями WebSocket.Это предотвращает злоумышленник от обмана сервера WebSocket, осторожно отправив его созданные пакеты с использованием XMLHttpRequest [XMLHttpRequest] или формы представление. Чтобы доказать, что рукопожатие было получено, серверу нужно взять два части информации и объедините их, чтобы сформировать ответ. Первое часть информации поступает из | Sec-WebSocket-Key | поле заголовка в рукопожатии клиента: Sec-WebSocket-ключ: dGhlIHNhbXBsZSBub25jZQ == Для этого поля заголовка сервер должен принять значение (как настоящее в поле заголовка, например.g., версия [RFC4648] с кодировкой base64 минус любые начальные и конечные пробелы) и объедините это с Глобальный уникальный идентификатор (GUID, [RFC4122]) «258EAFA5-E914-47DA- 95CA-C5AB0DC85B11 "в строковой форме, которая вряд ли будет использоваться конечные точки сети, которые не понимают протокол WebSocket. А Хэш SHA-1 (160 бит) [FIPS.180-3], закодированный в base64 (см. Раздел 4 [RFC4648]), эта конкатенация затем возвращается в рукопожатие. Стандарты Fette & Melnikov [Страница 7]
RFC 6455 Протокол WebSocket, декабрь 2011 г. Конкретно, если, как в приведенном выше примере, | Sec-WebSocket-Key | поле заголовка имело значение "dGhlIHNhbXBsZSBub25jZQ ==", сервер объединит строку "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" чтобы сформировать строку "dGhlIHNhbXBsZSBub25jZQ == 258EAFA5-E914-47DA-95CA- C5AB0DC85B11 ".Затем сервер возьмет хеш SHA-1 этого, давая значение 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea. Это значение затем в кодировке base64 (см. раздел 4 [RFC4648]), чтобы получить значение "s3pPLMBiTxaQ9kYGzzhZRbK + xOo =". Это значение затем будет отражено в | Sec-WebSocket-Accept | поле заголовка. Рукопожатие с сервера намного проще, чем у клиента рукопожатие. Первая строка - это строка состояния HTTP со статусом код 101: HTTP / 1.1101 протокол переключения Любой код состояния, отличный от 101, указывает, что рукопожатие WebSocket не завершено и что семантика HTTP все еще применяется. В заголовки следуют за кодом состояния. | Связь | и | Обновление | поля заголовка завершают HTTP Обновить. | Sec-WebSocket-Accept | поле заголовка указывает, сервер готов принять соединение. Если присутствует, это поле заголовка должно включать хэш одноразового номера клиента, отправленного в | Sec-WebSocket-Key | вместе с предопределенным GUID.Любое другое значение не должны интерпретироваться как согласие на подключение со стороны сервер. HTTP / 1.1 101 Протоколы переключения Обновление: websocket Подключение: Обновление Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK + xOo = Эти поля проверяются клиентом WebSocket на наличие страниц со сценариями. Если | Sec-WebSocket-Accept | значение не соответствует ожидаемому значение, если поле заголовка отсутствует или если код состояния HTTP не 101, соединение не будет установлено, и кадры WebSocket не будут отправлены.Также могут быть включены поля опций. В этой версии протокола основное поле параметра - | Sec-WebSocket-Protocol |, которое указывает подпротокол, выбранный сервером. Клиенты WebSocket убедитесь, что сервер включил одно из указанных значений в рукопожатии клиента WebSocket. Сервер, говорящий на нескольких подпротоколы должны убедиться, что он выбирает один на основе клиентского рукопожатие и указывает его в своем рукопожатии. Стандарты Фетте и Мельникова [Страница 8]
RFC 6455 Протокол WebSocket, декабрь 2011 г. Sec-WebSocket-Protocol: чат Сервер также может установить для полей параметров, связанных с файлами cookie, значение _set_ файлы cookie, как описано в [RFC6265].1.4. Завершающее рукопожатие _Этот раздел не является нормативным. Завершающее рукопожатие намного проще, чем открывающее. Любой партнер может отправить контрольный кадр с данными, содержащими указанный последовательность управления для начала закрывающего рукопожатия (подробно Раздел 5.5.1). Получив такой кадр, другой партнер отправляет Закрыть фрейм в ответ, если он еще не отправил. На получив _that_ контрольный кадр, первый партнер закрывает соединение, безопасное, зная, что никакие дальнейшие данные не предстоящий.После отправки контрольного кадра, указывающего, что соединение должно быть закрыто, партнер больше не отправляет данные; после получения кадр управления, указывающий, что соединение должно быть закрыто, одноранговый узел отбрасывает все полученные данные. Оба партнера могут безопасно инициировать это рукопожатие одновременно. Заключительное рукопожатие предназначено для дополнения закрытия TCP. рукопожатие (FIN / ACK), на основании того, что рукопожатие закрытия TCP не всегда надежный сквозной, особенно при наличии перехват прокси и других посредников.Посылая кадр закрытия и ожидая в ответ кадра закрытия, Избегают определенных случаев, когда данные могут быть потеряны без надобности. За например, на некоторых платформах, если сокет закрыт данными в получить очередь, будет отправлен пакет RST, который затем вызовет recv () сбой для стороны, получившей RST, даже если были данные ждет, чтобы его прочитали. 1.5. Философия дизайна _Этот раздел не является нормативным. Протокол WebSocket разработан по принципу: быть минимальным оснащением (единственное, что существует, это сделать протокол на основе кадра вместо потокового и для поддержки различие между текстом Unicode и двоичными фреймами).Это ожидаемо эти метаданные будут размещены поверх WebSocket приложением Стандарты Фетте и Мельникова [Страница 9]
RFC 6455 Протокол WebSocket, декабрь 2011 г. слой, точно так же, как метаданные накладываются поверх TCP с помощью уровень приложения (например, HTTP). Концептуально WebSocket - это просто слой поверх TCP, который делает следующее: o добавляет модель безопасности на основе веб-происхождения для браузеров o добавляет механизм адресации и именования протоколов для поддержки несколько сервисов на одном порту и несколько имен хостов на одном IP адрес o накладывает механизм кадрирования поверх TCP, чтобы вернуться к IP пакетный механизм, на котором построен TCP, но без ограничений по длине o включает дополнительное закрывающее внутриполосное рукопожатие, которое работать при наличии прокси и других посредников Кроме этого, WebSocket ничего не добавляет.В основном он предназначен для быть как можно ближе к простому раскрытию необработанного TCP для сценария, насколько это возможно, учитывая ограничения Интернета. Он также разработан таким образом, что его серверы могут совместно использовать порт с HTTP-серверами, установив рукопожатие быть действительным HTTP-запросом на обновление. Можно концептуально использовать другое протоколы для установления обмена сообщениями клиент-сервер, но цель WebSockets предоставляет относительно простой протокол, который может сосуществуют с HTTP и развернутой инфраструктурой HTTP (например, прокси) и это настолько близко к TCP, насколько безопасно для использования с такими инфраструктура с учетом соображений безопасности, с целевыми дополнениями чтобы упростить использование и упростить простые вещи (например, добавление семантики сообщения).Протокол предназначен для расширения; будущие версии будут вероятно введение дополнительных концепций, таких как мультиплексирование. 1.6. Модель безопасности _Этот раздел не является нормативным. Протокол WebSocket использует исходную модель, используемую веб-браузерами для ограничить, какие веб-страницы могут связываться с сервером WebSocket, когда Протокол WebSocket используется с веб-страницы. Естественно, когда Протокол WebSocket используется выделенным клиентом напрямую (т. Е. Не с веб-страницы через веб-браузер), исходная модель не полезно, поскольку клиент может предоставить любую произвольную строку происхождения.Этот протокол предназначен для того, чтобы не установить соединение с серверы уже существующих протоколов, таких как SMTP [RFC5321] и HTTP, а разрешая HTTP-серверам отказаться от поддержки этого протокола, если Стандарты Фетте и Мельникова [Страница 10]
RFC 6455 Протокол WebSocket, декабрь 2011 г. желанный. Это достигается за счет строгого и детального рукопожатия. и ограничивая данные, которые могут быть вставлены в соединение до завершения рукопожатия (тем самым ограничивая, сколько сервер можно повлиять).Аналогичным образом предполагается, что не удается установить соединение, когда данные из других протоколов, особенно HTTP, отправляется на сервер WebSocket, например, как это могло бы произойти, если бы HTML-форма была отправлена в Сервер WebSocket. В первую очередь это достигается за счет требования, чтобы сервер докажет, что он прочитал рукопожатие, что он может сделать, только если рукопожатие содержит соответствующие части, которые могут быть отправлены только Клиент WebSocket. В частности, на момент написания этого спецификация, поля начинающиеся с | Sec- | не может быть установлен злоумышленник из веб-браузера, используя только API HTML и JavaScript, такие как XMLHttpRequest [XMLHttpRequest].1.7. Связь с TCP и HTTP _Этот раздел не является нормативным. Протокол WebSocket - это независимый протокол на основе TCP. это единственное отношение к HTTP заключается в том, что его рукопожатие интерпретируется HTTP-серверы в качестве запроса на обновление. По умолчанию протокол WebSocket использует порт 80 для обычного WebSocket. подключения и порт 443 для подключений WebSocket, туннелируемых через Безопасность транспортного уровня (TLS) [RFC2818]. 1.8. Установление соединения _Этот раздел не является нормативным._ Когда необходимо установить соединение с портом, который используется совместно с HTTP сервер (ситуация, которая вполне может произойти с трафиком на порты 80 и 443), соединение будет отображаться с HTTP-сервером для быть обычным запросом GET с предложением обновления. В относительно простом настройки с одним IP-адресом и одним сервером для всего трафика к одному имени хоста, это может дать практический способ для систем на основе протокола WebSocket для развертывания. В более сложных установки (например,g., с балансировщиками нагрузки и несколькими серверами), выделенный набор хостов для соединений WebSocket отдельно от HTTP-серверов наверное легче управлять. На момент написания этого В спецификации следует отметить, что подключения на портах 80 и 443 имеют существенно разные показатели успеха, а связи порт 443 значительно более успешен, хотя это может меняются со временем. Стандарты Fette & Melnikov [Страница 11]
RFC 6455 Протокол WebSocket, декабрь 2011 г. 1.9. Подпротоколы, использующие протокол WebSocket. _Этот раздел не является нормативным. Клиент может запросить, чтобы сервер использовал определенный подпротокол, включая | Sec-WebSocket-Protocol | поле в его рукопожатии. Если оно указано, сервер должен включать то же поле и одно из выбранные значения подпротокола в своем ответе на подключение к быть установленным. Эти имена подпротоколов должны быть зарегистрированы в соответствии с Разделом 11.5. Чтобы избегать потенциальных столкновений, рекомендуется использовать имена, содержат версию ASCII доменного имени подпротокола создатель.Например, если компания Example Corporation создала Подпротокол чата будет реализован на многих серверах в Интернете, они могли назвать его "chat.example.com". Если пример организации назвали свой конкурирующий подпротокол "chat.example.org", затем два подпротоколы могут быть реализованы серверами одновременно, с сервер динамически выбирает, какой подпротокол использовать на основе значение, отправленное клиентом. Версии подпротоколов могут быть обратно несовместимы. изменение имени подпротокола, e.г., идущий от «bookings.example.net» на «v2.bookings.example.net». Эти подпротоколы будут считаться полностью отдельными WebSocket клиентов. Управление версиями с обратной совместимостью может быть реализовано с помощью повторное использование той же строки подпротокола, но тщательное проектирование фактический подпротокол для поддержки такого рода расширяемости. 2. Требования к соответствию Все диаграммы, примеры и примечания в этой спецификации не являются нормативные, как и все разделы, явно отмеченные как ненормативные.Все остальное в этой спецификации является нормативным. Ключевые слова «ДОЛЖНЫ», «НЕ ДОЛЖНЫ», «ОБЯЗАТЕЛЬНО», «ДОЛЖНЫ», «НЕ ДОЛЖНЫ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этом документ следует интерпретировать, как описано в [RFC2119]. Требования, сформулированные в императиве как часть алгоритмов (например, "убрать все начальные пробелы" или "вернуть false и отменить эти шаги ") следует интерпретировать со значением ключевого слова («ДОЛЖЕН», «ДОЛЖЕН», «МОЖЕТ» и т. Д.), использованный при представлении алгоритма. Стандарты Fette & Melnikov [Страница 12]
RFC 6455 Протокол WebSocket, декабрь 2011 г. Требования соответствия, сформулированные в виде алгоритмов или конкретных шагов, МОГУТ быть реализованным любым способом, пока конечный результат эквивалент. (В частности, алгоритмы, определенные в этом спецификации предназначены для простоты использования и не предназначены для быть эффективным.) 2.1. Терминология и другие условные обозначения _ASCII_ означает схему кодирования символов, определенную в [ANSI.X3-4.1986]. Этот документ ссылается на значения UTF-8 и использует UTF-8. Нотационные форматы, определенные в STD 63 [RFC3629]. Ключевые термины, такие как названные алгоритмы или определения, обозначены как _этот_. Имена полей заголовков или переменных обозначаются как | это |. Значения переменных обозначаются как / this /. Этот документ ссылается на процедуру _Fail the WebSocket Подключение_.Эта процедура определена в разделе 7.1.7. _Преобразование строки в нижний регистр ASCII_ означает замену всех символы в диапазоне от U + 0041 до U + 005A (т.е.ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА A на ЗАГЛАВНУЮ БУКВУ Z) с соответствующими символами в диапазон от U + 0061 до U + 007A (т. е. строчная латинская буква A до строчной латинской буквы БУКВА Z). Сравнение двух строк без учета регистра _ASCII_ означает сравнивая их точно, кодовая точка для кодовой точки, за исключением того, что символы в диапазоне от U + 0041 до U + 005A (т.е.е., ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА A на ЗАГЛАВНУЮ БУКВУ Z) и соответствующие символы в диапазон от U + 0061 до U + 007A (т. е. строчная латинская буква A до строчной латинской буквы БУКВА Z) также считаются совпадающими. Термин «URI» используется в этом документе, как определено в [RFC3986]. Когда реализация требуется для _отправки_ данных как части WebSocket, реализация МОЖЕТ задержать фактическое передача произвольно, например, буферизация данных, чтобы отправить меньше IP пакеты. Обратите внимание, что в этом документе используются варианты [RFC5234] и [RFC2616] ABNF в разных разделах.Стандарты Фетте и Мельникова [Страница 13]
RFC 6455 Протокол WebSocket, декабрь 2011 г. 3. URI WebSocket Эта спецификация определяет две схемы URI с использованием синтаксиса ABNF определено в RFC 5234 [RFC5234], а также терминология и продукция ABNF определен спецификацией URI RFC 3986 [RFC3986]. ws-URI = "ws:" "//" хост [":" порт] путь ["?" запрос] wss-URI = "wss:" "//" хост [":" порт] путь ["?" запрос] host =port = <порт, определенный в [RFC3986], раздел 3.2.3> path = query = Компонент порта НЕОБЯЗАТЕЛЬНЫЙ; по умолчанию для "ws" - порт 80, в то время как по умолчанию для "wss" используется порт 443. URI называется "безопасным" (и говорят, что "безопасный флаг set "), если компонент схемы соответствует" wss "без учета регистра. «Имя ресурса» (также известное как / имя ресурса / в Разделе 4.1) можно построить, объединив следующее: o "/", если компонент пути пуст o компонент пути о "?" если компонент запроса не пуст o компонент запроса Идентификаторы фрагментов бессмысленны в контексте URI WebSocket и НЕ ДОЛЖНЫ использоваться в этих URI. Как и в любой схеме URI, символ "#", если он не указывает на начало фрагмента, ДОЛЖЕН быть экранирован как% 23. 4. Вступительное рукопожатие 4.1. Требования к клиенту Чтобы _Establish WebSocket Connection_, клиент открывает соединение и отправляет рукопожатие, как определено в этом разделе.Связь определен как изначально находящийся в состоянии CONNECTING. Клиенту потребуется укажите / host /, / port /, / resource name / и / secure / flag, которые являются компонентами URI WebSocket, как описано в разделе 3, вместе со списком / протоколов / и / расширений /, которые будут использоваться. Кроме того, если клиентом является веб-браузер, он предоставляет / origin /. Стандарты Fette & Melnikov [Страница 14]
RFC 6455 Протокол WebSocket, декабрь 2011 г. Клиенты, работающие в контролируемой среде, e.g., браузеры на мобильных устройствах телефоны, привязанные к определенным операторам связи, МОГУТ разгрузить управление подключение к другому агенту в сети. В такой ситуации клиент для целей данной спецификации считается включать как программное обеспечение телефона, так и любые подобные агенты. Когда клиент должен _Establish WebSocket Connection_ с заданным набором из (/ host /, / port /, / resource name / и / secure / flag) вместе с список / протоколов / и / расширений /, которые будут использоваться, и / origin / в в случае веб-браузеров он ДОЛЖЕН открыть соединение, отправить открытие рукопожатие и прочитайте ответное рукопожатие сервера.Точный требования, как открывать соединение, что должно быть отправлено в открывающем рукопожатии, и как ответ сервера должен следует интерпретировать в этом разделе. В следующих текста, мы будем использовать термины из Раздела 3, такие как "/ host /" и "/ secure / flag", как определено в этом разделе. 1. Компоненты URI WebSocket, переданные в этот алгоритм (/ host /, / port /, / resource name / и / secure / flag) ДОЛЖНЫ быть действителен в соответствии со спецификацией указанных URI WebSocket в разделе 3.Если какой-либо из компонентов недействителен, клиент ОБЯЗАТЕЛЬНО НЕОБХОДИМО прервать соединение WebSocket и отменить эти шаги. 2. Если у клиента уже есть соединение WebSocket с удаленным хост (IP-адрес), идентифицированный / host / и порт / порт / пара, даже если удаленный хост известен под другим именем, клиент ДОЛЖЕН ждать пока это соединение не будет установлено или для этого соединения потерпеть неудачу. ДОЛЖНО быть не более одного подключения в СОЕДИНЕНИЕ состояние.Если несколько подключений к одному IP-адресу предпринимаются одновременно, клиент ДОЛЖЕН сериализовать их, чтобы что одновременно работает не более одного подключения через следующие шаги. Если клиент не может определить IP-адрес удаленного хоста (например, потому что все общение осуществляется через прокси-сервер, который сам выполняет запросы DNS), затем клиент ДОЛЖНО предполагать для целей этого шага, что каждое имя хоста относится к отдельному удаленному хосту, и вместо этого клиент ДОЛЖЕН ограничить общее количество одновременных ожидающих подключений до достаточно низкое количество (например,g., клиент может разрешить одновременное ожидающие подключения к a.example.com и b.example.com, но если требуется тридцать одновременных подключений к одному хосту, это не может быть разрешено). Например, в контексте веб-браузера клиенту необходимо учитывать количество вкладок, открытых пользователем в установке ограничения на количество одновременно ожидающих соединения. Стандарты Fette & Melnikov [Страница 15]
RFC 6455 Протокол WebSocket, декабрь 2011 г. ПРИМЕЧАНИЕ. Это затрудняет выполнение сценарием отказа в сервисная атака путем открытия большого количества WebSocket подключения к удаленному хосту.Сервер может еще больше уменьшить нагрузка на себя при атаке путем паузы перед закрытием подключение, так как это снизит скорость, с которой клиент переподключается. ПРИМЕЧАНИЕ. Нет ограничений на количество установленных WebSocket. соединения, которые клиент может иметь с одним удаленным хостом. Серверы может отказаться принимать соединения от хостов / IP-адресов с чрезмерное количество существующих подключений или отключение ресурса- заклинивание соединений при высокой нагрузке.3. _Proxy Usage_: если клиент настроен на использование прокси, когда использование протокола WebSocket для подключения к хосту / хосту / и порту / port /, тогда клиент ДОЛЖЕН подключиться к этому прокси и спросить его чтобы открыть TCP-соединение с хостом, заданным / host /, и портом предоставлено / порт /. ПРИМЕР: Например, если клиент использует HTTP-прокси для всех трафик, то, если он должен был попытаться подключиться к порту 80 на сервере example.com, он может отправить прокси следующие строки сервер: Пример CONNECT.com: 80 HTTP / 1.1 Хост: example.com Если был пароль, соединение могло бы выглядеть так: CONNECT example.com:80 HTTP / 1.1 Хост: example.com Прокси-авторизация: Базовая ZWRuYW1vZGU6bm9jYXBlcyE = Если клиент не настроен на использование прокси, то прямой TCP соединение ДОЛЖНО быть открыто с хостом, указанным / host / и порт задан / порт /. ПРИМЕЧАНИЕ. Реализации, которые не предоставляют явный пользовательский интерфейс для выбор прокси для подключений WebSocket отдельно от других прокси рекомендуется использовать прокси SOCKS5 [RFC1928] для Соединения WebSocket, если они доступны или если это не удается, предпочтительнее прокси, настроенный для HTTPS-соединений через прокси настроен для HTTP-соединений.Для сценариев автоконфигурации прокси URI для передать функцию ДОЛЖНО быть построено из / host /, / port /, / имя ресурса / и флаг / secure / с использованием определения URI WebSocket, как указано в разделе 3. Стандарты Фетте и Мельникова [Страница 16]
RFC 6455 Протокол WebSocket, декабрь 2011 г. ПРИМЕЧАНИЕ. Протокол WebSocket можно определить в прокси-сервере. скрипты автоконфигурации из схемы ("ws" для незашифрованных соединения и "wss" для зашифрованных соединений).4. Если соединение не может быть установлено, либо из-за прямого соединение не удалось или из-за того, что использованный прокси-сервер вернул ошибку, тогда клиент ДОЛЖЕН _Fail the WebSocket Connection_ и прервать попытка подключения. 5. Если / secure / истинно, клиент ДОЛЖЕН выполнить подтверждение TLS через соединение после открытия соединения и перед отправкой данные рукопожатия [RFC2818]. Если это не удается (например, сервер сертификат не может быть проверен), тогда клиент ДОЛЖЕН _Fail соединение WebSocket_ и прервите соединение.В противном случае, все дальнейшее общение по этому каналу ДОЛЖНО проходить через зашифрованный туннель [RFC5246]. Клиенты ДОЛЖНЫ использовать расширение Server Name Indication в TLS. рукопожатие [RFC6066]. Как только соединение с сервером установлено (включая соединение через прокси или через туннель с шифрованием TLS), клиент ДОЛЖЕН отправить открывающее рукопожатие серверу. Рукопожатие состоит запроса на обновление HTTP, а также список необходимых и необязательные поля заголовка.Требования для этого рукопожатия следующие: следует. 1. Рукопожатие ДОЛЖНО быть действительным HTTP-запросом, как указано в [RFC2616]. 2. Метод запроса ДОЛЖЕН быть GET, а версия HTTP ДОЛЖНА быть не менее 1,1. Например, если URI WebSocket - "ws: //example.com/chat", первая отправленная строка должна быть «GET / chat HTTP / 1.1». 3. Часть запроса "Request-URI" ДОЛЖНА соответствовать ресурсу /. имя / определено в разделе 3 (относительный URI) или быть абсолютным http / https URI, который при анализе имеет / имя ресурса /, / host /, и / порт /, которые соответствуют соответствующему URI ws / wss.4. Запрос ДОЛЖЕН содержать | Хост | поле заголовка, значение которого содержит / host / плюс необязательно ":", за которым следует / порт / (если не используя порт по умолчанию). 5. Запрос ДОЛЖЕН содержать | Обновление | поле заголовка, значение которого ДОЛЖЕН включать ключевое слово "websocket". Стандарты Фетте и Мельникова [Страница 17]
RFC 6455
Лучшая цена розетка 3, 5 проводов — Отличные предложения на разъем 3, 5 проводов от глобальной розетки 3, 5 проводов продавцы
Отличные новости !!! Вы находитесь в правильном месте для розетки 3 и 5.К настоящему времени вы уже знаете, что что бы вы ни искали, вы обязательно найдете это на AliExpress. У нас буквально тысячи отличных продуктов во всех товарных категориях. Ищете ли вы товары высокого класса или дешевые и недорогие оптовые закупки, мы гарантируем, что он есть на AliExpress.
Вы найдете официальные магазины торговых марок наряду с небольшими независимыми продавцами со скидками, каждый из которых предлагает быструю доставку и надежные, а также удобные и безопасные способы оплаты, независимо от того, сколько вы решите потратить.
AliExpress никогда не уступит по выбору, качеству и цене. Каждый день вы будете находить новые онлайн-предложения, скидки в магазинах и возможность сэкономить еще больше, собирая купоны. Но вам, возможно, придется действовать быстро, так как эта верхняя розетка 3 на 5 проводов в кратчайшие сроки станет одним из самых популярных бестселлеров. Подумайте, как вам будут завидовать друзья, когда вы скажете им, что купили розетку 3 и 5 на AliExpress.Благодаря самым низким ценам в Интернете, дешевым тарифам на доставку и возможности получения на месте вы можете еще больше сэкономить.
Если вы все еще сомневаетесь по поводу гнезда 3 и 5 и думаете о выборе аналогичного товара, AliExpress — отличное место для сравнения цен и продавцов. Мы поможем вам решить, стоит ли доплачивать за высококлассную версию или вы получаете столь же выгодную сделку, приобретая более дешевую вещь.А если вы просто хотите побаловать себя и потратиться на самую дорогую версию, AliExpress всегда позаботится о том, чтобы вы могли получить лучшую цену за свои деньги, даже сообщая вам, когда вам будет лучше дождаться начала рекламной акции. и ожидаемая экономия.AliExpress гордится тем, что у вас всегда есть осознанный выбор при покупке в одном из сотен магазинов и продавцов на нашей платформе. Реальные покупатели оценивают качество обслуживания, цену и качество каждого магазина и продавца.Кроме того, вы можете узнать рейтинги магазина или отдельных продавцов, а также сравнить цены, доставку и скидки на один и тот же продукт, прочитав комментарии и отзывы, оставленные пользователями. Каждая покупка имеет звездный рейтинг и часто имеет комментарии, оставленные предыдущими клиентами, описывающими их опыт транзакций, поэтому вы можете покупать с уверенностью каждый раз. Короче говоря, вам не нужно верить нам на слово — просто слушайте миллионы наших довольных клиентов.
А если вы новичок на AliExpress, мы откроем вам секрет.Непосредственно перед тем, как вы нажмете «купить сейчас» в процессе транзакции, найдите время, чтобы проверить купоны — и вы сэкономите еще больше. Вы можете найти купоны магазина, купоны AliExpress или собирать купоны каждый день, играя в игры в приложении AliExpress. Вместе с бесплатной доставкой, которую предлагают большинство продавцов на нашем сайте, вы сможете приобрести socket 3 the 5 wire по самой выгодной цене.
У нас всегда есть новейшие технологии, новейшие тенденции и самые обсуждаемые лейблы.На AliExpress отличное качество, цена и сервис всегда в стандартной комплектации. Начните лучший опыт покупок прямо здесь.
.