- Подписка на печатную версию:
-
- Подписка на электронную версию:
-
- Подшивки старых номеров журнала (печатные версии)
-
LXF116:Что за штука
Материал из Linuxformat.
Что за штука... UDP?
- Пол Хадсон пробует объяснить, почему изменения в сетевых протоколах могут сделать BitTorrent «хитрее» – или остальной Интернет медленнее.
- Здорово! Приятно узнать о хитростях, которые ускоряют загрузку моих дистрибутивов!
- Загрузка дистрибутивов. Вот-вот, именно это поможет мне объяснить суть изменений. Итак, начнем. Жили-были динозавры…
- Э-э, а не прокрутить ли вперед?
- …а потом появился Интернет! И Винт Серф посмотрел на него, и сказал: это хорошо. И было два основных способа отправки данных – TCP и UDP.
- Как-то мы не туда рулим. Я отправляю свои данные электронной почтой, без всяких там UDP. А TCP – это не антибиотик?
- Видимо, мы говорим о разных вещах. Подумайте: почтовые сообщения – это всего лишь текст. Как, по-вашему, он приходит к адресатам?
- Ну, насчет этого я в курсе: SMTP, POP3, IMAP и пара других аббревиатур. Они-то и колдуют с отправкой и получением.
- Да, но они просто добавляют несколько строк с мета-информацией о ваших письмах. А как же сообщения находят свой путь в Интернете?
- …TCP?
- Уже теплее.
- TCP и UDP?
- Горячо! Проще говоря, ваше письмо заворачивается в SMTP (так называемый «прикладной уровень», так как он содержит информацию для почтовых приложений), затем в TCP или UDP (так называемый «транспортный уровень», так как осуществляет передачу из точки A в точку B). Технически, все эти данные потом заворачиваются в еще один слой, Internet Protocol, или попросту ‘IP’, называемый «Интернет-уровнем», он отвечает за фактическую доставку сообщения по глобальным каналам связи.
- Ну у вас и технояз. По мне, антибиотики как-то проще...
- Да я стараюсь помельче разжевать, честно! Суть в том, что есть два способа отправки пакетов данных по Интернету, TCP и UDP. Оба протокола заворачиваются в IP, а вы пользуетесь либо TCP/IP, либо UDP/IP.
- А в чем разница? Надо выбрать Интернет-протокол?
- Нет, все идет через IP, но при каждом подключении следует выбирать между TCP и UDP.
- Как это – выбирать? До сих пор меня не просили!
- Ну, хорошо, не вам – это программы выбирают TCP или UDP, в зависимости от типа пересылаемых данных. Видите ли, UDP – протокол незатейливый, он отправляет данные от A к B, и его не волнует, что будет дальше: в каком виде данные доберутся до точки назначения и доберутся ли вообще. Иными словами, если отосланы три пакета, 1, 2 и 3, то к адресату они могут прибыть в виде 3, 2, 1. А бывает и так, что пакет 2 доставлен, а 1 и 3 потерялись в эфире! Короче говоря, отправил и забыл.
- Ах, вот почему я не получил почты на прошлой неделе!
- Погодите, я не договорил. TCP очень отличается от UDP, ведь этот протокол создает соединение и держит его открытым, пока не будут доставлены все данные. Протокол автоматически проверяет, все ли данные прибыли в сохранности, а при необходимости даже повторяет отправку. Если что-то перепуталось (например, прибыло 3, 2, 1 вместо 1, 2, 3), TCP дождется, пока вся передача не завершится в правильном порядке – а приложение (почтовый клиент, например) в процессе не участвует.
- Умно придумано. Небось, это UDP посеял мою почту…
- Никоим образом. Поскольку TCP гарантирует доставку данных (если сигнал до отправителя не доходит, подключение будет просто прервано), его и используют для доставки по Интернету важных сведений – а именно, почты, web-трафика, FTP, SSH и т.п. Во всех этих случаях потеря мельчайшего кусочка данных приводит в негодность все остальное – если вы загрузили 100-мегабайтный файл, а 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 мы с вами сможем не раньше чем через шесть месяцев. LXF