Статья добавлена 12 июля 2009, в воскресенье, в 09:04. С того момента...
1248 |
просмотров |
0 | добавлений в избранное |
0 | комментариев |
Представлена в разделах:
Что за штука UDP? Будующее BitTorrent
Пол Хадсон пробует объяснить, отчего изменения в сетевых протоколах могут сделать BitTorrent «хитрее» — или остальной Интернет медленнее.
Добрейший вечер! Приятно узнать о хитростях, которые ускоряют загрузку моих дистрибутивов!
Загрузка дистрибутивов. Вот-вот, именно это поможет мне пояснить суть изменений. Итак, приступим. Жили-были динозавры...
Э-э, а не прокрутить ли вперед?
...а потом появился Интернет! И Винт Серф взглянул на него, и промолвил: это хорошо. И было два ключевых способа отправки данных — TCP и UDP.
Как-то мы не туда рулим. Я отправляю свои данные электронной почтой, в отсутствие всяческих UDP. А TCP — это не антибиотик?
По-видимому, мы говорим о разных штуках. Пораскиньте умом: почтовые сообщения — это лишь текст. Каким образом, по-вашему, он приходит к адресатам?
Ну, насчет этого я в курсе: POP3, SMTP, IMAP и парочка других аббревиатур. Они-то и колдуют с отправкой и получением .
Ну разумеется, однако они не мудрствовать лукаво присоединяют несколько строк с мета-информацией о ваших письмах. А как же сообщения находят путь в Интернете?
...TCP?
Уже теплее.
UDP и TCP?
Горячо! Если совсем просто, корреспонденция заворачивается в SMTP (так называемый «прикладной уровень», потому что он содержит информацию для почтовых программ), потом в TCP или UDP (т.н. «транспортный уровень», потому как осуществляет транспортировку из точки A в точку B). Говоря технически, все эти данные потом заворачиваются ещё в один слой, Internet Protocol, или просто «IP», называемый «Интернет-уровнем», он отвечает за фактическую доставку сообщений по глобальным каналам связи.
Ну у вас и технояз. По мне, антибиотики как-то проще...
Да я стараюсь помельче растолковать, честно! Суть в том, что существует два способа отправки пакетов данных по Интернету, TCP и UDP. Оба протокола заворачиваются в IP, а вы используете либо TCP/IP, либо UDP/IP.
А в чем их отличие? Надо выбрать Интернет-протокол?
Никак нет, всё идет через IP, однако при всяком подключении нужно выбирать между TCP и UDP.
Как это — выбирать? До сих пор меня не просили!
Ну, хорошо, не вам — это программы выбирают UDP или TCP, в зависимости от типа пересылаемых данных. Видите ли, UDP — протокол немудрёный, он отправляет данные от A к B, и его не тревожит, что будет дальше: в каком виде данные достигнут точки предназначения и достигнут ли вообще. Иными словами, если посланы три пакета, 1, 2 и 3, то к получателю они могут прибыть в виде 3, 2, 1. А бывает и так, что пакет 2 доставлен, а 1 и 3 затерялись в эфире! Короче говоря, отправил и забыл.
Ах, вот по какой причине я не получил почты на прошлой неделе!
Погодите, я не договорил. TCP сильно различается от UDP, потому что этот протокол создает соединение и хранит его открытым, пока не будут доставлены все данные. Протокол автоматически контролирует, все ли данные прибыли в сохранности, а при надобности даже повторяет отправку. Если что-то перепуталось (скажем, прибыло 3, 2, 1 вместо 1, 2, 3), TCP дождется, пока вся передача не завершится в правильном порядке — а программа (почтовый клиент, например) в процессе не участвует.
Умно придумано. Небось, это UDP потерял мою почту...
Никоим образом. Поскольку TCP ручается за доставку данных (если сигнал до отправителя не доходит, подключение будет просто прервано), его и используют для доставки по Интернету важных сведений — а собственно, web-трафика, почты, SSH, FTP и подобных протоколов. Во всех этих случаях потеря небольшого кусочка данных повергает в негодность всё прочее — если вы загрузили 100 MB файл, а 1 КБ информации из него посеял UDP, то файл бесполезен!
Стоп... если TCP уж такой замечательный, зачем тогда UDP?
Затем, что подчас потеря кусочка информации роли не играет. Вот, скажем, VoIP. Если мы с вами беседуем через Интернет по телефону, и связь оборвалась всего на секунду, TCP застопорится и потребует повтора реплики, пока все не дойдет до вас в лучшем виде. UDP попросту перепрыгнет эту секунду и продолжит себе трансляцию. При прослушивании радио TCP вообще может прервать подключение, только и всего. UDP намного проще и безупречно подходит для случаев, когда беспрерывность соединения важнее точности передачи. Вообразите, что стало бы с онлайн-репортажами о всяких встречах президентов, если бы вместо TCP использовали UDP!
Однако все эти TCP/UDP, вроде бы, уже не новость. Зачем же говорить о них сейчас?
По причине BitTorrent. Сейчас в этой системе используется TCP, а значит, происходит контроль сохранности отосланных данных.
Ну и правильно, неужели нет? Ведь кому нужны, допустим, 99,9% файла?
Несомненно, но сейчас любой BitTorrent-клиент точно в курсе, что он должен получить в результате закачки и, при надобности, запросит недостающее.
И они перейдут на UDP и увеличат скорость? Красавцы!
Не спешите. Одно из достоинств TCP — это его способность сообщать о недополучении данных, а в случае немалой потери — уменьшать скорость передачи, чтобы не перегружать сеть. У UDP ничего подобного нет: он будет продолжать отправку, даже если линия будет забита напрочь. Если скорость передачи по сети снижается, то TCP-программы (web, почта и пр.) сбавят ход, а UDP-приложения будут шпарить напропалую, лишь бы отстреляться.
А разве BitTorrent не составляет солидную часть нынешнего Интернет-трафика? В таком случае, переход приведет к замедлению!
Потенциально — да. Принужденные выбирать между UDP, заполняющим сеть, и замедлением web, почты и других важных служб, Интернет-провайдеры неминуемо убавят приоритет UDP-трафика. А это, в свою очередь, приведет к замедлению VoIP , игровых соединений, видео-трансляций и других UDP-программ.
Ужасно! Нельзя ли как-нибудь сделать BitTorrent чуточку хитрее?
Над этим и бьются разработчики UDP : они хотят добавить протоколу отдельные функции TCP (в частности, проверку непроходимости сети). Проверка целостности доставки UDP не нужна, но определять проходимость канала протокол научится не хуже TCP, и выиграют от этого все.
Станут ли торренты быстрее?
Возможно. Но если разработчики протокола BitTorrent добьются своей цели, уменьшив объем попусту расходуемого Интернет-трафика, то и весь Интернет ускорится. Не забывайте, что протоколу TCP уже 35 лет, он «взрослый», и если новый UDP-протокол BitTorrent (UTP) его победит, это будет нечто! Небольшой, но ценный бонус: гадкие TCP-сообщения, принудительно закрывающие BitTorrent-соединения, рассылаемые некоторыми ISP (ComCast, это про вас!), с UDP перестанут работать.
Ура! Бегу испытывать...
Не спешите: пока вся эта система проходит бета-тестирование. Она появится в следующей официальной версии клиента BitTorrent; нужно также, чтобы эта версия была установлена и на прочих компьютерах, с которыми вы обмениваетесь файлами. Клиентов BitTorrent не так много, и большинству пользователей придется дожидаться следующего цикла обновления дистрибутивов (а вместе с ними и клиентов). Выходит, что скачать обновленный дистрибутивчик через UTP мы с вами сможем не ранее, чем через шесть-девять месяцев.