插入电脑并访问谷歌是一个令人惊讶的复杂过程。这个答案试图解释基本过程,而不会太详细。
当您将计算机插入网络时,它使用一种称为 DHCP 的协议为自己请求 IP 配置。此配置将包括 IP 地址、子网掩码、默认网关和 DNS 服务器。
DHCP 请求作为广播发送到本地以太网上的所有系统,并由 DHCP 服务器应答。在典型的家庭或小型企业环境中,DHCP 服务器将在路由器上运行。交换机(通常)不知道或不关心 DHCP,它只是传递请求和响应。
当您访问 google.com 时,您的浏览器会要求操作系统将 google.com 转换为 IP 地址。操作系统生成 DNS 请求并将其排队以发送到 DNS 服务器地址。
然后它在它的路由表中查找 DNS 服务器的地址。确定“下一跳IP地址”和接口。默认情况下,如果目标位于本地子网上,则下一跳 IP 地址将与目标 IP 地址相同。否则,下一跳 IP 地址将是默认网关。
那是ARP第一次发挥作用的时候。“下一跳 IP 地址”必须转换为 MAC 地址。计算机将查看它的 ARP 表,如果它找到了一个条目,那就太好了,否则它会发出一个 ARP 请求来尝试定位与下一跳 IP 地址相对应的 MAC 地址。
接下来会发生什么取决于配置。也许路由器将数据包路由到 Internet 上的 DNS 服务器,也许它执行 NAT,也许路由器有本地 DNS 服务器。
无论哪种方式,路由器最终都会收到一个发往您的客户端机器的 DNS 回复。它会在它的路由表中查找你机器的 IP 地址,并确定它在本地网络上。然后它会在它的 ARP 表中查找它,以便它可以将它发送到您的机器。
您的计算机收到 DNS 回复。所以它有一个 google.com 的 IP 地址,可以尝试连接到它。连接过程从发送 TCP 同步数据包开始。
再次在路由表和 arp 表中查找目标 IP 地址,并将数据包发送到路由器。在典型的家庭/小型企业设置中,路由器将执行网络地址转换,因此数据包似乎来自路由器并将数据包发送到互联网。
当回复到达时,路由器将反转任何网络地址转换并将数据包发送回您的主机。它再次使用它的 arp 表来查找主机的 MAC 地址。
开关在很大程度上对所有这些一无所知。它只是使用源 MAC 地址来构建一个将 MAC 地址映射到端口的表。如果它知道目标 MAC 地址在哪个端口后面,它就会将数据包发送到那里,否则它会将它泛滥到任何地方。