Pull to refresh

Comments 87

Хром в исходниках?
а как скачать уже собранный?
Спасибо.
а то я никак не мог проснутся с утра )))
Давно пора было с HTTP что-то делать.
Мицгол уже давно придумал гипертекстовый FIDONet. осталось только реализовать и он обгонит всё остальное.
C HTTP как раз все относительно в порядке, у него узкие места начинают выплывать в его применениях для вполне определенных целей. Например, он ОЧЕНЬ ФИГОВО заточен на работу поверх SSL (HTTPS).
По ряду причин: Начиная с того, что для HTTPS приходиться держать persistent connection (поскольку установление ssl-соединения, это достаточно ресурсоемкий процесс, в отличии от TCPшного обмена 3мя пакетами). Однако этот самый персист ssl-соединения делает «смерти подобным» попытку сделать более-менее что-то highload использующее https. Большинство же стандартных методов оптимизации производительности сервера направленного на обработку десятков тысяч одновременных соединений, оказывается, опять-таки практически нифига не работают ввиду того что http, предполагающий «поток байт», сидит на ssl криптоструктура которого по сути является «блочной».
Список недостатков текущей реализации https могу продолжить…
UFO just landed and posted this here
=)
А вообще это совсем не та область, в которой Гугл и Яху конкуренты. Ускорение выгодно обоим как разработчикам веб-приложений, и затягивать это дело конкуренцией было бы невыгодно.
Уж скорее стоит ожидать альтернативы от Майкрософт — протокол, который ускорит веб на 56 %… но лет через десять.
UFO just landed and posted this here
да, даёшь гонку интернетов!
Еще лет через 5 догадаются, что если выкинуть внизу TCP и заменить его на UDP, то можно ускорить еще вдвое :)
Кстати, телефонисты с VoIP signaling протоколами уже давным-давно прошли по аналогичным «граблям».
UDP не гарантирует доставку. В VoIP не страшно потерять пару пакетов, а скажем для исполняемого файла это беда.
котроль целостности можно поверх организовать. Вообщем порка уже активнее менять интернет…
А точно лучше получится?
я гарантирую это!
P.S.
ясно дело мы все уткнулись в чисто физические ограничения каналов => надо решать эту проблему, но в тоже время оптимизировать все остальное, самый дельный способ: смотрим дату последнего мажорого изменения в элементе, давно? крутим этот элемент. например от IPv4 уже давно пора отказываться.
Тут крайне опасно высказывать мнение о том, что современная структура web ужасна. Сразу куча одминов начинает минусовать за неуважение к их любимым http-серверам, или, упаси Бог, к PHP или JS. :)
Думаю, проблема не в самом TCP, а в том количестве порно, которое приходится прокачивать интернету.
А вообще, переход на новый протокол технически сложен и обходится очень дорого. Так что лучше тратить силы не на аналоги неплохо отлаженных и всеми поддерживаемых протоколов, а на что-нибудь действительно новое. Вот, например, есть интересный проект CCNX (content-centric networking).
то есть вы хотите убрать целостность, а потом добавить ее еще раз? о_О
если я вас правильно понял, то это равносильно увеличению размера фрейма
добавить только там где надо. И поменять смысл целостности, например проверят целостность частей файла, а не каждого пакета как пример. Да и не одной проверкой целостностью tcp беден.
Класно, скачал 700 меговый файл, частями по 1 мегабайту. В итоге все части оказались битыми. Лучше уж и там и там проверять, и в пакетах и в p2p клиенте.
вы вас какието проблемы со связью :) я качал исошки по tftp, ничего нормально скачалось. у меня тонкие клиенты по udp качают ядро системы, это конечно не услувия через интернет, но все же. p2p вообщето на udp переходит. И да: чем ситуация с 700 битами частями отличается 700 битый частей в tcp? тут проверка каждого пакета (в tcp), а в udp пусть будет части, размером ну наример с 512килобайт. часть не сошлась шлет поновой.
Сделайте прототип и попробуйте передать файл. именно через интернет.
ZOMG!
MD5 (kernel) = 0e81c7786ae6a7dab47cd09b900f8856 -приемник
MD5 (kernel) = 0e81c7786ae6a7dab47cd09b900f8856 -источник
du -h kernel
3,3M kernel
пришлось таймауты крутить, из-за того, что я нахожусь в США, а сервер в Сибири.
P.S.
bash.org.ru/quote/394858
Передавлось 3,3М? Тогда для чистоты эксперимента передать 700 метровый файл. Все замерить. Потом передать с помощью TCP (многопоточно). Все замерить. И если udp вырулит — то статью на хабр с цифрами ;)
боюсь, что tftp с этим по инету не справится :) он все же совсем не для этого создан. И в нем не релизована проверка целостности частей о которой я говорю.
То, что 700 фаил передастся с ошибками — 100%, ну и tcp тоже с этими же ошибками и передаст, только завдублит все много раз. и я уже говорил — я нахожусь в тысячах милях от своего сервера.
Вот инфа по uTP (micro TP)
bittorrent.org/beps/bep_0029.html -1
arstechnica.com/old/content/2008/12/utorrents-switch-to-udp-and-why-the-sky-isnt-falling.ars -2
www.thinkbroadband.com/news/3807-utorrent-shifts-towards-udp-to-make-it-work-better.html -3
Зря человека минусуете, у нас SCADA система на UDP написана, обрабатывает десятки тысяч сигналов. UDP работает в несколько раз быстрее TCP за счет того, что не надо осуществлять коннект и разрыв соединения.
А контроль целостности реализуется поверх протокола.
вот об этом я и говорю, не контроль целостности основная проблема TCP. Забавно плюсуют тех чьи коментарии или шутка или человек не в теме — #comment_2174857 #comment_2175082
а что вы с аутентификацией делать собираетесь?
ооо а в TCP уже устроенный алгоритм аутенфикации появился? Ну лично я буду использовать authpf, залогинился на сервер и попал в гудлист :)
ну да, он там всегда имелся — это числа syn и ack.
Очевидно, что использовать TCP лучше, чем UDP с кучей накрученных костылей.
это создание сессии. аутенфикация на уровке: это я! а это я! точно ты? точно, а ты? да!
от спуфинга она почему-то не спасает.
это спасает вас от спуфинга, когда нет человека посередине, т.е. в 99 процентах случаев
Если вам надо отправлять изредка сигналы, то на каждый сигнал устанавливать соединение, а потом его закрывать — это фигня в большинстве случаев

Если вам надо отправлять сигналы довольно часто, то установить соединение и отправлять сигналы по заранее установленному соединению — вполне приемлемо в большинстве случаев.

Если у вас данные идут сплошным потоком, то использовать UDP — это фигня в большинстве случаев.

Ествественно всё зависит от конкретной задачи. Если у вас производительность не требуется, то можно и на каждое сообщение TCP-соединение устанавливать. UDP (фактически user-level IP) оставили не просто так.
UDP + контроль целостности = TCP
Я не зря сказал про сигнальные протоколы. Поверх UDP делается какой-нибудь reliable datagram protocol. В идеале — даже вместо UDP, но это было бы хуже с точки зрения проникновения через современные firewalls. Использование UDP и прочих над ним навернутых протоколов без установления соединения позволяет сэкономить на паре обменов сообщениями.
TCP/IP — «глупый» протокол. Он ничего не знает о специфике данных внутри пакетов, а для той самой «гарантированной доставки» просто шлет данные повторно, не учитывая что реально нужно переслать, а что — нет. Как образец умного протокола — uTP: он в состоянии четко определить, что именно прошло/непрошло и что нужно отправить повторно.
UDP — это совсем не решение. Собственно, в нише HTTP, TCP замечательно работает и замечательно такому применению подходит.

Ну и собственно, кроме TCP/UDP, для любителей экзотики, есть еще SCTP и DCCT. У SCTP есть реализация для винды.
> есть еще SCTP и DCCT.

Вот именно, только что хотел об этом напомнить. :-)
Как раз хотел про SCTP сказать. Как замена TCP вполне себе подойдет. И реализация есть, конечно, далеко не только для винды. =)
В телефонии им пользуются и не жалуются. (http://en.wikipedia.org/wiki/SIGTRAN)
В VoIP TCP не подходит по той причине, что он будет до посинения стараться передать пакет, которые уже как 20 ms нафиг никому не нужен, а тот что нужен стоит в очереди.
Аналогично и для web — посмотрите сколько картинок и баннеров на типичной странице — на каком-нибудь новостном сайте, например. Либо одна из них «застрянет» и все остальные не будут грузиться из-за нее, либо нужно устанавливать отдельное соединение на каждую картинку — а отдельное соединение это 1.5 rount-trip обмена в TCP handshake (SYN, SYN-ACK и ACK) плюс оно «отъедает» порт на сервере, кроме того, если нужно одну из картинок загрузить с другого сервера (заранее не известного для балансирования нагрузки), то нужно либо делать редирект, либо динамически генерировать все содержимое страницы, либо заниматься всякой фильтрацией и вмешательством в протоколы более высокого уровня.
> посмотрите сколько картинок и баннеров на типичной странице

Банеры, как правило, с других серверов идут, вообще-то.
TCP при передачи потоковых данных работает быстрее, чем UDP за счет масштабирования окна данных.
Алгоритмы масштабирования окна в стандартном TCP (понимаемом всеми операционными системами и роутерами) был придуман очень давно и морально устарел. Кое-что исправили новыми совместимыми патчами, но нельзя ведь выйти за пределы принципиальных ограничений, наложенных форматом пакета и его интерпретацией уже существующим оборудованием. А вот новые протоколы, которые реализуются поверх UDP, по определению свободны от таких ограничений, которые идут от необходимости поддерживать совместимость со всем старым железом и ОС.
В принципе для альтернативных протоколов (типа SCTP) не нужен даже UDP, они могут прекрасно работать и поверх чистого IP. Но на практике очень многие firewalls, провайдеры и т.п. убивают пакеты неизвестных им протоколов или сильно дискриминируют этот трафик. Поэтому в открытом Интернете использовать UDP надежней. В закрытых же сетях можно работать прямо поверх IP.
Если TCP работает быстрее, чем продвинутые дейтаграмм-ориентированные протоколы, то либо это плохие протоколы, либо проблема в шейпинге траффика недобросовестными провайдерами или оборудованием, которое специально отдает предпочтение TCP и дискриминирует UDP.
Если нет никакой дискриминации, то UDP в сочетании с умным протоколом работает быстрее, чем обычный TCP. Естественно речь идет о ситуации, когда часть пакетов теряется или повреждается. На идеальном канале без потерь, вариаций в задержке и искажений, «кондовый» TCP может быть быстрее — за счет поддержки на уровне ядра ОС и железа.
Ну по-моему это почти очевидно, что TCP является частным случаем протокола поверх IP, так что под конкретную задачу свой протокол может быть оптимальнее. С UDP то же самое, разве что с поправкой на дополнительный оверхед на UDP. О чём здесь спорить то?

Другое дело, что не всегда оправданна разработка своего собственного протокола, если default (TCP) приемлем.
Вообще спор был о том, что TCP с его handshake и свойством останавливать весь поток из-за потери или повреждения одного-единственного кадра уже не адекватен для большинства современных приложений. Раньше приложения были простыми и применение TCP позволяло не заморачиваясь быстро писать программы. Теперь имплементация пересылки байтов по сети составляет 1% от времени разработки приложения в целом. Поэтому пользы от той автоматизации, которую дает TCP, уже ОТНОСИТЕЛЬНО мало. А вот вносимое им принципиальное ограничение на задержку всего потока из-за единственного потерянного кадра — реально мешает быстрой загрузке страниц (например). Как и начальный handshake. Да и алгоритмы окна, алгоритм неселективных подтверждений в TCP, отсутствие ECN — все это уже устарело. Что-то улучшают совместимыми патчами, а что-то нельзя улучшить без нарушения совместимости. Поэтому было бы логичным вообще отказаться уже от массового использования TCP.
Недостатки HTTP известны сразу с его появления, ничего революционного в этом нет. То, что исходит оно от гугла, хорошо тем, что гугл имеет несколько превышающие нулевую отметку шансы это дело протолкнуть, во-вторых, типичный «админ», не читавший в жизни ни rfc 2616, ни вообще ничего, таки поведется на шум =)
Если брать время отправки по протоколу HTTP за 100%, SPDY уменьшает время загрузки в 2 раза, то скорость SPDY 50% быстрее или составляет 50% от скорости HTTP.
UFO just landed and posted this here
В плане внедрения основная проблема даже не в обновлении браузеров, а в обновлении серверного ПО. Пока нет поддержки со стороны Апача и других серверов — протокол останется игрушкой Гугла.
я думаю, при необходимости апач быстро подкрутят. А вот в ISS поддержка может появится не скоро
фи, не мучайте покойника, он живет только за счет роста популярности вендосервером, которая растет из-за обилия эникейщиков и непонимания индивидов из 1С и тому подобных, что SaaS это хорошо, а дрежать продукты только под Windows это не православно, это даже не сотонически это по fagot'ски.
нафига? у меня винды нет. Он ставится на *nix like? им можно рулит из консоли и хранить конфиг в sql? apache не панацея. Или чтобы поднять вэь сервер мне надо обязательно графическую оболочку в систему ставить и держать ее запущеной? А еще круто расход ресусрсов во время простоя. Вот когда винда (серверная) научится держать idle на 99% во время простоя со всеми запущеными сервисами тогда посмотрю в эту сторону. А когда можно будет все делать из консоли полноценно, а не через костыли — может даже поставлю потестить.
P.S.
не ожидал встреить фаната IIS тут, собстно я не троллю :)
>Он ставится на *nix like?
а зачем?
>им можно рулит из консоли
да
> и хранить конфиг в sql?
0_0
>Или чтобы поднять вэь сервер мне надо обязательно графическую оболочку в систему ставить и держать ее запущеной?
не обязательно, Windows Core Install
>А когда можно будет все делать из консоли полноценно, а не через костыли — может даже поставлю потестить.
PowerShell

PS я не фанат, просто я знаю, что ИИС хорош, т.к. работаю как с апач/нжинкс+пхп, так и с ИИС+.нет
да я IIS не крутил из-за осадака 6 версии. не разу встречал чтобы винду настраивали через консоль (через консоль, а не MMC).
>> и хранить конфиг в sql?
>0_0
очень удобно для vhost'ов :)
>PS я не фанат, просто я знаю, что ИИС хорош, т.к. работаю как с апач/нжинкс+пхп, так и с ИИС+.нет
меня платформа .NET не привлекает.
>>Он ставится на *nix like?
>а зачем?
зачем мне плодить сервера если у меня уже есть сервера на freebsd,dragonflybsd?
>Win 2008 Web раздаётся майкрософтом на каждом углу (выставки, конференции, тренинги, даже когда банально пива попить приглашают)
в моем городе ниразу не было такого, мне в дефолтсити ехать за бесплатной виндой?
И насколько я понимаю на десктоп мне тоже придется ставить винду.
UFO just landed and posted this here
Я бы добавил, что 0 не только в IIS7, но и в IIS вообще, а так же серверной архитектуре винды. :)
Он ставится на Win. Точнее интегрирован в неё.

Им можно рулить из консоли. Более того, всей виндой можно рулить из консоли. Курим Win 2008 Server Core.

Конфиг штатно нельзя хранить в sql (хотя сторонние расширения вроде позволяют, не интересовался детально), но конфиг ииса — это обычный xml-файл, которым куда как удобней программно рулить, нежели реляционной sql-базой.

А вообще, IIS7+ вполне себе нормальный сервер, конфигурится от «мегашутстро отдаём статику, что аж nginx отдыхает» и до полноценного сервера приложений ASP.NET. Кстати, ASP.NET при грамотном подходе побыстрее PHP. В частности за счёт jit и возможности контроля запроса на почти всех стадиях его прохождения в сервере (т.е. на стадии принятия, распаковки, авторизации и т.д.).

И да, я сейчас работаю исключительно с ASP.NET и Win-платформой. Пришёл с nix'ов и просто счастлив тому факту, что не надо самому городить зоопарк из nginx+apache+php+memcached+eAccelerator+fastcgi и т.д. Теперь у меня всё в одном процессе и очень быстро.

PS: Следующим шагом своей эволюции считаю избавление от «реляционной зависимости» :)
PS2: И если Вы сейчас начнёте рассказывать про то, что всё это Win-счастье стоит немалых денег, то сразу отвечаю, что Win 2008 Web раздаётся майкрософтом на каждом углу (выставки, конференции, тренинги, даже когда банально пива попить приглашают) бесплатно с правом коммерческого использования. ASP.NET бесплатен и идёт с .NET Framework. IIS7/7.5 бесплатен и идёт с сервером. SQL Server существует в бесплатной Express-редакции, в которой для web-разрабочика практически нет ограничений. Visual Studio тоже существует в бесплатной Express-редакции, в которой хоть не так комфортно, как хотелось бы, но всё же вполне юзабельно.

PS3: Win-хостинг на том же паркинге от 99руб/мес :)
скачал, сейчас посмотрю. За полследнии пол-года MS ушли дальше чем я думал. Но все равно винда в фоне жрет ресурсов больше…
P.S.
скольже тут любитейлей MS. это пугает, надо срочно с этим, что-то делать.
Сейчас как раз разворачиваю Win 2008 Web Server на неттопе Acer Revo R3610… :) Посмотрим :) если удовлетворит мои запросы — пойдёт в агаву на колокейшн :)
нет ну это уже не нормально. я покидаю этот спор.
Если вы имели ввиду IIS (а вы его имели ввиду, правда?), то исходя из архитектуры IIS 6 ( https://msdb.ru/Downloads/Docs/Events/Materials/281102/SEC10.ppt ) сам IIS переписывать и не придется, достаточно переписать или заменить драйвер http.sys. Кстати, во время работы IIS не имеет сетевых подключений и не слушает никаких портов. По поводу IIS 7 не скажу — пока плотно с ним не занимался, но сетевое взаимодействие там должно быть как у IIS 6.
нда, опечатался конечно ISS.

Сенкс за ссылку. Интересно, почитаю.
Зачем такие революции, можно же эволюционировать, сделав протокол HTTP 1.2 с обратной совместимостью. Так же как сейчас с протоколом HTTP 1.1 по сравнению с HTTP 1.0.
то что создает гугл — это протокол более низкого уровня. его на уровень http не выведешь.
Вообще-то SPDY это протокол такого же прикладного уровня (по отношению к Интернету), как и HTTP. Вы, возможно, с SCTP путаете, тот — протокол уровня TCP/UDP.
Я вот помню лет 6 назад мужики меняли в TCP алгоритм прохождения и подтверждения пакетов, получая большой прирост скорости и качества сигнала. Где оно теперь? Если SPDY будет поддерживать только хром, который надо собрать из исходников и сервер гугла, который вообще отсутствует в открытом доступе — кому он нужен? А если и нет… Ну будет в Apache прописано «да, мы поддерживаем SPDY», ну и что? К тому же у большинства народу в интернете ширина канала такая, что никаких приростов они не увидят. Какой прирост на 512кбит может быть, когда браузер просто чтобы получить информацию тратит в десятки раз больше времени, чем занимает задержка…
ну да, качество сигнала очень зависит от алгоритмов протокола транспортного уровня:)
UFO just landed and posted this here
извиняюсь, если спрашиваю что-то не то, но как его собрать из исходников?
Странно, что они в работе ни разу не упомянули SCTP, ни в аспекте сравнения с HTTP over SCTP, ни в аспекте перевода сообщений SPDY на SCTP.
Действительно, ваша ссылка намного более актуальна для первоначального ознакомления, чем приведённые в оригинальном посте.
Не читая предварительно комментов, готов поспорить, что чуть выше уже кто-нибудь ляпнул про «новый интернет с блекджеком...» и т.п. ;)
UFO just landed and posted this here
Блин, проспорил… Не тот нонче хабраюзер пошел, то ли дело былые времена :)
>По итогам предварительного тестирования на канале максимальной толщины, выигрыш в скорости загрузки для 25 крупнейших сайтов интернета составлял до 55%.

что-то я вот эту фразу не понял. Это как они тестировали этот протокол для крупнейших сайтов, если для тестирования необходимо также установить какую-то штуку, которая будет поддерживать этот протокол на серверах этих сайтов?
скачали заглавные страницы на диск и отдали своим сервером?
Походу Google в процессе проектирования Chrome OS замерил производительность всего начиная с момента включения питания.
Особо узкие места выделили и сформировали команды по изучению проблемы.
Так что это не последняя статья про то, что гугл изобретает что-то по новой.

С другой стороны, они тут подкрутят, там подопрут и глядишь сделают незаметной глазу простого пользователя разницу между хранением документов на сервере и в локали.
То есть в рамках Chrome OS данный протокол найдёт своё применение, даже, если никто кроме серверов Гугла не будет его поддерживать.

PROFIT…
По-моему, это очередной клон opera-turbo-подобных сервисов. Достаточно на выходе в интернет http жать в gzip, и на выходе сайтов жать в gzip — получится прирост не меньший в скорости, но за счет процессоров.

А сжатие HTTP-заголовков приведет к апгрейду межсетевых экранов, что куда дороже, чем удобство быстрого просмотра вКонтакте для сотрудников.
Идея неплохая.
А надо понимать, что до adoption ее не такой уж большой путь.
Мест «где нужно поменять» глобально не так уж много.
Web-серверы
Vendor Product Web Sites Hosted Percent
Apache Apache 108,078,535 46.90%
Microsoft IIS 49,723,999 21.58%
Tencent qq.com 30,069,136 13.05%
Google GWS 13,819,947 6.0%
nginx nginx 13,813,997 5.99%

Т.е. если удатся убедить Apache включить в очередной билд поддержку SPDY (а поскольку это Open Source, можно предложить патч), то со стороны Web Server победа будет достигнута.

На стороне браузеров — ну вот Chrome явно получит поддержку SPDY. Firefox можно предложить патч или профинансировать разработку, в Firefox охотно к Гуглу прислушиваются.
Google в последнее время живчик. По всем фронтам.
Sign up to leave a comment.

Articles