互联网是由无数个小网络组成的,在这些网络中有各种各样的设备。今天我们来说一说实现网络通信的几个关键设备,以及这些设备是如何实现其功能的。

主机(host)

主机范指互联网上的任何一个端点设备,这个设备可以是发起数据传输的起点,也可以是接受数据的终点。

最经典的例子就是我们的电脑。

主机

主机运行应用程序来与最终用户交互,同时,主机也会将数据写入网络进行传输。因此,主机可以操作所有的七层 OSI 模型。

典型的网络传输中,通信双方通常被成为客户端和服务端。客户端发起请求,服务端处理请求并返回客户端需要的数据。

网络(network)

一个网络一般有至少两个主机组成。一个网络有多重存在形式:

  • 教室中的一组 PC,在同一地点组成一个网络。
  • 在家庭网络中,有多重类型的设备,手机、电脑、打印机等,这些设备组成家庭网络。
  • 在一家咖啡店里,WIFI 网络中有很多连接到这个 WIFI 的移动设备。
  • 一家公司通常有多个网络,比如供开发人员使用的开发网络,供全员使用的办公网络等。

每种网络的功能不同,网络中的设备彼此连接通信,同时这些设备还可以与网络外的其他设备通信。实际上,这个互联网是由若干个互相连接的网络组成的。

交换机(switch)

交换机是一个网络内的设备,负责网络内的数据通信。

交换机工作在 OSI 模型中的第二层,也就是说交换机只处理数据帧中第二层的数据头。第二层的数据头中包含两的地址信息(源和目标的 MAC 地址)。

交换机

在交换机中维护这一个 MAC 地址表。这个地址表记录着每一个插在交换机端口上的设备的 MAC 地址。一个交换机有多个端口,从 24 个到 48 个,到 96 个,甚至更多。

交换机通过读取接受到的数据的来源 MAC 地址来扩展 MAC 地址表。同时,交换机会根据目标 MAC 地址和 MAC 地址表来确定使用哪个端口。

如果交换机无法确定使用哪个端口,则会将这条数据逐端口转发(排除接收数据的端口)。

路由器(router)

路由器是一个网络间的设备,负责网络间的通信。路由器上的每一个接口都会创建一个网络边界。

路由器工作在 OSI 模型中的第三层,也就是说路由器只处理数据帧中第三层的数据头。第三层的数据头中包含端到端的地址信息(比如源和目标的 IP 地址)。

路由器

上图左侧的路由器(R1)和右侧的路由器(R2)创建了三个隔离的网络((11.11.11.x,22.22.22.x 和 33.33.33.x)),R1 的右侧接口和 R2 的左侧接口处在同一个网络中。

网络 11.11.11.x 中的主机要想与网络 33.33.33.x 中的主机进行通信,就必须将数据发送给路由器 R1,然后在发送给路由器 R2,最后在由路由器 R2 发送给网络 33.33.33.x 中的主机。

路由器通过路由表(Routing Table)来实现上述功能。这个表中记录了去向所有路由器知道的网络的路径。这些记录通常被称为路由。表中的每一条记录包含一个 IP 网络和能够到达该网络的下一个路由器的地址。

注意,对于路由器来说,路由表记录了所有它知道的网络。如果路由器接收到一个发往它不知道的网络的数据包,那么就该路由器而言,该网络一定不存在。因此,如果一个数据包的目标网络不在路由器的路由表中,该数据包会被路由器抛弃。

地址解析协议(Address Resolution Protocol,ARP)

前面我们讨论过第二层的 MAC 地址,以及第三层的 IP 地址。地址解析协议将这两个地址联接起来。

一般来说,两个主机在进行通信之前,是知道对方的 IP 地址的。获取这个 IP 地址的方式有很多种,比如别人已经给定地址,或者通过 DNS 获取。

知道了 IP 地址,但是却无法知道对方的 MAC 地址。主机会通过 ARP 协议来确定对方的 MAC 地址。换句话说,ARP 协议使用 IP 地址来确定 MAC 地址。建立联系的 IP 地址和 MAC 地址被存放在 ARP 表中。

ARP

在上图中,有三个网络。首先,如果紫色网络内的主机要与紫色网络内的其他主机通信,通过 IP 地址可以判断出目标主机在同一个网络内。源主机通过 ARP 协议可以确定目标主机的 MAC 地址,从而可以设置第二层数据头如下:

网络内的 ARP

当紫色网路中的主机要与右边红色网络中的主机进行通信时,通过 IP 地址就可以判断出目标主机处在紫色网络外。这时,紫色网络中的主机就知道需要将数据包发给路由器 R1。如果主机确定目标主机是网络外的设备,那么它就会通过 ARP 协议获取最近的路由器的 MAC 地址。

网络外的 ARP

总结一下 ARP:

  • 如果目标主机处在网络内,那么源主机就通过 ARP 确定目标主机的 MAC 地址。
  • 如果目标主机处在网络外,那么源主机就通过 ARP 确定最近的路由器的 MAC 地址。

我们知道,第二层负责逐跳传输数据包,第三层则负责端到端的传输数据包。ARP 就是帮助第三层来确定正确的第二层数据头来完成数据传输。

总结

本篇和前面的一篇 介绍了网络中的种种概念,这些是计算机网络中的基础。

首先我们介绍了 OSI 模型中各层的职能。

  • 第一层负责在物理媒介中传输 0/1 数据流。
  • 第二层使用 MAC 地址来实现逐跳的数据传输。
  • 第三层使用 IP 地址来实现端到端的数据传输。
  • 第四层通过端口号来实现应用服务到应用服务的数据传输。

我们还讨论了网络中的设备。

  • 交换机负责网络内的通信,工作在第二层。
  • 路由器负责网络间的通信,工作在第三层。
  • ARP 通过已知的 IP 地址来确定的未知的 MAC 地址。

在各个设备中,使用了不同的映射表。

  • 交换机使用 MAC 地址表,来确定交换机的端口和 MAC 地址的映射关系。
  • 路由器使用路由表,来确定网络和能到这个网路的下一个路由器的地址。
  • 所有的第三层设备都使用 ARP 表来确定 IP 地址的 MAC 地址。

关注微信公众号,获取最新推送~