⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gnutella协议中文版.htm

📁 gnutella协议中文版
💻 HTM
📖 第 1 页 / 共 5 页
字号:
</span></span><font size="3"><span style="font-family: 宋体">
一个客户机将在它向前传递描述符到与它直接相连的客户机前,减少一个描述头的</span><span lang="EN-US">TTL</span><span style="font-family: 宋体">区,并增加</span><span lang="EN-US">Hops</span><span style="font-family: 宋体">区。如果,减少头部的</span><span lang="EN-US">TTL</span><span style="font-family: 宋体">区后,</span><span lang="EN-US">TTL</span><span style="font-family: 宋体">中的值等于</span><span lang="EN-US">0</span><span style="font-family: 宋体">,描述符将不再向前传递到任何连接。</span></font></p>
<p class="MsoNormal" style="text-indent: -18pt; margin-left: 18pt; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<span lang="EN-US"><font size="3">6.</font><span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; font-family: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><font size="3"><span style="font-family: 宋体">
一个客户机收到一个与它之前接收过的描述符具有相同有效描述符和描述符</span><span lang="EN-US">ID</span><span style="font-family: 宋体">的描述符,应该避免再向前传递这个描述符到其它的连接。它已经接收过这样一个描述符,再把它传递出去只会浪费带宽。</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<span lang="EN-US"><font size="3">&nbsp;</font></span></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<b><span style="font-size: 12pt; font-family: 宋体">文件下载</span></b></p>
<p class="MsoNormal" style="text-indent: 21pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">一旦一个客户机收到一个</span><span lang="EN-US">QueryHit</span><span style="font-family: 宋体">描述符,它将初始化直接下载描述符的结果集其中的一个文件。文件将不通过</span><span lang="EN-US">Gnutella</span><span style="font-family: 宋体">的网络进行下载,一个源客户机和目标客户机直接建立连接进行数据的传输。文件数据从来不会通过</span><span lang="EN-US">Gnutella</span><span style="font-family: 宋体">网络进行传送。</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">文件下载协议是</span><span lang="EN-US">HTTP</span><span style="font-family: 宋体">协议。初始化下载的客户机发送一个请求字符串到目标客户机,格式如下:</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<span lang="EN-US"><font size="3">GET /get/&lt;File Index&gt;/&lt;File Name&gt;/ 
HTTP/1.0\r\n<br>
Connection: Keep-Alive\r\n<br>
Range: bytes=0-\r\n<br>
User-Agent: Gnutella\r\n3\r\n</font></span></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">这里的</span><span lang="EN-US">&lt;File 
Index&gt;</span><span style="font-family: 宋体">和</span><span lang="EN-US">&lt;File 
Name&gt;</span><span style="font-family: 宋体">是一个</span><span lang="EN-US">QueryHit</span><span style="font-family: 宋体">描述符结果集中的</span><span lang="EN-US">File 
Index/File Name</span><span style="font-family: 宋体">对中的其中之一。例如,如果</span><span lang="EN-US">QueryHit</span><span style="font-family: 宋体">描述符中包含入口</span></font></p>
<table class="MsoNormalTable" style="border-collapse: collapse; border: medium none; margin-left: 5.4pt; margin-right: auto; margin-top: auto; margin-bottom: auto" cellSpacing="0" cellPadding="0" border="1">
  <tr style="height: 15pt">
    <td style="width: 90pt; height: 15pt; border: 1pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background-color: transparent" vAlign="top" width="120">
    <p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
    <b><span lang="EN-US">File Index</span></b><span lang="EN-US"> </span></td>
    <td style="width: 117pt; height: 15pt; border-left: medium none #d4d0c8; border-right: 1pt solid windowtext; border-top: 1pt solid windowtext; border-bottom: 1pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background-color: transparent" vAlign="top" width="156">
    <p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
    <span lang="EN-US">2468</span></td>
  </tr>
  <tr style="height: 14.6pt">
    <td style="width: 90pt; height: 14.6pt; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: medium none #d4d0c8; border-bottom: 1pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background-color: transparent" vAlign="top" width="120">
    <p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
    <b><span lang="EN-US">File Size</span></b><span lang="EN-US">&nbsp; </span></td>
    <td style="width: 117pt; height: 14.6pt; border-left: medium none #d4d0c8; border-right: 1pt solid windowtext; border-top: medium none #d4d0c8; border-bottom: 1pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background-color: transparent" vAlign="top" width="156">
    <p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
    <span lang="EN-US">4356789</span></td>
  </tr>
  <tr style="height: 15pt">
    <td style="width: 90pt; height: 15pt; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: medium none #d4d0c8; border-bottom: 1pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background-color: transparent" vAlign="top" width="120">
    <p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
    <b><span lang="EN-US">File Name</span></b></td>
    <td style="width: 117pt; height: 15pt; border-left: medium none #d4d0c8; border-right: 1pt solid windowtext; border-top: medium none #d4d0c8; border-bottom: 1pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background-color: transparent" vAlign="top" width="156">
    <p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
    <span lang="EN-US">Foobar.mp3\x00\x00</span></td>
  </tr>
</table>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">那么一个通过这个入口下载这个文件的描述请求应该如下:</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span lang="EN-US">GET /get/2468/Foobar.mp3/ HTTP/1.0\r\n<br>
Connection: Keep-Alive\r\n<br>
Range: bytes=0-\r\n<br>
User-Agent: Gnutella\r\n<br>
</span><span style="font-family: 宋体">服务器收到下载请求将回应于</span><span lang="EN-US">HTTP1.0</span><span style="font-family: 宋体">兼容的头,例如:</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<span lang="EN-US"><font size="3">HTTP 200 OK\r\n<br>
Server: Gnutella\r\n<br>
Content-type: application/binary\r\n<br>
Content-length: 4356789\r\n<br>
\r\n</font></span></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">文件数据随后将被读出,包括</span><span lang="EN-US">HTTP</span><span style="font-family: 宋体">响应中提供的</span><span lang="EN-US">Gontent-length</span><span style="font-family: 宋体">中描述的字节数。</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span lang="EN-US">Gnutella</span><span style="font-family: 宋体">协议提供</span><span lang="EN-US">HTTP</span><span style="font-family: 宋体">规范中的参数的支持,所以一个中断的下载可以按照中断的位置重连。</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<span lang="EN-US"><font size="3">&nbsp;</font></span></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<b><span style="font-size: 12pt; font-family: 宋体">防火墙后的客户机</span></b></p>
<p class="MsoNormal" style="text-indent: 21pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">并非总是在初始化一个文件下载后都可以与</span><span lang="EN-US">Gnutella</span><span style="font-family: 宋体">客户机建立直接连接。客户机可能在防火墙后并不允许通过它的</span><span lang="EN-US">Gnutella</span><span style="font-family: 宋体">端口进入的连接。如果一个直接连接不能建立,客户机若想下载文件可能会请求共享文件的客户机采用“推送”方式来代替。一个客户机可以通过发送一个</span><span lang="EN-US">Push</span><span style="font-family: 宋体">文件推送请求到发送</span><span lang="EN-US">QueryHit</span><span style="font-family: 宋体">请求的客户机处来实现。作为</span><span lang="EN-US">Push</span><span style="font-family: 宋体">请求目标的客户机(在客户机标志区标示一个</span><span lang="EN-US">Push</span><span style="font-family: 宋体">的描述符)应该接收</span><span lang="EN-US">Push</span><span style="font-family: 宋体">描述符,尝试建立一个新的</span><span lang="EN-US">TCP/IP</span><span style="font-family: 宋体">连接到请求客户机(在</span><span lang="EN-US">Push</span><span style="font-family: 宋体">描述符中标示有</span><span lang="EN-US">IP</span><span style="font-family: 宋体">地址和端口)。如果直接连接不能建立,那么可能发起</span><span lang="EN-US">Push</span><span style="font-family: 宋体">请求的客户机自己也在防火墙后。这种情况,文件传输将不能进行。</span></font></p>
<p class="MsoNormal" style="text-indent: 21pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">如果一个直接连接可以从防火墙后的客户机建立到发起</span><span lang="EN-US">Push</span><span style="font-family: 宋体">请求的客户机,防火墙后的客户机应该立刻发送以下的:</span></font></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<span lang="EN-US"><font size="3">GIV &lt;File Index&gt;:&lt;Servent Identifier&gt;/&lt;File 
Name&gt;\n\n</font></span></p>
<p class="MsoNormal" style="margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; margin-bottom: 0pt">
<font size="3"><span style="font-family: 宋体">这里的</span><span lang="EN-US">&lt;File 
Index&gt;:</span><span style="font-family: 宋体">和</span><span lang="EN-US">&lt;Servent 
Identifier&gt;</span><span style="font-family: 宋体">是</span><span lang="EN-US">Push</span><span style="font-family: 宋体">请求头中的的文件索引和客户机标示,</span><span lang="EN-US">&lt;File 
Name&gt;</span><span style="font-family: 宋体">是本地文件表中文件索引为</span><span lang="EN-US">&lt;File 
Index&gt;</span><span style="font-family: 宋体">的文件。客户机收到</span><span lang="EN-US">GIV</span><span style="font-family: 宋体">请求头(</span><span lang="EN-US">Push</span><span style="font-family: 宋体">请求者)应该从头中取出</span><span lang="EN-US">&lt;File 
Index&gt;</span><span style="font-family: 宋体">和</span><span lang="EN-US">&lt;File 
Name&gt;</span><span style="font-family: 宋体">并构造一个如下的</span><span lang="EN-US">HTTP 
GET</span><span style="font-family: 宋体">请求:</span></font></p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -