首页 > 其他分享 >计算机网络(一)互联网与 IP

计算机网络(一)互联网与 IP

时间:2022-12-25 22:01:07浏览次数:61  
标签:BT HTTP 用户端 IP 用户 计算机网络 互联网 服务器 连接

由于最近研究番剧、写番剧评论的时候用到了的 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 的请求全部都是一些字符串。基本模型即:用户端通过写入连接来发送请求;服务器读取,处理请求并写入对连接的响应;然后再用户端读取。

img

例 1.2 BitTorrent(P2P 体系)

BitTorrent(简称 BT)是一个程序,允许人们共享和交换大文件。不同于万维网,用户端在 BT 中请求来自其他用户的文件。为了使单个用户端可以并行地从许多其他用户端发出请求,BT 破坏了文件并且分成称为片段的数据块。当一个用户从另一个用户下载完整的作品时,它会告诉其他用户它具有该部分,因此他们也可以下载它。这些合作用户的集合称为群组。因此,我们下面讨论用户如何加入或离开群组。

BT 使用与万维网完全相同的机制:可靠的双向数据流。 但是它以稍微复杂的方式使用它。 当用户想要下载文件时,它首先必须找到一个种子文件。这个种子文件描述了有关您要下载的数据文件的一些信息。它还会告诉 BT 该数据的 Tracker。Tracker 是一个结点,用于跟踪哪些用户是群组的成员。如果我们要加入一个群组,我们的 BT 用户端会通过 HTTP 与 Tracker 建立连接,以请求当前在该群组中的用户列表。 然后我们的 BT 用户端打开与其中一些用户端的连接,并开始请求文件碎片。这些用户反过来可以从我们这里取走文件。此外,当新用户端加入群时,Tracker 可能会告诉该新用户端连接到您的用户端。 因此,我们需要一个密集的连接网,而不是一个用户端和一个服务器的连接图。

img

标签:BT,HTTP,用户端,IP,用户,计算机网络,互联网,服务器,连接
From: https://www.cnblogs.com/Nickel-Angel/p/17004675.html

相关文章

  • TCP/IP概述
    7.1.1TCP/IP的分层模型7.1.2TCP/IP的分层模型特点7.1.3TCP/IP核心协议  OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次:应用层、表示层......
  • 教你用JavaScript实现调皮的字母
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,制作提高打字速度的小游戏-调皮的字母。点击与屏幕上字母相对应的按键,......
  • [Javascript] Chunk array
    Array.from()isagreatwaytochunkuparraysbecauseofthesecondaryargumentbeingamapfunction. consthugeArray=Array.from({length:76},(_,i)=>......
  • 教你用JavaScript实现文字动画
    欢迎来的我的小院,恭喜你今天又要涨知识了!案例内容利用JavaScript实现文字逐步展现的动画效果。演示学习<!DOCTYPEhtml><htmllang="en"><head><metacharse......
  • [Javascript] Destructuring array by using object syntax
    Sincearraysareobjects,wecandestructuretheirindexestoeasilygrabthefirstandlastitmesconstbikes=['bianchi','miele','miyata','benotto','pan......
  • [Javascript] Intl.Collator().compare
    The Intl.Collator objectenableslanguage-sensitivestringcomparison.console.log(['Z','a','z','ä'].sort(newIntl.Collator('de').compare));//expected......
  • 《初识Javascript》
    什么是JavaScript:JavaScript是一种基于对象和事件驱动的、并具有安全性能的脚本语言JavaScript的特点:向HTML页面中添加交互行为脚本语言,语法和Java类似解释性语......
  • ECMAScript 6 入门教程—Symbol
    作者|阮一峰1、概述ES5的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin模式),新方法的名字就有可能与......
  • 14个 JavaScript 代码优化技巧
    这篇文章列举了一些技巧,可帮助你写出更好的JavaScript代码,从而提高性能。JavaScript已经成为有史以来最受欢迎的编程语言之一。从W3Tech的数据来看,全世界将近96%的网站......
  • ECMAScript 6 入门教程—Set 和 Map 数据结构
    作者|阮一峰1、Set基本用法ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。consts=new......