计算机网络基础 1

1,165 阅读8分钟

网络模型

我们知道,两台计算机想要互相通信,一定需要某种介质连接这两台主机。而连接主机的介质有很多,可以是蓝牙,光纤,双绞线。但是不管使用什么介质连接,最后到达另一台主机的时候,这些信号都要被转换成电磁信号。把其他信号转换成电磁信号的设备被称为调剂调节器,也就是我们俗称的猫。所以如果你家使用光纤,那么就有一台调制调解器把光学信号转换成电磁信号才能被计算机识别。

电磁信号到达主机的时候,最先通过网卡。平时说得百兆网卡,千兆网卡是指网卡一次性可以处理 100M(百兆网卡),1000M(千兆网卡)bit 的数据。

两台计算机通过一条线(注:这里包括下文的线都指某种连接介质)连接就可以通信,但是需要通信的主机多了之后,就需要管理如何连接这些主机,于是就演化出了三种网络模型

总线型网络

如上图,可以很容易理解什么是总线型网络:即所有通信主机都连接在同一条线上,信号借由这条总线传递到对方主机。那么现在以下几个问题 :

  1. A 要跟 B 通信,如何保证 B 可以收到 A 发送的数据,而不是被其他人收到?
  2. A 给 B 发送信号的时候,C 跟 D 可不可以通信?

要解决这些问题,要引入一个 MAC 地址的概念,在 MAC 地址是一串用十六进制表示的数字,MAC 地址被写死在网卡上。每个网卡上的 MAC 地址都是独一无二的,所以 MAC 地址可以用作标识整个互联网上唯一的一个网络设备。假设一台主机只有一张网卡,那么一个 MAC 就可以用来标识唯一一台主机。

知道了 MAC 地址之后,我们来看在总线型网络模型中主机是如何通信的 :

有了 MAC 地址之后,A 要发送给 B 数据,只要在数据包前面加上自己和主机 B 的 MAC 地址之后把数据发送出去,这个时候这个总线上瞬间都会充斥着这些数据,之后 B,C,D 都会接收到这些信号,但是每台主机会查找数据包前面接收方的 MAC 地址,只有接受方的 MAC 地址跟自己的 MAC 地址匹配才会接受数据,其他主机会忽略这些信号。

这样子,第一个问题就解决了。上面说了,A发送数据给B的时候整个总线上都充斥着电信号,那么C跟D必然就不能通信了,不然就乱了。其中一台主机发送信号,其他主机都能够收到信号,这种现象称为广播

上面说了,A发送数据给B的时候,其他主机就不能发送数据, 那么就得有一个机制保证的确只能有一个主机发送信号。这种机制称作载波侦听多路访问,冲突检测 (CSMA/CD)。其工作原理类似 :

A 在发送信号之前先检测是否有主机在发送信号,如果没有。马上开始发送信号。而且在发送的同时还要继续监听总线上是否有其他主机发送信号,一旦有,马上停止发送。等待一段时间再发送。

载波侦听多路访问,冲突检测 (CSMA/CD)的这个机制。正是以太网的标准

环状网络

环状网络模型亦如其名,所有的主机用通信设备连接成一个环状。这种网络模型最开始由 IBM 研发,环状网络保证冲突的方式类似 :

在环状网络的通道上有一个令牌,没有主机发送信号的时候就在通道上游荡,只要有主机想要发送信号,就要马上抓住令牌,一旦持有令牌就可以发送信号。

但是这种网络模型为 IBM 的商业项目,所以并没有流行开,而是总线模型作为以太网技术被现在的互联网接受。我们现在的互联网世界都是基于以太网。

除了这两种模型之外,还有一种称为星形网络,其本质是总线网络的一种变形,所以这里略过。

网桥&&交换机

回顾一下最开始的通信过程,一旦一个总线模型上连接的主机多了之后,会出现两个问题 :

  • 连接的主机越多,总线就会越长。总线越长就会导致信号衰弱,信号衰弱就会导致数据丢失。
  • 主机越多,一台主机发送数据就会导致其他主机不能发送数据,而且信号之间冲突的可能性就越大,这个时候这个网络就处于冲突域状态。

所以当一个网络模型上的主机越来越多,就要把一个网络分成两个网络。

如上图,把一个网络分成两个网络,但是出现一个问题:分成两个模型之后两个模型之间如何通信?这就要靠途中 S1 这个设备了,这个设备被称为网桥或者桥接器

现在,我们来看一下主机之间是如何通信的 :

  • A 主机要给 B 发送信号,信号发送出去,网络 1 的主机包括桥接器 S1 的 R1 接口都能收到数据,然后S1通过数据中的接收方的 MAC 地址判断接收方在网络 1 中,于是不把数据通过 R2 发送到网络 2。这样子,网络 1 中的主机互相通信就不会干扰到网络 2 中的设备。
  • A 主机要发送数据给 C1,信号发送出去同样 S1 的 R1 接口会收到数据。判断数据是发往网络 2 的 C1 主机。于是就把数据通过 R2 接口广播到网络 2。这样子 C1 就可以收到来自 A 发来的数据。

通过上面的分析知道,桥接器能够智能的判断当前通信是一个网络中的主机互相通信还是跨网络通信。桥接器能够做到这一点的原因是:桥接器内部维护了一张表,这张表记录了每个网络中有哪些主机。这张表的数据可以人工填写,或者桥接器也可以自己智能学习生成数据。

现在有了桥接器之后,我们就可以有效避免冲突,隔绝了冲突域。A 和 B 之间的通信就不会影响到 A1 跟 B1 之间的通信,主机之间通信的效率就变得更高了。那我们极端一点,一个桥接器上有多个 R1 接口, 每个接口只连接一台主机。这样子桥接器就演化成了交换机

注意:交换机跟桥接器的关系并不是像上面讲得那么简单。交换机跟桥接器在定义上还是有区别的,网上有很多说交换机就是多个接口的桥接器,这个说法不能说错,但是不严谨。不过我们这里可以不必纠结于此,因为交换机跟桥接器在作用是类似的,这里你可以把交换机当做是多个接口的网桥。

现在,网络模型已经演变成上图的样子,看起来好像又回到最开始的总线网络模型。但是不同的是,使用交换机之后,A 跟 B 通信的同时,C 跟 D 也能通信。而且 A 给 B 发送数据的时候,B 也可以给 A 发送数据。因为每台主机可以使用两条线跟交换机相连。一条负责对外发送数据,一条负责接收数据。像上图这种,如果要主机 A 发送了一个广播,那么 B,C,D,E 都可以收到这个广播,称为 A,B,C,D,E 在同一个广播域。

但是,当多个交换机互相连接,某个交换机上的一台主机发送了一个广播数据,那么交换机收到这个广播数据的时候,也会把这个广播数据转发给另一个交换机,而这个交换机也会发送这个广播。以此下去,整个网络内都会收到这个广播,当这些主机都向外发送广播,就会造成广播风暴。我们使用桥接器/交换机隔绝了冲突域,提高了计算机通信的效率,但是广播风暴的存在仍然会造成计算机通信的效率低下,因此我们还需要解决广播风暴。

然而,不幸的是,广播风暴在使用 MAC 地址标识主机的情况下是没有办法解决的,所以在MAC地址的基础上,引入了逻辑地址,即 IP 地址。并且使用路由器来连接交换机。这样子就可以解决广播风暴的问题。更多关于 IP&& 路由,以及接下来的计算机网络基础,请移步文章计算机网络2