Stanford University CS144 1.1 总结
课程链接:点击进入
本节主要介绍的是生活中网络的应用。
概要
基础的通讯模型,服务器A和服务器B相互之间的通讯不公用一条通道,分别用两条通道来进行单边通讯。进一步升级后,两个服务器可以共用同一条通道来进行字节流的读写,其中一方断开连接后,另一方也会收到 connection reset by pee
断开链接的消息,然后讲了几个应用场景。
万维网
万维网中应用最广泛的是 HTTP
协议,客户端向服务端建立链接后,向服务端发送 GET
、 POST
等命令,服务端收到请求后,对请求进行处理,并返回给客户端响应。
BitTorrent
BitTorrent 是一个允许用户进行分享和交换大文本的程序,多个 Clint
向 Tracker
来请求获取 Clint
列表,这些列表统称为 Swarm
, 然后通过 Clint
列表来和各个客户端建立连接,获取自己没有的 piece
,通过请求 pieces
来进行数据下载,下载成功后,这个客户端会告诉其他的客户端自己已经拥有这个 piece
了。他的机制和万维网是一样的可靠双全工数据流,但是它的实现要稍微复杂一些。Clint和Tracker之间通过HTTP来进行通讯,Tracker维护着torrent文件记录着你想要下载的数据文件的一些描述信息。客户端和服务端存在着多个链接,而且各个客户端之间也会存在链接来动态的交换数据。
Skype
Skype 是国外的一款通讯软件,类似与国内微信,这里应该讲的是它开源的相关网络协议的知识,主要的知识点是NAT网关后方的节点可以主动链接没有NAT网关节点,而其他节点无法直接链接到NAT网关后方的节点,这里引入了两个 Rendezvous Servers
和 Relays Servers
, Rendezvous Servers
帮组两端来建立链接, Relays Servers
来进行数据的中转。
课后习题解题思路
记录下 1-1A
的解题思路, 1-1B
和 1-1C
比较简单,不记录了。
读题
有一家游戏公司,要给用户分发更新包,然后说明了一些参数:
-
更新包大小约1GB
-
更新服务器的带宽约1GB/s
-
假设每个用户的下载速度为 1M/s
-
有100,000个玩家
提供了两种方案:
-
第一种:使用普通的网络协议下载,用户按顺序一轮一轮的下载,通过计算需要100轮,每轮1000个用户下载完成,大约需要耗时100,000秒(~28H)。
-
第二种:使用
peer-to-peer
(称点对点、对等网络)来进行分发下载,第一轮1000个用户下载,第二轮1000个用户通过服务器下载,1000个用户通过其他用户来下载,第三轮1000个用户通过服务器下载,2000个用户通过其他用户来下载,以此类推。。。
问:直到最后一个用户更新完毕第二种方式耗是多少?第一个方式比第二种方式快多少倍?
解题
已知第一种方式耗时100,000秒。然后计算第二种方式的耗时:
|
|
看到需要7轮全部用户即可更新完毕,耗时 7 * 1000 = 7000
秒。 第二种比第一种快了约 100000 / 7000 ≈ 14
倍。
思考总结
-
这节总得来说讲的都是一些介绍性知识,没有很大的难度也没有深入的一些讲解,相对来说通俗易懂。
-
疑问点:NAT网关后方的节点为何其他节点不能直接建立链接?现在大多数设备接入互联网都需要经过NAT网关吧,后续的学习可以注意思考通这个问题。