路由器使用 IP 层(第 3 层),交换机使用数据链路层(第 2 层)。第 1 层是通过线路的物理 1 和 0,第 2 层是数据链路层,它是以太网和点对点协议 (PPP) 等协议,它在相邻节点之间传输有关 MAC 地址的信息,来自和并允许错误检测和重传。第 3 层是 IP 层,它携带有关数据包在整个网络中的来源和目的地的信息,而不仅仅是当前跃点。
传输将是这样的:
机器 A 想向机器 B 发送一个数据包。机器 A 知道机器 B 的 IP 地址,因此它将它放在第 3 层数据包中。但是,机器 A 需要将下一跳的 MAC 地址放入第 2 层数据包中。如果它不知道,那么它将使用目标 IP 向网络发送一个称为 ARP 请求(地址解析协议,请阅读此处: http ://www.tildefrugal.net/tech/arp.php)的东西。这里会发生几件事之一:
- IP是本地的。具有该 IP 的机器将使用其 MAC 地址回复发件人。
- IP 是非本地的。网关路由器将检测到这一点并发送其 MAC 地址。
- IP 是非本地的,并且机器 A 的默认网关和子网掩码已设置。使用此信息,机器 A 可以确定 IP 地址的非本地性并将其发送到路由器的 MAC 地址(如果还不知道,则为 ARPing)。
(如果机器 A 早先发现了这个,它将在 ARP 缓存中,机器 A 将使用它。)现在 MAC 地址已发送,数据包可以被传输(物理层 1 执行实际的数据传输)电线)。下一站将是开关。交换机知道列为第 2 层目标的 MAC 地址在哪个出站端口上,因为它会跟踪它看到的数据包来自的每个 MAC 地址以及它来自哪个端口 - 如果它不知道,那么它将在每个单一端口,保证它会到达。
因此,数据包到达路由器。IP 模型很酷的地方在于它将网络/世界中的每个 IP 地址划分为层次结构 - 根据定义,子网不能部分重叠子网,它们要么完全包含它们,要么完全包含在它们之中。因此,只要子网遵循这个层次结构,路由器就可以通过查看 IP 将在其表中属于哪个子网,明确地确定 40 亿个可能的 IP 地址中的每一个在网络上的位置!然后将数据包从该端口发送出去。
当数据包通过互连的 ISP 的路由器、骨干基础设施等时,它到达机器 B 的路由器,在那里发生相反的过程 - 路由器 B 看到它的目的地是机器 B 并将其发送到站。(类似地,如果不知道,路由器 B 将不得不使用类似 ARP 的过程来查找机器 B 的 MAC 地址。)从这里开始,其余的应该是微不足道的。
很好的参考:
https://web.archive.org/web/20120129120350/http://www.tildefrugal.net/tech/arp.php
http://en.wikipedia.org/wiki/Data_link_layer
http://en.wikipedia.org/wiki/Network_switch
http://en.wikipedia.org/wiki/Network_layer
http://en.wikipedia.org/wiki/Routing
http://en.wikipedia.org/wiki/Router_(计算)
http://en.wikipedia.org/wiki/Address_Resolution_Protocol