这学期修读了“计算机网络”这门培养方案中开设得比较晚的基础必修课。这也是继上学期修读软件需求课程之后,我再次修读尹剑飞老师开设的课,实在受益良多——尹剑飞老师的讲解总是一语击中要点。今天特此将入门一周的知识总结记录下来,以后还会不断更新续篇。一方面如 phppan 哥所说整理知识是对自己负责,另一方面我也希望能记录下学习的脚步。
计算机网络的发展史
其实知道一下发展史还是挺有用的,至少对于我来说,我知道了一点——最早的计算机网络都是区域性的,也就是今天我们所说的“局域网”。在这些网络中又有很多分类,如以太网、令牌环网等。现今比较普遍见到的是以太网(Ethernet) [0] 。
“互联网” [1] 最初被提出来的目的,是将不同的网络连接起来。所谓不同,就是不管局域网使用的是以太网协议还是令牌环网协议,都能以隐藏内部通信细节的方式连接。如果要咬文嚼字的话,我们平时说的“因特网”是对互联网的一个实现(貌似也是目前唯一的一个实现)。
以太网通信方式
以太网本身是链路层协议,以帧(Frame) [2] 的方式传送数据。由于以太网有 802.3 和 DIX Ethernet 2 两种标准,所一个“帧”是可以有不同的数据结构的。我们着重了解的是 DIX Ethernet 2 标准,在该标准中一个帧由目的地址、源地址、帧类型、数据、校验码组成。
其实真正在物理层传输的数据,还有一个前导同步码,用于确定帧的顺序。因为一份完整的数据可能是被切分成多个帧传送的,而网络传输的特性决定了帧不一定会按照预期顺序到达,所以网卡(物理层)会添加同步码解决这个问题。真正链路层处理的,是按顺序将地址和应用层带来的数据组合,并添加校验码。
同步码(8 bytes) | 目的地址(6 bytes) | 源地址(6 bytes) | 帧类型(2 bytes) | 数据(46~1500 bytes) | 校验码(4 bytes)
如果通过校验码得知帧损坏,链路层直接将该帧丢弃。具体如何重发由上层决定。
对于帧中的地址,DIX 以太网使用的是“物理地址”,也就是烧录在我们网卡上的 MAC 地址。源地址一般就填写发送帧的计算机的地址,而目标地址还可以选择一些有特殊意义的虚拟地址。一般选择以下三者之一:
- 单播地址:即目的计算机的物理地址,这种情况下帧传送到指定单台计算机
- 多播地址:分配给某个“多播组”的虚拟地址,并非物理地址,指定帧传送到多播组中所有计算机
- 广播地址:保留的一个虚拟地址 FF:FF:FF:FF:FF:FF ,表示将帧传送给子网中所有计算机