Пол Хадсон пробует объяснить, почему...

Пол Хадсон пробует объяснить, почему модификации в сетевых протоколах могут сделать 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, однако при каждом подключении нужно выбирать между UDP и TCP. Как это — выбирать? До сих пор меня не просили! Ну, хорошо, не вам — это программы выбирают 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-трафика, почты, FTP, SSH и подобных протоколов. Во всех этих случаях потеря мельчайшего кусочка данных повергает в негодность всё прочее — если вы загрузили 100 MB файл, а 14 КБ информации из него посеял UDP, то файл бесполезен! Стоп… если TCP уж такой замечательный, зачем тогда нужен UDP? Затем, что подчас потеря кусочка информации роли не играет. Вот, скажем, VoIP. Если мы беседуем через Интернет по телефону, и связь прервалась всего на секунду, TCP застопорится и затребует повтора реплики, пока все не дойдет до вас в лучшем виде. UDP просто перепрыгнет эту секунду и продолжит себе трансляцию. При прослушивании радио TCP вообще может прервать подключение, только и всего. UDP намного проще и идеально подходит для случаев, когда непрерывность соединения важнее точности трансляции. Вообразите, что стало бы с онлайн-репортажами о всяческих встречах президентов, если бы вместо TCP использовали UDP! Однако все эти TCP/UDP, вроде бы, уже не новинка. Зачем же говорить о них сейчас? По причине BitTorrent. Сейчас в этой системе используется TCP, а значит, происходит проверка сохранности отосланных данных. И правильно, неужели нет? Ведь кому надобны, допустим, 99,9% файла? Несомненно, но сейчас любой Torrent-клиент точно в курсе, что он должен получить в результате закачки и, при необходимости, запросит н
едостающее. И они перейдут на UDP и увеличат скорость? Красота! Не спешите. Одно из достоинств TCP — его способность сообщать о недополучении данных, а в случае значительной потери — уменьшать скорость передачи, чтобы не перегружать сеть. У UDP ничего такого нет: он будет продолжать отправку, даже если линия будет забита напрочь. Если скорость передачи по сети снижается, то TCP-программы (почта, web и пр.) сбавят ход, а UDP-приложения будут шпарить напропалую, лишь бы отстреляться. А разве торренты не составляют солидную часть нынешнего Интернет-трафика? В таком случае, переход приведет к замедлению! Потенциально — да. Принужденные избирать между UDP, заполняющим сеть, и замедлением web, почты и других немаловажных служб, Интернет-провайдеры неминуемо убавят приоритет UDP-трафика. А это, в свою очередь, приведет к замедлению VoIP, игровых соединений, видео-трансляций и других UDP-программ. Ужасно! Можно ли как-нибудь сделать BitTorrent чуточку хитрее? Над этим и бьются разработчики UDP: они хотят приобщить протоколу кое-какие функции TCP (в частности, контроль непроходимости сети). Проверка целостности доставки UDP не нужна, но определять проходимость канала протокол научится не хуже TCP, и выиграют от этого все. Станут ли торренты быстрее? Возможно. Но если разработчики BitTorrent добьются своей цели, уменьшив объем попусту расходуемого Интернет-трафика, то и весь Интернет ускорится. Не забывайте, что протоколу TCP уже 35 лет, он «взрослый», и если новоиспеченное UDP-протокол BitTorrent (UTP) его победит, это будет нечто! Небольшой, но ценный бонус: гадкие TCP-сообщения, принудительно закрывающие BitTorrent-соединения, рассылаемые кое-какими интернет-провайдерами (ComCast, это про вас!), с UDP перестанут работать. Ура! Бегу испытывать… Не спешите: пока вся эта система проходит бета-тестирование. Она предстанет в следующей официальной версии клиента BitTorrent; нужно также, чтобы эта версия была установлена и на других компьютерах, с которыми вы соединяетесь.

Понравилась статья? Получай обновления и будь всегда в курсе событий!
Подпишись на RSS или
blog comments powered by Disqus