计算机网络概论笔记 - 互联网把数据更好的分享给每个人 | 青训营笔记

112 阅读4分钟

在本次的计算机网络概论的课程当中,祝讲师通过蟹堡王的汉堡销售网络带我们进入了课程的学习。我也对这个故事进行了细节的思考。本笔记只记录最重要的部分。

粗略引入

在网络的发展中,人们一直在创新和解决新问题的路程上奔波,对于蟹老板也是一样,在一开始实现一个“小目标”时,蟹老板开始了外卖计划,这时我们需要关注的问题是:谁要吃?送到哪?吃什么?相对于网络来说,发送数据关注的问题就是:请求来自谁?发送给哪儿?需要的内容?

如今,仅仅对于比奇堡的外卖计划已经不能满足贪心的蟹老板了,于是乎,开分店也是一个重要的步骤,而分店的布局就造成了这个外卖网络覆盖范围的分类,比如广域网(几十到几千公里)、城域网(5~50 km)等。

部分基础的笔记

1 网络组成部分

即主机、路由器和网络协议。

蟹老板最开始在比奇堡附近常吃神奇蟹堡的顾客家里配电话,这样方便获取在引入中问题的答案,但如今神奇蟹堡名声远扬,蟹老板于是又在世界各地开了分店。比奇堡总部也需要知道这些分店的销量等信息,之前的一对一电话方案由于成本问题不可能再采用了。

对于顾客点外卖,和获取分店销量这两个需求,蟹老板发现现在有一些问题:

  1. 在和一名顾客通话的同时,其他顾客就无法打通电话,严重影响了神奇蟹堡的销量。
  2. 要是比奇堡总部给成都分店发送了一份公告,那南充的分店似乎就不需要再去和总部索取信息了,蟹老板开始催促海绵宝宝想新的法子。

海绵宝宝:“为什么不问问神奇的路由器呢?”

路由器是一种专用计算机(但不叫做主机),是实现分组交换的关键构件,其任务是转发收到的分组。要了解分组交换,得了解电路交换。

2 交换方式

电路交换

之前提到的一对一外卖电话热线就是顾客和蟹堡王之间的一条专用物理线路。这种连接必须经过“建立连接——通话——释放连接”三个步骤,这造成了大部分时间我们都在忙于连接的建立和释放上,浪费了很多时间、

分组交换

为了解决这个问题,我们会把整块的数据分成小块的分组,它们会组成一个完整的报文,由于分店(路由器)很多,所以其中一个分店向总部发送信息可以先发给一个分店,让这个分店再转发给另一个分店,中途有分店忙碌可以再选择发给其他的空闲分店,知道信息到达总部,而一开始发送信息的分店再转发信息后就可以干其他事情了,节省了和总部建立连接等事情的时间。

  • 优点
    • 高效。分组传输时动态分配传输带宽。
    • 灵活。选择最合适的线路。
    • 迅速。不先建立连接就能够向其他主机发送分组。
    • 可靠。分布式多路由分组交换网,网络有好的生存性。

现在我们有了比之前更好方案了,但是还需要有规范的约束,这就是网络协议存在的原因。该部分内容具体的不在这篇文章中阐述。

3 HTTP

HTTP 1.1 - 不能多路复用

GET / HTTP/1.1

HTTP协议中第一行给出了请求的方法、资源路径和版本,在 Persistent 连接模型时会采取使用 keep-alive 的方式保持连接来接收数据,但这种方法不是很好。还有一种 HTTP 管线的模型,但是因为对队头堵塞问题的改善没有多大帮助,所以用的不多。

HTTP 2:帧

request=来源, content=发送的内容 这个方式指明了每条内容的来源,帮助了内容的组合。

帧头结构: 前三字节是帧载荷的长度,第4字节是帧的类型,第5字节是帧的标志位,后4字节中有1位是保留位,其余31位是所属流的 ID,表示该帧属于哪个数据流,后续的8192字节是载荷。

HTTP 3:QUIC 的支持

因为 HTTP 2 的传输会有默认的延迟限制,为了更快的连接和传输数据,这里有了 Quick UDP Internet Connection 的推出。但是这篇笔记里这里不做介绍。