📄 bittorrent location-aware protocol 1_0 specification.mht
字号:
From: <由 Microsoft Internet Explorer 5 保存>
Subject: BitTorrent Location-aware Protocol 1.0 Specification - TheoryOrg
Date: Thu, 19 Jul 2007 10:22:23 +0800
MIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----=_NextPart_000_0000_01C7C9EE.B2129470"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138
This is a multi-part message in MIME format.
------=_NextPart_000_0000_01C7C9EE.B2129470
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Specification
=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=3Den dir=3Dltr xml:lang=3D"en"=20
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>BitTorrent =
Location-aware Protocol 1.0 Specification - TheoryOrg</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3DUTF-8">
<META content=3D"BitTorrent Location-aware Protocol 1.0 Specification"=20
name=3Dkeywords><LINK href=3D"/favicon.ico" rel=3D"shortcut icon"><LINK=20
title=3D"TheoryOrg (English)" href=3D"/static/opensearch_desc.php"=20
type=3Dapplication/opensearchdescription+xml rel=3Dsearch>
<STYLE type=3Dtext/css media=3Dscreen,projection>@import url( =
/static/skins/monobook/main.css?9 );
</STYLE>
<LINK media=3Dprint=20
href=3D"http://wiki.theory.org/static/skins/common/commonPrint.css" =
type=3Dtext/css=20
rel=3Dstylesheet><!--[if lt IE 5.5000]><style type=3D"text/css">@import =
"/static/skins/monobook/IE50Fixes.css";</style><![endif]--><!--[if IE =
5.5000]><style type=3D"text/css">@import =
"/static/skins/monobook/IE55Fixes.css";</style><![endif]--><!--[if IE =
6]>
<STYLE type=3Dtext/css>@import url( /static/skins/monobook/IE60Fixes.css =
);
</STYLE>
<![endif]--><!--[if IE 7]><style type=3D"text/css">@import =
"/static/skins/monobook/IE70Fixes.css?1";</style><![endif]--><!--[if lt =
IE 7]>
<SCRIPT src=3D"http://wiki.theory.org/static/skins/common/IEFixes.js"=20
type=3Dtext/javascript></SCRIPT>
<META http-equiv=3Dimagetoolbar content=3Dno><![endif]-->
<SCRIPT type=3Dtext/javascript>=0A=
var skin =3D "monobook";=0A=
var stylepath =3D "/static/skins";=0A=
=0A=
var wgArticlePath =3D "/$1";=0A=
var wgScriptPath =3D "/static";=0A=
var wgServer =3D "http://wiki.theory.org";=0A=
=0A=
var wgCanonicalNamespace =3D "";=0A=
var wgNamespaceNumber =3D 0;=0A=
var wgPageName =3D =
"BitTorrent_Location-aware_Protocol_1.0_Specification";=0A=
var wgTitle =3D "BitTorrent Location-aware Protocol 1.0 =
Specification";=0A=
var wgArticleId =3D 1668;=0A=
var wgIsArticle =3D true;=0A=
=0A=
var wgUserName =3D null;=0A=
var wgUserLanguage =3D "en";=0A=
var wgContentLanguage =3D "en";=0A=
</SCRIPT>
<SCRIPT src=3D"http://wiki.theory.org/static/skins/common/wikibits.js?1" =
type=3Dtext/javascript><!-- wikibits js --></SCRIPT>
<SCRIPT =
src=3D"http://wiki.theory.org/index.php?title=3D-&action=3Draw&ge=
n=3Djs"=20
type=3Dtext/javascript><!-- site js --></SCRIPT>
<STYLE type=3Dtext/css>@import url( =
/index.php?title=3DMediaWiki:Common.css&usemsgcache=3Dyes&action=3Draw&ct=
ype=3Dtext/css&smaxage=3D18000 );
@import url( =
/index.php?title=3DMediaWiki:Monobook.css&usemsgcache=3Dyes&action=3Draw&=
ctype=3Dtext/css&smaxage=3D18000 );
@import url( /index.php?title=3D-&action=3Draw&gen=3Dcss&maxage=3D18000 =
);
</STYLE>
<!-- Head Scripts -->
<META content=3D"MSHTML 6.00.2900.3132" name=3DGENERATOR></HEAD>
<BODY class=3D"mediawiki ns-0 ltr">
<DIV id=3DglobalWrapper>
<DIV id=3Dcolumn-content>
<DIV id=3Dcontent><A id=3Dtop name=3Dtop></A>
<H1 class=3DfirstHeading>BitTorrent Location-aware Protocol 1.0 =
Specification</H1>
<DIV id=3DbodyContent>
<H3 id=3DsiteSub>From TheoryOrg</H3>
<DIV id=3DcontentSub></DIV>
<DIV id=3Djump-to-nav>Jump to: <A=20
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#column-one">navigation</A>,=20
<A=20
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#searchInput">search</A></DIV><!-- start content -->
<TABLE class=3Dtoc id=3Dtoc summary=3DContents>
<TBODY>
<TR>
<TD>
<DIV id=3Dtoctitle>
<H2>Contents</H2></DIV>
<UL>
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Goal"><SPAN=20
class=3Dtocnumber>1</SPAN> <SPAN class=3Dtoctext>Goal</SPAN></A> =
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Motivation_and_Reasons"><SPAN=20
class=3Dtocnumber>2</SPAN> <SPAN class=3Dtoctext>Motivation and=20
Reasons</SPAN></A>=20
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Basics_of_the_Model"><SPAN=20
class=3Dtocnumber>3</SPAN> <SPAN class=3Dtoctext>Basics of the=20
Model</SPAN></A>=20
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Pros"><SPAN=20
class=3Dtocnumber>4</SPAN> <SPAN class=3Dtoctext>Pros</SPAN></A> =
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Cons"><SPAN=20
class=3Dtocnumber>5</SPAN> <SPAN class=3Dtoctext>Cons</SPAN></A> =
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Protocol_Specification"><SPAN=20
class=3Dtocnumber>6</SPAN> <SPAN class=3Dtoctext>Protocol=20
Specification</SPAN></A>=20
<UL>
<LI class=3Dtoclevel-2><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#BitTorrent_Location-aware_Protocol_1.0"><SPAN=20
class=3Dtocnumber>6.1</SPAN> <SPAN class=3Dtoctext>BitTorrent=20
Location-aware Protocol 1.0</SPAN></A>=20
<LI class=3Dtoclevel-2><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Peer-tracker_Handshake_.28Protocol_Negotiation.29"><SPAN=20
class=3Dtocnumber>6.2</SPAN> <SPAN =
class=3Dtoctext>Peer-tracker Handshake=20
(Protocol Negotiation)</SPAN></A>=20
<LI class=3Dtoclevel-2><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Request_to_the_Tracker_for_the_List_of_Peers"><SPAN=20
class=3Dtocnumber>6.3</SPAN> <SPAN class=3Dtoctext>Request to =
the Tracker=20
for the List of Peers</SPAN></A>=20
<LI class=3Dtoclevel-2><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Tracker_List_of_Peers_Response"><SPAN=20
class=3Dtocnumber>6.4</SPAN> <SPAN class=3Dtoctext>Tracker =
List of Peers=20
Response</SPAN></A>=20
<LI class=3Dtoclevel-2><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#New_Peer_Notification_Message"><SPAN=20
class=3Dtocnumber>6.5</SPAN> <SPAN class=3Dtoctext>New Peer =
Notification=20
Message</SPAN></A>=20
<LI class=3Dtoclevel-2><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Peer-peer_Handshake"><SPAN=20
class=3Dtocnumber>6.6</SPAN> <SPAN class=3Dtoctext>Peer-peer=20
Handshake</SPAN></A>=20
<LI class=3Dtoclevel-2><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Location_Message"><SPAN=20
class=3Dtocnumber>6.7</SPAN> <SPAN class=3Dtoctext>Location=20
Message</SPAN></A> </LI></UL>
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Implementation_in_the_Client_and_the_Tracker"><SPAN=20
class=3Dtocnumber>7</SPAN> <SPAN class=3Dtoctext>Implementation =
in the=20
Client and the Tracker</SPAN></A>=20
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Related_Documents"><SPAN=20
class=3Dtocnumber>8</SPAN> <SPAN class=3Dtoctext>Related=20
Documents</SPAN></A>=20
<LI class=3Dtoclevel-1><A=20
=
href=3D"http://wiki.theory.org/BitTorrent_Location-aware_Protocol_1.0_Spe=
cification#Change_Log"><SPAN=20
class=3Dtocnumber>9</SPAN> <SPAN class=3Dtoctext>Change =
Log</SPAN></A>=20
</LI></UL></TD></TR></TBODY></TABLE>
<SCRIPT type=3Dtext/javascript> if (window.showTocToggle) { var =
tocShowText =3D "show"; var tocHideText =3D "hide"; showTocToggle(); } =
</SCRIPT>
<DIV class=3Deditsection style=3D"FLOAT: right; MARGIN-LEFT: 5px">[<A=20
title=3D"Edit section: Goal"=20
href=3D"http://wiki.theory.org/index.php?title=3DBitTorrent_Location-awar=
e_Protocol_1.0_Specification&action=3Dedit&section=3D1">edit</A>]=
</DIV><A=20
name=3DGoal></A>
<H2>Goal </H2>
<P>The intent of this specification is to put an idea how P2P systems =
like=20
eDonkey, Kad Network, BitTorrent etc. can probably yield better =
performance and=20
save network resources by considering peers=E2=80=99 geographical =
location. </P>
<DIV class=3Deditsection style=3D"FLOAT: right; MARGIN-LEFT: 5px">[<A=20
title=3D"Edit section: Motivation and Reasons"=20
href=3D"http://wiki.theory.org/index.php?title=3DBitTorrent_Location-awar=
e_Protocol_1.0_Specification&action=3Dedit&section=3D2">edit</A>]=
</DIV><A=20
name=3DMotivation_and_Reasons></A>
<H2>Motivation and Reasons </H2>
<P>Today=E2=80=99s P2P systems consume a lot of network resources. =
Different sources=20
show that P2P systems are accountable for 60% to 70% of the internet =
traffic.=20
P2P systems are alogistic, meaning they don=E2=80=99t care if you are =
downloading form=20
half way around the world or from your neighbor next door. Why this is =
such a=20
big concern? Let=E2=80=99s say you are in New York, USA and you want to =
get some file.=20
You can get it from your friend, who is a few blocks away or from =
someone in=20
Dublin, Ireland. In the first case you use a cable for few hundred =
dollars. In=20
the second case - a transatlantic underwater high-pressure resistant =
optic fiber=20
for millions of dollars and you are getting the same result in both =
cases. Who=20
pays for those cables? It is you and all other internet users. This is =
true if=20
you don=E2=80=99t use a satellite of course. But there is the problem, =
that today=E2=80=99s=20
space technology is not advanced enough to beat the on-ground tracks by =
cost=20
efficiency. Especially in densely populated regions, where on a small =
network=20
(cable length wise) you can hook up more users. One commercial =
satellite,=20
together with the launching, costs 10s and even 100s of millions of =
dollars. I=20
am not sure what is the market share of satellite Internet traffic, but =
it is a=20
lot less than the one from on-ground networks. The model presented here =
tries to=20
minimize the share of those resources generated by P2P systems. </P>
<DIV class=3Deditsection style=3D"FLOAT: right; MARGIN-LEFT: 5px">[<A=20
title=3D"Edit section: Basics of the Model"=20
href=3D"http://wiki.theory.org/index.php?title=3DBitTorrent_Location-awar=
e_Protocol_1.0_Specification&action=3Dedit&section=3D3">edit</A>]=
</DIV><A=20
name=3DBasics_of_the_Model></A>
<H2>Basics of the Model </H2>
<P>Let=E2=80=99s look at its basics. Say we have three peers connected =
to the same P2P=20
system. The first one is from Sofia, Bulgaria, the second is from =
Bratislava,=20
Slovakia and the third is from Madrid, Spain. <A class=3D"external text" =
title=3Dhttp://aycu26.webshots.com/image/14785/2002301093237879673_rs.jpg=
=20
href=3D"http://aycu26.webshots.com/image/14785/2002301093237879673_rs.jpg=
"=20
rel=3Dnofollow>Here</A> is a map of the region. The one in Sofia has a =
resource=20
the other two want. For the sake of simplicity we will assume that =
everyone can=20
have only one uploading process at a given time. So, the two peers from =
Madrid=20
and Bratislava request the resource from the Bulgarian peer. Since he =
can give=20
it to only one at the same time, a decision must be made, whom to get =
the data=20
first? If the guy from Madrid gets it and then the two uploaders send it =
to the=20
Slovakian peer, it is obvious that in most cases there will be more =
network=20
resources consumed than if the peer from Bratislava takes the data =
first. </P>
<P>Strictly speaking, geographical closeness does not mean routing =
closeness,=20
but in most cases it does. If the prioritization (who should get the =
data first)=20
should employ also the knowledge of the internet backbone map, this will =
become=20
more of artificial intelligence path finding algorithm. Which is ok, if=20
sufficient and frequently updated data is found for the location, =
capacity and=20
traffic load of network backbone. Even not having such a map, some =
regions, like=20
around the North and South Pole, can be considered unwired. </P>
<P>Let=E2=80=99s look at our model again, but in this case instead of =
peers being able=20
to upload only one resource simultaneously, they can upload n resources. =
Here n=20
is independent for every peer. It may even vary during time. Also every =
peer has=20
a priority queue with requests for data from other peers. Let those =
requests be=20
m. If m =E2=89=A4 n, there is no problem, every requested data is =
served. If n > m,=20
then the first n requests from the priority queue will be served and the =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -