<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Miranda IM Russian Community &#187; мануал</title>
	<atom:link href="http://miranda.im/tag/%d0%bc%d0%b0%d0%bd%d1%83%d0%b0%d0%bb/feed/" rel="self" type="application/rss+xml" />
	<link>http://miranda.im</link>
	<description>Красочный мир Miranda IM на русском языке</description>
	<lastBuildDate>Thu, 25 Jun 2009 17:00:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Передачи файлов по протоколу Jabber</title>
		<link>http://miranda.im/2009/03/14/jabber-file-transfers/</link>
		<comments>http://miranda.im/2009/03/14/jabber-file-transfers/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 16:16:39 +0000</pubDate>
		<dc:creator>(..нужное вписать..)</dc:creator>
				<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[file transfers]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[tutotial]]></category>
		<category><![CDATA[мануал]]></category>
		<category><![CDATA[передачи файлов]]></category>

		<guid isPermaLink="false">http://miranda.im/2009/03/14/%d0%bf%d0%b5%d1%80%d0%b5%d0%b4%d0%b0%d1%87%d0%b8-%d1%84%d0%b0%d0%b9%d0%bb%d0%be%d0%b2-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d1%83-jabber/</guid>
		<description><![CDATA[В связи с участившимися вопросами про невозможность передачи файлов через Jabber, было решено написать небольшой обзор-мануал о том, как это все работает и как корректно настроить Miranda IM для файлообмена по этому протоколу.
Огромное спасибо:

Vasilich&#8216;у, как соавтору текста
mlu, как человеку, цитаты из переписки с которым составляют существенную часть текста 
Ghazan&#8216;у и ъыь, которые ответственно отвечали на [...]]]></description>
			<content:encoded><![CDATA[<p>В связи с участившимися вопросами про невозможность передачи файлов через <strong>Jabber</strong>, было решено написать небольшой обзор-мануал о том, как это все работает и как корректно настроить <strong>Miranda IM</strong> для файлообмена по этому протоколу.</p>
<p>Огромное спасибо:</p>
<ul>
<li><strong>Vasilich</strong>&#8216;у, как соавтору текста
<li><strong><a href="http://vke.ru/">mlu</a></strong>, как человеку, цитаты из переписки с которым составляют существенную часть текста <img src='http://miranda.im/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
<li><strong>Ghazan</strong>&#8216;у и <a title="Jabber contact" href="xmpp:Als@admin.ru.net?message"><strong>ъыь</strong></a>, которые ответственно отвечали на кучу, порой глупых, вопросов.
</ul>
<p><span id="more-86"></span></p>
<p>Итак, в <strong>Jabber</strong> существует 4 &#8220;способа&#8221; передачи файлов (описания <strong><acronym title="Extension Protocols">XEP</acronym></strong> (ксеп) можно почитать на <a href="http://xmpp.org/extensions/">http://xmpp.org/extensions/</a>)</p>
<ol>
<li><strong><acronym title="In-Band Bytestreams">IBB</acronym></strong> (<strong>I</strong>n<strong>B</strong>and <strong>B</strong>ytestreams &#8211; &#8220;внутри потока&#8221;, <acronym title="Extension Protocols">XEP</acronym>&#8216;ы <a href="http://xmpp.org/extensions/xep-0047.html">47</a> + <a href="http://xmpp.org/extensions/xep-0095.html">95</a>/<a href="http://xmpp.org/extensions/xep-0096.html">96</a>) &#8211; файл передается в основном XML-потоке, как простые сообщения, но со спец. флагом, чтобы клиент принимающей стороны понимал, что это часть файла, а не передаваемый текст. Принцип работы – такой же, как и у плагина <strong>FileAsMessage</strong>. <strong>Преимущества</strong>:<br />
<blockquote><p>- самый простой и надежный вариант, работающий в 99% случаев (с условием, что оба клиента поддерживают этот вариант передачи)</p></blockquote>
<p><strong>Недостатки:</strong></p>
<blockquote><p>- т.к. в этом случае бинарные данные передаются как текст, данные жмутся в <strong>base64</strong>, из-за чего трафик увеличится в среднем на 33%.</p>
<p>- самый медленный</p>
<p>- при передаче файлов возникают проблемы c обменом сообщений с контактом, с которым происходит файлообмен.</p></blockquote>
<li>Через <strong>прокси</strong> jabber-сервера (<acronym title="Extension Protocols">XEP</acronym>&#8216;ы <a href="http://xmpp.org/extensions/xep-0065.html">65</a> + <a href="http://xmpp.org/extensions/xep-0095.html">95</a>/<a href="http://xmpp.org/extensions/xep-0096.html">96</a>) &#8211; файл передаётся через прокси на сервере. <span style="color: #ff0000;">Это – не обычный socks-прокси, а специально заточенный для передачи файлов джаббер-сервис!</span> Этот способ подойдёт, если нет возможности прямого соединения с контактом (передающий находится за непрозрачным NAT, прокси) и у передающего правильно указан адрес данного сервиса (который может быть как на сервере передающего, так и на других серверах). Работает следующим образом: передающий подсоединяется к этому серверу (через изменённый протокол socks5), запрашивает сервер на инициализацию передачи файла. Сервер выделяет ip или id сессии, после чего передающий отправляет этот адрес принимающему. Принимающий подсоединяется к серверу и передает id. Если id совпадают, инициализируется передача файла. <strong>Преимущества:</strong><br />
<blockquote><p>- помогает, если отправляющая сторона сидит за непрозрачным NAT или прокси – скорость передачи данных выше, чем у <strong><acronym title="In-Band Bytestreams">IBB</acronym></strong></p>
<p>- отсутствуют недостатки, присущие <strong><acronym title="In-Band Bytestreams">IBB</acronym></strong></p></blockquote>
<p><strong>Недостатки:</strong></p>
<blockquote><p>- не все серверы поддерживают эту возможность (хотя иногда встречаются серверы с таким сервисом, открытым для незарегистрированных на этом сервере пользователей)</p>
<p>- скорость в большинстве случае ниже, чем у <strong><acronym title="Direct Connect">DC</acronym></strong></p></blockquote>
<li>Через <strong><acronym title="Direct Connect">DC</acronym></strong> (<strong>D</strong>irect <strong>C</strong>onnect, прямое соединение, <acronym title="Extension Protocols">XEP</acronym>&#8216;ы <a href="http://xmpp.org/extensions/xep-0065.html">65</a> + <a href="http://xmpp.org/extensions/xep-0095.html">95</a>/<a href="http://xmpp.org/extensions/xep-0096.html">96</a>) &#8211; устанавливается прямое соединение передающего с принимающим.<strong>Преимущества:</strong><br />
<blockquote><p>- самый быстрый и надёжный способ передачи файлов</p></blockquote>
<p><strong>Недостатки:</strong></p>
<blockquote><p>- не работает, если передающий подключен к интернету через непрозрачный NAT или прокси.</p></blockquote>
<li>Через <strong><acronym title="Out of Band Data">OOB</acronym></strong> (<strong>O</strong>ut <strong>o</strong>f <strong>B</strong>and Data, <acronym title="Extension Protocols">XEP</acronym> <a href="http://xmpp.org/extensions/xep-0066.html">66</a>) &#8211; упрощённо это можно представить так: клиент передающей стороны открывает у себя HTTP-сервер и даёт HTTP-ссылку другому клиенту, тот подключается и скачивает файл.Преимущества и недостатки аналогичны <strong>D</strong>irect <strong>C</strong>onnect&#8217;у.</li>
</ol>
<hr /><strong>С теорией закончили. Теперь рассмотрим возможности использования и настройки для каждого из способов.</strong></p>
<p>Первое и немаловажное замечание – чтобы Вы смогли <span style="text-decoration: underline;">принимать</span> файлы способом, отличным от <strong><acronym title="In-Band Bytestreams">IBB</acronym></strong>, необходимо снять галку в настройках Вашего Jabber-аккаунта &#8220;<strong>Accept only in-band incoming filetransfers</strong>&#8221;</p>
<p><strong><a href="http://miranda.im/wp-content/uploads/2009/03/clip-image0021.jpg" target="_blank"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" src="http://miranda.im/wp-content/uploads/2009/03/clip-image002-thumb1.jpg" border="0" alt="clip_image002" width="244" height="196" /></a></strong></p>
<hr />Теперь перейдем к настройкам <span style="text-decoration: underline;">передающей</span> стороны.</p>
<ol>
<li><strong><acronym title="In-Band Bytestreams">IBB</acronym>.</strong> Работает всегда и везде. Единственное условие – клиент принимающего должен поддерживать данный способ передачи файла. Ибо многие клиенты его режут (информация для гиков – Миранда умеет принимать файлы по <acronym title="In-Band Bytestreams">IBB</acronym> и с использованием <strong>message</strong>, и с использованием <strong>IQ</strong>, но посылает только через <strong>message</strong>). Для использования этого способа нужно снять все 3 галки в настройках жаббера.
<p>	<a href="http://miranda.im/wp-content/uploads/2009/03/clip-image00241.jpg" target="_blank"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" src="http://miranda.im/wp-content/uploads/2009/03/clip-image0024-thumb1.jpg" border="0" alt="clip_image002[4]" width="244" height="196" /></a></p>
<li>Через <strong>прокси</strong> jabber-сервера. Узнать, имеет ли Ваш сервер прокси для передачи файлов, и, если имеет, то узнать его адрес, можно следующим образом: зайти в <strong>Service Discovery</strong> jabber-аккаунта и найти сервис с identity &#8220;<strong>SOCKS5 Bytestreams</strong>&#8221; или &#8220;<strong>Proxy bytestreams</strong>&#8221; (обычно это <strong>proxy</strong>.servername.domain, например, для сервера miranda.im это <a href="xmpp:proxy.miranda.im?disco;type=get;request=info" title="Request service discovery">proxy.miranda.im</a> Ставим соответствующую галку в настройках и указываем адрес нашего прокси.
<p><a href="http://miranda.im/wp-content/uploads/2009/03/clip-image00281.jpg" target="_blank"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" src="http://miranda.im/wp-content/uploads/2009/03/clip-image0028-thumb1.jpg" border="0" alt="clip_image002[8]" width="244" height="196" /></a></p>
<li><strong>Direct Connect</strong>. Для успешной установки прямого соединения <strong>необходимо</strong> одно из следующих условий:
<ul>
<li>Прямое соединение Вашего компьютера с интернетом (прямой канал от провайдера с &#8220;белым&#8221; (реальным) ip-адресом)
<li>Если у Вас прямой канал от провайдера с &#8220;белым&#8221; (реальным) ip-адресом, но установлен роутер, то роутер должен быть:
</ul>
<blockquote><p><strong>а)</strong> или с поддержкой и активированным <strong><acronym title="Universal Plug and Play">UPnP</acronym></strong>, а в настройках сети Миранды для jabber-протокола должна стоять галка &#8220;<strong>Enable <acronym title="Universal Plug and Play">UPnP</acronym>&#8221;<br />
б)</strong> или сконфигурирован для приёма на определённый диапазон адресов, совпадающий с настройками сети Миранды для jabber-протокола</p></blockquote>
<p><a href="http://miranda.im/wp-content/uploads/2009/03/clip-image0021213.jpg" target="_blank"></a><a href="http://miranda.im/wp-content/uploads/2009/03/clip-image0021214.jpg" target="_blank"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" src="http://miranda.im/wp-content/uploads/2009/03/clip-image00212-thumb2.jpg" border="0" alt="clip_image002[12]" width="244" height="196" /></a></p>
<p>Если Вы подключены к интернету через прозрачный NAT, то нужно в настройках jabber прописать Ваш реальный (&#8221;белый&#8221;) ip адрес.</p>
<p><a href="http://miranda.im/wp-content/uploads/2009/03/clip-image002141.jpg" target="_blank"><img style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" src="http://miranda.im/wp-content/uploads/2009/03/clip-image00214-thumb1.jpg" border="0" alt="clip_image002[14]" width="244" height="196" /></a></p>
<p>Если выставлены галки на передаче файлов и через <strong><acronym title="Direct Connect">DC</acronym></strong>, и через <strong>proxy</strong>, то передача файла пойдет через <strong>прокси</strong>.</li>
<li><strong><acronym title="Out of Band Data">OOB</acronym> – необходимы </strong>те же условия, что и для <strong><acronym title="Direct Connect">DC</acronym></strong>. Миранда сама будет пробовать данный способ, никакой доп. настройки не требуется. Но, т.к. приоритет <strong><acronym title="Out of Band Data">OOB</acronym></strong> низок (см. ниже &#8220;<i>информацию для продвинутых пользователей</i>&#8220;), он используется довольно-таки редко.
</ol>
<hr /><strong>Информация для продвинутых пользователей</strong></p>
<ul>
<li>о том, как идет выбор способа передачи файлов (big tnx 2 <strong>mlu</strong>):<br />
<blockquote><p>Получаем капсы от клиента.</p>
<p>Если умеет <acronym title="Stream Initiation">SI</acronym>/<acronym title="File Transfer">FT</acronym> (<acronym title="Extension Protocols">XEP</acronym> 95/96), то отправляем список транспортов, через которые мы можем отправить файл, по умолчанию всегда в списке присутствует 47 <acronym title="Extension Protocols">XEP</acronym>. Если стоят галочки директ-коннекта (BsDirect) или прокси (BsProxyManual), то еще дополнительно добавляем в список 65 <acronym title="Extension Protocols">XEP</acronym>.</p>
<p>Клиент принимает этот список, решает какой транспорт для передачи файла выбрать, если стоит галочка <strong><acronym title="In-Band Bytestreams">IBB</acronym> only</strong>, то выбирает 47 <acronym title="Extension Protocols">XEP</acronym>, если галочка не стоит, то выбирает 65 <acronym title="Extension Protocols">XEP</acronym>.</p>
<p>После выбора получателем 47 <acronym title="Extension Protocols">XEP</acronym>&#8216;а отправитель высылает файл, при выборе 65 <acronym title="Extension Protocols">XEP</acronym>&#8216;а отправитель высылает список из одного ip-адреса (только direct-connect) или 2-х ip-адресов (direct-connect и proxy)<br />
Получатель к этим ip коннектится (проверяет, куда удалось) и отправляет выбранный ip отправителю, отправитель передаёт файл.</p>
<p>Если же клиент не умеет <acronym title="Stream Initiation">SI</acronym>/<acronym title="File Transfer">FT</acronym>, то проверяем умеет ли <acronym title="Out of Band Data">OOB</acronym> (<acronym title="Extension Protocols">XEP</acronym> 66), если умеет <acronym title="Out of Band Data">OOB</acronym>, то отправляем ссылку. и через HTTP у нас забирают файл .</p>
<p>Если же не умеет ни <acronym title="Stream Initiation">SI</acronym>/<acronym title="File Transfer">FT</acronym>, ни <acronym title="Out of Band Data">OOB</acronym>, то выдается ошибка передачи файла.</p></blockquote>
</li>
<li>Приоритеты (при условии, что в Миранде настроены все 3 пункта в поле <strong>File Transfers</strong>, наверху – самый приоритетный):<br />
<blockquote><p>- <strong><acronym title="In-Band Bytestreams">IBB</acronym></strong> (если у принимающего стоит галка <acronym title="In-Band Bytestreams">IBB</acronym> only)<br />
- <strong>Proxy</strong><br />
- <strong><acronym title="Direct Connect">DC</acronym></strong><br />
- <strong><acronym title="Out of Band Data">OOB</acronym></strong><br />
- <strong><acronym title="In-Band Bytestreams">IBB</acronym></strong> (только если в настройках Jabber не выставлено ни одной из трех галок в секции File Transfers)</p></blockquote>
</li>
<li><strong>Proxy</strong> имеет приоритет перед <strong><acronym title="Direct Connect">DC</acronym></strong> в целях приватности</li>
<li><strong>Proxy</strong> и <strong><acronym title="Direct Connect">DC</acronym></strong> описаны одним <a href="http://xmpp.org/extensions/xep-0065.html">65</a>-тым <acronym title="Extension Protocols">XEP</acronym>&#8216;ом. Протоколы там очень похожие, разница только в том, что в первом случае идет коннект до прокси, а во втором – до отправителя.</li>
<li><strong><acronym title="Stream Initiation">SI</acronym></strong>/<strong><acronym title="File Transfer">FT</acronym></strong> (<acronym title="Extension Protocols">XEP</acronym>&#8216;ы <a href="http://xmpp.org/extensions/xep-0095.html">95</a>/<a href="http://xmpp.org/extensions/xep-0096.html">96</a>) в теории могут быть реализованы друг без друга, но по сути они идут вместе и существует проверка на их наличие в коде.
<li>Проблемы при передаче файлов через <strong><acronym title="In-Band Bytestreams">IBB</acronym> </strong>обусловлены тем, что все данные отправляются в цикле в общем потоке, но на сервере есть лимит на количество kB/s от клиента. И, так как нет возможности проверить, принялись ли уже данные от клиента, банально забивается очередь. Все сообщения приходят и уходят, но из-за очереди и лимитов это происходит уже после появления окошка о таймауте.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://miranda.im/2009/03/14/jabber-file-transfers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
