目录

Stanford University CS144 1.1 总结

课程链接:点击进入

本节主要介绍的是生活中网络的应用。

概要

基础的通讯模型,服务器A和服务器B相互之间的通讯不公用一条通道,分别用两条通道来进行单边通讯。进一步升级后,两个服务器可以共用同一条通道来进行字节流的读写,其中一方断开连接后,另一方也会收到 connection reset by pee 断开链接的消息,然后讲了几个应用场景。

万维网

万维网中应用最广泛的是 HTTP 协议,客户端向服务端建立链接后,向服务端发送 GETPOST 等命令,服务端收到请求后,对请求进行处理,并返回给客户端响应。

BitTorrent

BitTorrent 是一个允许用户进行分享和交换大文本的程序,多个 ClintTracker 来请求获取 Clint 列表,这些列表统称为 Swarm , 然后通过 Clint 列表来和各个客户端建立连接,获取自己没有的 piece ,通过请求 pieces 来进行数据下载,下载成功后,这个客户端会告诉其他的客户端自己已经拥有这个 piece 了。他的机制和万维网是一样的可靠双全工数据流,但是它的实现要稍微复杂一些。Clint和Tracker之间通过HTTP来进行通讯,Tracker维护着torrent文件记录着你想要下载的数据文件的一些描述信息。客户端和服务端存在着多个链接,而且各个客户端之间也会存在链接来动态的交换数据。

Skype

Skype 是国外的一款通讯软件,类似与国内微信,这里应该讲的是它开源的相关网络协议的知识,主要的知识点是NAT网关后方的节点可以主动链接没有NAT网关节点,而其他节点无法直接链接到NAT网关后方的节点,这里引入了两个 Rendezvous ServersRelays ServersRendezvous Servers 帮组两端来建立链接, Relays Servers 来进行数据的中转。

课后习题解题思路

记录下 1-1A 的解题思路, 1-1B1-1C 比较简单,不记录了。

读题

有一家游戏公司,要给用户分发更新包,然后说明了一些参数:

  • 更新包大小约1GB

  • 更新服务器的带宽约1GB/s

  • 假设每个用户的下载速度为 1M/s

  • 有100,000个玩家

提供了两种方案:

  • 第一种:使用普通的网络协议下载,用户按顺序一轮一轮的下载,通过计算需要100轮,每轮1000个用户下载完成,大约需要耗时100,000秒(~28H)。

  • 第二种:使用 peer-to-peer (称点对点、对等网络)来进行分发下载,第一轮1000个用户下载,第二轮1000个用户通过服务器下载,1000个用户通过其他用户来下载,第三轮1000个用户通过服务器下载,2000个用户通过其他用户来下载,以此类推。。。

问:直到最后一个用户更新完毕第二种方式耗是多少?第一个方式比第二种方式快多少倍?

解题

已知第一种方式耗时100,000秒。然后计算第二种方式的耗时:

1
2
3
4
单轮下载用户: 1000    1000    1000    1000    1000    1000    1000
          1000    3000    7000    15000   31000   630000

累计下载量:  1000    3000    7000    15000   31000   63000   127000

看到需要7轮全部用户即可更新完毕,耗时 7 * 1000 = 7000 秒。 第二种比第一种快了约 100000 / 7000 ≈ 14 倍。

思考总结

  • 这节总得来说讲的都是一些介绍性知识,没有很大的难度也没有深入的一些讲解,相对来说通俗易懂。

  • 疑问点:NAT网关后方的节点为何其他节点不能直接建立链接?现在大多数设备接入互联网都需要经过NAT网关吧,后续的学习可以注意思考通这个问题。