Loading...
墨滴

PythonCN

2021/08/19  阅读:24  主题:橙心

【翻译】Packet 的旅行 — 关键参与者

互联网是许多不同元素的迷人组合,它们共同创造了一个世界范围的网络,允许数十亿不同的设备进行通信。在本文中,我们将看看互联网的一些关键参与者,以及每个参与者为实现网络通信而发挥的作用。 ​

此列表远非详尽无遗,但将涵盖你需要熟悉的主要“角色和工作人员”,以便了解数据包如何通过互联网传输。 ​

主机

主机这个术语是一个通用术语,表示互联网上的任何类型的终端设备。 任何可能是流量的原始发起者或流量的最终目的地的设备都可以被视为主机。

传统的例子是你的电脑或笔记本电脑。但在这个现代社会,还有很多:手机、智能电视、智能手表、某些汽车,甚至一些冰箱! ​

主机运行软件和应用程序,供终端用户互动,它们在某些时候也需要把比特放在电线上。因此,也就是说主机工作在 OSI 模型的所有七层中。 ​

在典型的互联网通信或网络流量中,通信中的两个主机通常被标记为客户端或服务器。 ​

客户端是发起请求的实体,并希望获取一条信息或数据或服务。 而服务器是接收请求的实体,拥有客户端想要的信息、数据或服务。 ​

应该注意的是,这些术语是相对于特定类型的通信而言的。 ​

例如,当你的笔记本电脑浏览网页时,你的笔记本电脑充当客户端,而 Web 服务器充当服务器。 但是,当同一个 Web 服务器随后下载软件更新时,它现在充当客户端并与更新服务器通信。 ​

网络

网络就是两个或多个连接的设备——通常按相似的用途或物理位置组合在一起。 网络可以采用多种不同的形式,例如:

  • 教室里的一组 PC 都在同一个物理空间中,都属于一个网络。
  • 任何典型的家庭网络都将包括多台笔记本电脑、移动电话或打印机,它们都绑定到同一个物理地址。 因此,都属于同一个网络。
  • 有 WiFi 的咖啡店将允许他们的每个客户连接到同一个 WiFi 网络。
  • 一家大公司可能会使用多个网络,通常按工作角色将它们分开。 例如,一个网络供所有会计师使用,另一个网络供所有工程师使用。

根据每个网络的用途,其中的设备将与同一网络中的其他设备或不同网络中的其他设备进行通信。 ​

在本系列文章的其余部分中讨论的任何关键参与者相互连接时,你就拥有了一个网络。 事实上,整个互联网只不过是一系列相互连接的网络。 ​

交换机

交换机是一种网络设备,其主要目的是用于网络内的通信。 ​

交换机工作在 OSI 模型的 L2,这意味着它们只查看每个数据报的 L2 报文头。** L2 报文头包含实现一跳到另一跳传递的信息,例如源和目标 MAC 地址**。

交换机通过维护所谓的 MAC 地址表来完成这项工作。 这个表映射了插入到每个交换机端口的设备的 MAC 地址。 典型的交换机有许多端口,从 24 到 48,96 个,甚至更多。 ​

MAC 地址表是通过查看任何接收到的帧的源 MAC 地址字段来填充的。 ​

为了转发帧,交换机将在 MAC 地址表中查找目标 MAC 地址以确定要使用的端口。 ​

如果交换机遇到一个帧,但并不知道目标 MAC 地址的位置,它会简单地复制该帧并将其从每个交换机端口(除了接收它的端口)发出。 这个过程将在本系列的另一篇文章中更详细的讨论。 ​

路由器

路由器是一种网络设备,其主要目的是用于网络之间的通信。 路由器上的每个接口都会创建一个网络边界。 ​

路由器工作在 OSI 模型的 L3,这意味着它们只能查看每个数据报的 L3 报文头。 L3 报文头包含实现端到端传递的信息,例如源和目标 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,R1 将依次将数据包转发到 R2,然后R2最终将数据包转发到服务器。 ​

路由器通过维护所谓的路由表来完成这项工作。 这个表包含路由器所有知道的如何到达网络的路径。 这些路径有时称为路由,每个条目都包含一个** IP 网络**,以及通往目标路径的下一个路由器的接口IP 地址。 ​

路由器可以通过多种方式了解网络并填充其路由表。 我们将在本系列后面的文章中介绍其中的一些方法。 ​

请记住,从每个路由器的角度来看,路由表是存在的每个网络的映射。 如果路由器接收到一个发往它不知道的网络的数据包,那么就该路由器而言,该网络一定不存在。 因此,当路由器收到发往不在其路由表中的网络的数据包时,该数据包将被丢弃。 ​

地址解析协议(ARP)

前面我们讨论了 MAC 地址在 L2 寻址方案。 我们还讨论了 IP 地址在 L3 寻址方案。 ​

​ 连接这两种寻址方案的是地址解析协议 (ARP)。 ​

通常,当两台主机进行通信时,它们已经知道彼此的 IP 地址。 他们可以通过多种方法知道彼此的 IP 地址:有时由用户手动提供,有时由其他协议(通常是 DNS)提供。 但实际采用的方法无关紧要(至少与本系列文章无关)。 ​

但是,绝对不知道它们的 MAC 地址。 主机将使用 ARP 来发现适当的 MAC 地址。 换句话说,ARP 将使用已知的 IP 地址,并发现未知的 MAC 地址。 然后将发现的映射添加并存储在 ARP 表中,ARP 表是 IP 地址到相关 MAC 地址的映射。 ​

我们将使用下面的图示来描述 L2 和 L3 如何桥接在一起,以及 ARP 在此过程中的作用: ​

在上图中,共有三个网络:紫色网络、灰色网络和红色网络。 我们将使用此图来说明 ARP 的两个实例:首先,一台主机与同一网络中的另一台主机通信(从客户端到紫色服务器)。 其次,主机与不同网络中的另一台主机通信(客户端到红色服务器)。 ​

当客户端需要与紫色服务器通信时,它知道紫色服务器的 IP 地址,并由此确定紫色服务器存在于本地网络中。 当客户端尝试与同一网络中的主机通信时,客户端会发出一个 ARP 请求,要求提供主机的 MAC 地址。

ARP 将允许客户端按如下方式填充 L2 报文头,如下所示:

当客户端需要与红色服务器通信时,它知道红色服务器的 IP 地址,从而知道红色服务器存在于外部网络中。 因此,数据包必须传送到最近的路由器——也称为默认网关。 ​

客户机通常已经配置了一个默认网关,我们可以从图中看出这个网关是 R1。当客户端试图与外部网络中的主机通信时,客户端会发出一个 ARP 请求,要求提供默认网关的 MAC 地址。

这将允许客户端按如下方式填充 L3 和 L2 报文头:

总结一下 ARP 的操作:

  • 当客户端与同一网络中的主机通信时,它将发送ARP请求主机的 MAC 地址
  • 当客户端与不同网络中的主机通信时,它将发送ARP请求默认网关的 MAC 地址

请记住,数据包传递始终是 L2 的工作,L2 的主要目标是从一跳到另一跳获取数据包。 相反,与端到端交付有关的 L3 无法将数据包放在线路上并将其发送到另一个主机的网卡(NIC)。 ARP 的作用是帮助客户端根据 L3 报文头创建正确的 L2 报文头,以便将数据包从一跳传送到下一跳。 ​

还应该注意的是,任何打算根据 IP 地址 (L3) 转发数据包的设备还必须能够将数据包传送到下一跳 (L2)。 因此,任何使用 IP 地址的设备也必须使用 ARP 来传送使用 MAC 地址的数据包。 因此,所有L3 设备都必须维护一个 ARP 表。 ​

有关 ARP 的另一种解释和视频形式的地址解析过程的说明,请单击此处

总结

这篇文章和之前的文章涵盖了许多主题,这些主题在整本书都写过。 这是有意为之的,以便本系列的下几篇文章可以将所有内容整合在一起(并且比本文更深入一些)。 但在继续之前,了解这两篇文章至关重要。 ​

在本文中,我们讨论了 OSI 模型不同层的主要目的。 具体来说:

  • OSI 的 L1 是通过线路承载 1 和 0 的物理介质
  • OSI 的 L2 负责跳到跳的传递并使用 MAC 地址
  • OSI 的 L3 负责端到端的传递并使用** IP 地址**
  • OSI 的 L4 负责服务到服务的传递并使用端口号

我们还讨论了通过互联网传输数据包的一些关键参与者:

  • 交换机促进网络内的通信并在 L2 运行
  • 路由器促进网络之间的通信并在 L3 运行
  • ARP 使用已知 IP 地址解析未知 MAC 地址

我们还讨论了用于存储不同映射的三个不同表:

  • 交换机使用 MAC 地址表,它是交换机端口到连接的 MAC 地址的映射
  • 路由器使用路由表,它是已知网络接口或下一跳地址的映射
  • 所有 L3 设备都使用 ARP 表,该表是 IP 地址MAC 地址的映射

如果上述任何要点不清楚,请考虑重新阅读本文或上一篇,然后再继续阅读本系列的下一篇文章。 ​

翻译
Key Players[1]

参考资料

[1]

Key Players: https://www.practicalnetworking.net/series/packet-traveling/key-players/

PythonCN

2021/08/19  阅读:24  主题:橙心

作者介绍

PythonCN