LINUX.ORG.RU

curl 7.66.0: параллелизм и HTTP/3

 , , ,


3

4

11 сентября вышла новая версия curl — простой CLI утилиты и библиотеки для получения и отправки данных по сети. Нововведения:

  • Экспериментальная поддержка HTTP3 (по умолчанию отключена, требует пересборки с quiche или ngtcp2+nghttp3)
  • Доработки авторизации через SASL
  • Параллельная передача данных (ключ -Z)
  • Обработка заголовка Retry-After
  • Замена curl_multi_wait() на curl_multi_poll(), что должно предотвратить подвисание при ожидании.
  • Исправления багов: от утечек памяти и падений, до поддержки Plan 9.

Ранее разработчик curl Дениел Стэнберг (Daniel Stenberg) выложил пояснения в блоге и 2,5-часовой видеообзор, зачем нужен HTTP/3, и как его использовать. Вкратце — вместо протокола TCP используется UDP с шифрованием TLS. Пока по HTTP/3 работают такие вещи, как: доступ по IPv4 и IPv6, все доступные фичи DNS, обработка заголовков, куки. Не сделаны запросы с большим телом, распараллеливание, тесты.

Проекты на GitHub

>>> Чейнджлог

Ответ на: комментарий от DonkeyHot

Все равно ничего не понятно. У TCP есть известные недостатки, но указанный вами я вижу впервые. Что теперь должно передаваться на транспортном уровне вместо байтов?

anonymous
()
Ответ на: комментарий от anonymous

http/2 используется примерно на 90% сайтов, какие проблемы? То что ты об этом не знаешь говорит только о том, что ты обычный мамкин диванный иксперд.

anonymous
()
Ответ на: комментарий от question4

mainline версия nginx(не тестовая, а mainline) уже 1.17.3 и поддержки http/3 в ней нет, поддержка http/3 в roadmap для 1.17.x, но когда именно она появится никто не говорил

anonymous
()
Ответ на: комментарий от anonymous

На менее, чем половине сайтов он используется и работает он поверх tcp. Мы тут про tcp говорим.

anonymous
()
Ответ на: комментарий от anonymous

Вроде же что-то коммитили и закрывали тикет. Не появится ли поддержка, если пересобрать с каким-то ключом?

question4 ★★★★★
() автор топика
Ответ на: комментарий от praseodim
mike@DNS:~/Загрузки$ apt-cache search fido
lbdb - Little Brother's DataBase for the mutt mail reader
binkd - Программа транспортировки почты FIDO через TCP/IP
fortunes-es - База данных фраз на испанском для fortune
ifgate - Шлюз между Интернетом и Fidonet
ifmail - Шлюз между Интернетом и Fidonet
crashmail - JAM and *.MSG capable Fidonet tosser
htag - A tagline/.signature adder for email, news and FidoNet messages
[b]ifcico - Fidonet Technology transport package[/b]
jamnntpd - NNTP Server allowing newsreaders to access a JAM messagebase
libauthen-u2f-perl - pure Perl FIDO U2F server library
libauthen-u2f-tester-perl - FIDO/U2F Authentication Test Client
mgetty - Smart Modem getty replacement
pcb-rnd - Modular Printed Circuit Board layout tool
python3-fido2 - Python library for implementing FIDO 2.0
ruby-u2f - U2F server side library
Mike_RM
()
Ответ на: комментарий от question4

В changelog'е тишина, даже про ключ. Слежу за этим и жду официального добавления. Возможно добавили начальную поддержку, но не сочли возможным ее пока включать и допиливают

anonymous
()
Ответ на: комментарий от araks

До тех пор пока из юзерспейса не утащат.

pon4ik ★★★★★
()
Ответ на: комментарий от Bagrov

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

Т.е. тебе в любом случае приходится городить ещё одни «пакеты» на прикладном уровне и машину состояний которая кормит потоковый парсер буфером в юзерспейсе. Если бы сиё просходило на уровне транспортного сетевого стека (естественная граница сообщений как в UDP но с гарантированной доставкой и порядком, а так же величиной сообщения больше mtu) в ядре - многое из этого можно было изрядно оптимизировать(в том числе и аппаратно) и убрать уйму логики из юзерспейса.

pon4ik ★★★★★
()
Ответ на: комментарий от Bagrov

если бы юниксовые пайпы были двоичными … улучшило производительность

Гугель говорит, что мерял и таки улучшило(man protobuf).

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

У TCP … недостатки, но указанный вами я вижу впервые.

Собственно, это не недостаток TCP. Это недостаток человечества. Оно использует TCP за пределами комфортности последнего, от чего и страдает.

Что должно передаваться на транспортном уровне вместо байтов

Пакеты же – см второй абзац.

DonkeyHot ★★★★★
()
Ответ на: комментарий от question4

А Гуглу то чо https://www.overclockers.ua/news/hardware/2019-09-23/125280/
Коечо всеже не понятно. Вот ТЦП протокол извесно как рулит соединениями и по идее одна програма не может получить доступ к тому что передаеться по ТЦП соеденению другой програмы
в случае же с УДП хромированный зонт сможет увидеть что передаеться чпрез curl[]ето так?

anonymous
()
Ответ на: комментарий от anonymous

Нет, не так. Ты сам придумываешь, потому что твоя болезнь заставляет тебя искать вокруг врагов. А враг у тебя один — твое нежелание лечиться.

anonymous
()
Ответ на: комментарий от LamerOk

SCTP уникален тем, что практически не используется в реальной жизни, но в его реализациях постоянно находят дыры :-D

Для РФ он интересен тем, что многие провайдеры его не блокируют, так как их попингуи о нем не слышали. На трех провайдерах в последнем городе где жил сталкивался с тем, что TCP, UDP и ICMP до IP из цензурного списка заблочены, а SCTP нет(у меня самого несколько IP попали в блок и было на чем проверять). К сожалению когда смотрел в последний раз патч к OpenSSH для работы по SCTP был заброшен и не натягивался на свежие релизы, потому не стал использовать

anonymous
()
Ответ на: комментарий от anonymous

http/2 используется примерно на 90% сайтов

Включить ХТТП/2 и использовать его — немного разные вещи. Сам по себе он даёт только экономию на рукопожатиях, и то, если приложение организованно грамотно. Учитывая практики применяемые в ХТТП/1.х это не всегда возможно, т.к. подход диаметрально противоположный.

anonymous
()
Ответ на: комментарий от anonymous

Включить его на сервере это и есть использовать его, так как клиент будет работать по нему. Используются ли какие-то еще фичи не важно, по факту http/2 используется.

anonymous
()
Ответ на: комментарий от anonymous

Используются ли какие-то еще фичи не важно, по факту http/2 используется.

Если ты толкаешь мотоцикл, то приравниваешься к пешеходу. Ман ПДД.

anonymous
()
Ответ на: комментарий от anonymous

Если ты — идиот, то тебе стоит молчать. Подключение и общение идет по http/2, а не http/1.1, что ты можешь проверить.

anonymous
()
Ответ на: комментарий от anonymous

Подключение [...] идет по http/2

Подключение идёт по TCP в большинстве случаев. Локально может быть Юникс-сокет. И всякая экзотика не исключается, но это экзотика. Вообще, у HTTP нет такого понятия, как подключение, а только запрос и ответ. И даже CONNECT фактически — запрос.

ты — идиот

Конец цитаты.

anonymous
()
Ответ на: комментарий от question4

К инвалиду-колясочнику.

Колясочники разъезжают на бентли-инвалидках выданных им пенсионным фондом. Они — автомобилисты.

anonymous
()
Ответ на: комментарий от LamerOk

SCTP

Я о временах, когда write(2) придумывали. Авторы решили, что

write(open("/dev/printer"),info,strlen(info))

полезное свойство – и наверное оно так и было во время написания первых программ.

DonkeyHot ★★★★★
()
Ответ на: комментарий от anonymous

Ну а что ты хочешь. Кто-то любит сношаться с веб-сервером в ядре, а кто-то с bash-скриптам в init-е, у каждого свои предпочтения и фетиш. Может им всем это доставляет удовольствие, кто мы, чтобы их винить в этом?

ma1uta ★★★
()
Ответ на: комментарий от beaver

Так сейчас он, получается, ни на чём не реализован? Или простым людям всё же можно его как-то поднять у себя?

https://blog.cloudflare.com/experiment-with-http-3-using-nginx-and-quiche/

http://www.opennet.ru/opennews/art.shtml?num=51695

Выпустили сторонний патч к nginx. Задействует quiche. До того работали тестовые сервера с неофициальными патчами, которые никому не показывали.

question4 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

В changelog'е тишина, даже про ключ. Слежу за этим и жду официального добавления.

https://blog.cloudflare.com/experiment-with-http-3-using-nginx-and-quiche/

http://www.opennet.ru/opennews/art.shtml?num=51695

Выпустили сторонний патч к nginx. Задействует quiche.

question4 ★★★★★
() автор топика
Ответ на: комментарий от Bagrov

Текстовый как раз http1, http2 бинарный.

anonymous
()
Ответ на: комментарий от FilosofeM

Да, если запускать скриптом :)

anonymous
()

Ждём, чтобы как в js-мирке: каждая новая версия http должна устаревать за две недели.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.