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
Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию