数据包如何知道另一个局域网上的哪个设备去

网络工程 路由器 IPv4
2022-02-13 13:28:33

如果我知道网络的公共 IP 地址,我可以与该网络的路由器通信。但是我如何向路由器指定我想开始与网络中的哪个设备通信?我要问的几乎是这样的:如果发送设备尚未与接收设备建立连接,路由器如何知道将接收到的数据包发送到哪个设备..

我了解数据包的 IP 标头中包含目标地址,即公共 IP 地址。当这个数据包被发送时,它会在旅途中到达不同的网络设备,询问每个设备是否包含目标地址,如果没有,数据包会跳转到另一个设备,直到找到目标地址。一旦它到达具有公共 IP 地址的设备,它就会被转发到路由器。假设这个数据包是在该路由器后面的设备上发送给 192.168.0.7 的,并且说在发送这个数据包之前没有建立连接,路由器如何知道将数据包发送到 192.168.0.7?这是如何以及在什么时候指定的?

1个回答

在构建数据包期间,您的计算机必须首先使用域名系统解析任何使用的主机名(例如 google.com) 。然后,您的计算机将拥有目标 IP 地址,并且您知道将数据包发送到哪里,但不知道路由。

为了确定此信息,每个路由器都维护路由表,然后使用一个或多个协议来确定数据包的路径。通常,对于小型办公室和家庭,使用的协议是RIPv2对于最简单的设置,只有一个路由 -默认路由,它将通过防火墙/路由器的默认网关路由流量。此时,您将到达一个 ISP 路由器/电缆调制解调器。这些通常会通过类似的方法将您转发到使用BGP 协议的大型路由器。这是一种更复杂的路由方法,其中维护了大型路由表,这些路由指向 ARIN等公司分配的大型公共子网到指定的路由器。在 BGP 协议中,这些路由由对等体更新并过期并定期刷新。对于小规模和大规模之间的路由(例如,在大型办公室或校园或 ISP 内,可以使用EIGRPOSPF等替代协议

当数据包离开您的路由器时,源地址将更改为您路由器的公共 IP 地址。因此,当数据包到达目的地时,接收服务器只需响应您的路由器地址。然后由您的路由器来跟踪和维护有状态的连接——即哪个源 IPaddress:port 和目标 IPaddress:port 组合相互通信。这些连接的创建、寿命和拆除由您的路由器根据其防火墙规则、NAT 策略和其他防火墙设置来维护。

在较低级别上,网络设备维护 ARP 表,其中哪些 IP 地址应发送到与维护该表的设备相连的哪个 MAC 地址。例如,对于家用路由器,它知道将数据包发送到您的工作站或笔记本电脑的 MAC 地址,而对于所有其他流量,它知道将数据包发送到您的电缆调制解调器或 ISP 路由器。要查找以前从未见过的地址,会广播ARP 探测并用于填充表。这只会告诉每个设备它是下一跳,并且 ARP 对下一个设备(通常)没有可见性。(例如,您的工作站不会知道您的电缆调制解调器/ISP 路由器的 MAC 地址。只有您的路由器/WAP 会知道。