这学期修了一门叫 Network Lab 的课,主要还是讲计算机网络部分的,对于学习前端的我来说还是很有帮助。这个文集将记录这门课的核心内容。
分层
对于怎么有效地去组织整个网络系统是十分重要的,毕竟不能说我发一个包到另一个地方那么简单。我们可以参考一下机场的组织形式,因为它跟计算机网络是十分相像的,大家都是负责传递东西的。
从上图可以看到,机场的管理分了好几层:
- 先买票
- 去托运行李
- 过安检
- 起飞
- 飞行中,根据 GPS 来导航到目的地
- 到达
- 出关
- 拿行李
类比一下,计算机里网络也是这样分发包的:
上面可以简化成这样的分层形式:
注意:这里的分层是对于每台计算机都是这样的,但是路由器或者特殊的机器可能只有 Link 和 Physical 两层。
传递信息
一般来说,信息的传递是在一台机器里从 Application 开始先传到 Pyhsical,然后通过网线再传递到加一台机器的 Physical,最后从下往上传回第二台机器的 Application。如图:
你可能想问这个 Ht, Hn, Hi 是什么,这就是这个信息的头部,有点像请求头。但是这里是每下到一层(除了 Physical)都会加一个 Header,所以在 Source 那我们可以看到有 3 个 Header。然后每往上一层又会去掉一个 Header,所以在 Destination 的 Application 可以看到只有一个 M。
Header 一般用来存每一层和该包的信息。
IP 地址
先说说网络中的接口,简单来说接口(Interface)就是指连接两个机器的口,通常来说路由器是有多个接口而主机 (Host) 就只有一两个。
IP 地址通常是由 32 Bits来构成的,也就是 4 个 Bytes,每个 Byte = 8 个Bits。我就不想说位和字节了,因为以前学中文的计网的时候总容易弄错。
IP 地址和这个网络接口又有什么关系呢?IP 是这个网络接口对应网络的唯一编号。它有两个组件部分:
- Network Prefix,相当于地址里的街道号
- Host Number,相当于家里的门牌号
这里你可能会问,这 IP 是怎么去区分哪个是 Prefix,哪个又是 Host 呢?这里就要说到 Network Mask 了。在传递信息的时候,上面的 IP 一般在后面加一个数字,如 128.143.137.144/16
。这个 16 就表示前 16 个 Bits 是 Prefix,是已经固定好了,后 16 Bits (32-16) 就是 Host。所以,上面的 IP 可以写成这样:
- Network Prefix: 128.143.0.0
- Host Number: 0.0.137.144
那当然上面十进制也可以写成 16 进制的,不过大家一般看的都是十进制啦。