由于最近研究番剧、写番剧评论的时候用到了的 BT 下载,找了个开源的 BT 下载器,然后配置这个下载器时遇到了许多困难,其中就有好多计算机网络的术语。由于向来对这种只按照教程去做,但是不知道原理的事情很反感。而计算机网络又是下学期我们要学的东西,于是打算先学习一下。
本文是在学习斯坦福大学的 CS144 课程时的学习笔记,由于 b 站只有机翻字幕,所以可能有一些术语不知道是否会使用准确。如有错误,还请劳烦指正。
1. 应用程序生命周期的一天
网络应用程序的基本模型为,有两台计算机,它们可以通过网络进行通信。这个模型最常见的实现模式为双向、可靠的字节流,即在计算机 A 上运行的应用程序可以向网络传输数据,并且数据可以被计算机 B 上运行的程序接收和读取,同理,计算机 A 也可以以此种方式接收和读取计算机 B 的数据。
所以字节流模型就是计算机 B 等待外部计算机的连接,而计算机 A 与 B 建立连接后,它们之间就可以进行上述的数据传输,且任意一方都可以关闭连接。所以在这种模型下,服务器也可以关闭连接,比如当我们看到 "Connection Reset" 这样的错误时,意味着服务器在浏览器未预料的情况下中断了连接,而 "Massage Refused" 或者 "Timed Out" 的情况则是服务器拒绝了连接的情况。我们之后会提到这个模型的原理的细节。
至此,我们已经了解了网络应用程序的基本通信方式,我们来看看一些实例:
例 1.1 万维网(用户-服务器体系)
万维网使用 HTTP(超文本传输协议)进行工作。在 HTTP 中,用户端打开与服务器的连接并向其发送指令。最常见的指令是用于请求页面的 GET。HTTP被设计为以文档为中心的程序通信方式。
例如,当我们要访问一个 HTTP 的网页时,在浏览器中输入网址后,浏览器会尝试与该网址对应的服务器建立连接并向其发送 GET 请求。然后服务器收到请求,并发送响应。由于 HTTP 以文档为中心,所以 HTTP 的请求全部都是一些字符串。基本模型即:用户端通过写入连接来发送请求;服务器读取,处理请求并写入对连接的响应;然后再用户端读取。
例 1.2 BitTorrent(P2P 体系)
BitTorrent(简称 BT)是一个程序,允许人们共享和交换大文件。不同于万维网,用户端在 BT 中请求来自其他用户的文件。为了使单个用户端可以并行地从许多其他用户端发出请求,BT 破坏了文件并且分成称为片段的数据块。当一个用户从另一个用户下载完整的作品时,它会告诉其他用户它具有该部分,因此他们也可以下载它。这些合作用户的集合称为群组。因此,我们下面讨论用户如何加入或离开群组。
BT 使用与万维网完全相同的机制:可靠的双向数据流。 但是它以稍微复杂的方式使用它。 当用户想要下载文件时,它首先必须找到一个种子文件。这个种子文件描述了有关您要下载的数据文件的一些信息。它还会告诉 BT 该数据的 Tracker。Tracker 是一个结点,用于跟踪哪些用户是群组的成员。如果我们要加入一个群组,我们的 BT 用户端会通过 HTTP 与 Tracker 建立连接,以请求当前在该群组中的用户列表。 然后我们的 BT 用户端打开与其中一些用户端的连接,并开始请求文件碎片。这些用户反过来可以从我们这里取走文件。此外,当新用户端加入群时,Tracker 可能会告诉该新用户端连接到您的用户端。 因此,我们需要一个密集的连接网,而不是一个用户端和一个服务器的连接图。
标签:BT,HTTP,用户端,IP,用户,计算机网络,互联网,服务器,连接 From: https://www.cnblogs.com/Nickel-Angel/p/17004675.html