# 简介

  • 计算机网络中,使用了很多种网络设备,从多个层面控制网络流量。

# 网卡

  • 早期的计算机,没有进行网络通信的功能,需要用户购买一张以太网网卡,安装到计算机中,才能进行以太网通信。

    • 现代的计算机,通常内置了一张以太网网卡,不需要用户自己购买。
  • 网卡的正式名称是 NIC(Network Interface Card,网络接口控制器),又称为网络适配器。

    • OSI 层级:工作在物理层,以及数据链路层的 MAC 子层。
    • 用途:计算机需要通过网卡,连接到通信线路(比如双绞线),才能收发数据包,与其它计算机进行网络通信。
    • 一个计算机,可以安装多个网卡。这些网卡可以是相同类型,也可以是不同类型。
    • 厂商制造网卡时,会给每个网卡分配一个全球唯一的 Mac 地址,又称为物理地址、硬件地址。
      • Mac 地址长度为 48 bit ,通常用 12 个十六进制数表示。例如 00-e0-4c-46-56-3f ,也可写作 00e0.4c46.563f 。
  • 局域网存在多种类型,因此网卡也存在多种类型,用于不同的局域网通信:

    • 以太网网卡:目前大部分局域网都属于以太网,因此说到网卡时,通常是指以太网网卡。
    • 令牌环网卡:令牌环已被以太网淘汰,因此这种网卡也被淘汰了。
    • 无线网卡:使得计算机能接入 WLAN 无线网络。有的无线网卡还支持蓝牙。
    • 蓝牙网卡:使得计算机能接入 Bluetooth 无线网络。
  • 例:以太网通信的原理

    • 将多个计算机组成一个局域网,每个计算机都安装了以太网网卡,可以进行以太网通信。
    • 通过以太网协议传输的数据包,称为以太网帧。每个以太网帧的目标地址,是 Mac 地址的格式。
    • 每当网卡收到一个以太网帧时,
      • 如果目标地址是本机 Mac 地址,则读取该帧。
      • 否则,
        • 如果本机是交换机、路由器,则转发该帧。本机会通过 ARP 协议记录局域网中所有主机的 Mac 地址,此时根据以太网帧的目标 Mac 地址,将帧转发到正确的主机。
        • 否则,丢弃该帧。
  • 计算机网络中的 port 通常翻译为端口、接口,有两种含义:

    • 物理上的线路端口:例如网卡具有至少一个端口,可以插入双绞线。
    • 逻辑上的网络端口:例如 Web 服务通常使用 TCP 协议的 80 号端口。

# 无线接入点

:Wireless Access Point ,简称为 AP 。

  • OSI 层级:工作在物理层。

  • 用途:发射电磁波,从而提供 WLAN 网络。

    • 相当于以太网中的集线器,但是无线。
  • 搭建 WLAN 网络的常见流程:

    • 运行一个无线 AP ,提供 WLAN 网络,供多个计算机连接。
    • 给计算机安装无线网卡,从而能接入 WLAN 网络。
  • 现代,很多路由器提供了 AP 功能,甚至很多手机也提供了 AP 功能(称为热点)。

# 中继器

:Repeater ,是一种信号放大设备,具有两个端口。

  • OSI 层级:工作在物理层。
  • 用途:安装在一条通信线路中,从而延长信号的传输距离。
  • 原理:
    • 中继器从一个端口收到信号时,会将信号放大、整形,输出到另一个端口。
    • 例如,在双绞线中,信号传输 100m 之后会明显衰减、变形。可以在 100m 的位置安装中继器,使得信号能传输更远距离。

# 集线器

:Hub ,是一种信号放大器,具有多个端口。

  • OSI 层级:工作在物理层。

  • 用途:

    • 多条通信线路,可以接入同一个集线器,从而合并成一条通信线路。
    • 多个主机可以接入同一个集线器,这会在物理上组成星型结构,但在逻辑上是总线型结构。
  • 原理:

    • 集线器从任一端口收到信号时,都会通过背板电路,转发到其它所有端口。
      • 由于这种转发机制,集线器只支持半双工通信,同时只能从一个端口接收信号。
      • 如果同时从多个端口接收信号,则会发生冲突,丢失某些端口的信号。
    • 集线器有两种端口,一种是普通端口,另一种是级联端口。
      • 多个集线器,可以通过普通端口级联,在物理上组成树形结构。
      • 多个集线器,可以通过堆叠端口连接,合并成一个集线器。
      • 级联、堆叠都会将所有端口纳入同一个冲突域,或者说碰撞域。

# 网桥

:Bridge ,又称为桥接器。

  • OSI 层级:工作在数据链路层的 MAC 子层。

  • 用途:将多个局域网连通,合并成一个局域网。

  • 原理:

    • 网桥具有至少两个端口,每个端口可以连接到一个网络或主机。
    • 网桥从一个端口收到数据帧时,会暂存在内存中,进行解读。然后生成一个新的数据帧,转发到另一个端口。
      • 由于网桥能解读、生成数据帧,因此能将两个数据链路层协议不同(比如以太网与 WLAN )的网络,在 MAC 子层连通。
    • 转发到哪个端口?取决于数据帧的目标 Mac 地址是什么。
      • 如果目标 Mac 地址,在表中记录了对应端口,则转发到该端口。此时不会转发到所有端口,因此每个端口是一个独立的冲突域。
      • 如果目标 Mac 地址,在表中记录了对于端口,但与源端口相同。则丢弃该数据帧,不转发。该操作称为过滤(filter)。
      • 如果目标 Mac 地址,在表中没有记录,则向除了源端口以外的所有端口,转发数据帧。该操作称为泛洪(flood)。
        • 然后,当前局域网的所有主机都会收到数据帧,只有目标主机会做出应答。当应答的数据帧经过网桥时,网桥就知道目标主机接入了哪个端口。
        • 因此,网桥刚启动时,Mac 地址表为空,会以 flood 方式转发数据帧,相当于集线器。
      • 如果目标 Mac 地址,属于广播地址,则会被转发到所有端口。因此网桥不能隔离广播风暴。
    • 网桥会自动地建立和维护一个 Mac 地址表,表中记录了各个目标 Mac 地址与端口的对应关系。
      • 假设 Mac 地址为 Axxx 的一个主机,接入网桥的 1 号端口,发送一个数据帧。
        • 网桥会解读该数据帧,发现其源 Mac 地址为 Axxx ,于是增加一条记录:源 Mac 地址为 Axxx 的主机,接入了 1 号端口。
        • 该操作称为自动学习。
      • 当网桥收到一个目标 Mac 地址为 Axxx 的数据帧时,就会根据 Mac 地址表,将数据帧转发到 1 号端口。
      • Mac 地址表中,每条记录包含一个时间戳,表示最后一次使用该记录的时间。如果一条记录长时间未被使用,则会被自动删除。
  • 透明网桥是最常见的一种网桥。

    • 透明是指网桥对局域网没有影响,不可见,相当于透明。
  • 几个网络互联时,可能产生回路,即出现环型拓扑结构。为了避免回路中网桥重复转发同一数据帧,通常采用生成树协议(Spanning Tree Protocol ,STP)。

    • 生成树算法会选择网络中的一个网桥作为根,其它网桥各自选出自己到根网桥最近的一个端口作为转发端口,并暂时阻塞其它端口,从而构成一个树型拓扑结构的网络。
    • 这样既能消除回路,又能保留备用路径,即冗余。
  • 对比集线器与网桥:

    • 中继器、集线器都属于传输线路的配件,只影响信号的传输过程。它们通常是简单的小型硬件电路,没有软件。而网桥运行了软件。
    • 中继器、集线器工作在物理层,负责传输电信号,即使这些电信号不是有意义的数据。而网桥工作在数据链路层,负责传输数据帧。
    • 如果多个主机,通过集线器连接在一起,则属于同一个冲突域。
    • 如果多个主机,通过网桥连接在一起,则属于同一个局域网,但不是同一个冲突域。
    • 共享式局域网
      • :所有主机连接到一个集线器,只能半双工通信。
      • 集线器的多个端口处于同一个冲突域,采用 CSMA/CD 技术来避免冲突。
      • 集线器的多个端口,共享集线器的带宽。如果接入了较多主机,则每个主机分到的带宽较少。此时,建议用网桥或交换机,分割成多个冲突域。
    • 交换式局域网
      • :所有主机连接到一个网桥或交换机,支持全双工通信。
      • 每个端口属于独立的冲突域,独享带宽。