Networking 我的包头包含什么IP地址?

Networking 我的包头包含什么IP地址?,networking,ip,router,nat,Networking,Ip,Router,Nat,最近在学习网络时,我遇到了一个包的IP头,据说它包含源和目标IP地址。 在本地网络上,它们可以是192.168.0.10和192.168.0.11。 它们与一个源和一个目标进行通信,并切换到另一台机器 我的问题是,当突然有两台机器通过互联网进行通信时,这种情况会发生什么变化 假设我的网络IP为192.168.0.10。我的默认网关有一个到internet的连接,它有一个公共IP地址,比如它的17.5.7.8。 现在我的朋友有了自己的路由器和家庭网络,他的IP地址甚至可能是192.168.0.10

最近在学习网络时,我遇到了一个包的IP头,据说它包含源和目标IP地址。 在本地网络上,它们可以是192.168.0.10和192.168.0.11。 它们与一个源和一个目标进行通信,并切换到另一台机器

我的问题是,当突然有两台机器通过互联网进行通信时,这种情况会发生什么变化

假设我的网络IP为192.168.0.10。我的默认网关有一个到internet的连接,它有一个公共IP地址,比如它的17.5.7.8。 现在我的朋友有了自己的路由器和家庭网络,他的IP地址甚至可能是192.168.0.10,但为了清楚起见,我们可以说他是主机15(192.168.0.15)。他还分配了一个公共IP,比如18.6.8.9

给定我的示例地址,在每个步骤中,每个数据包头是什么样子的

发送器192.168.0.10
目的地???

在传统互联网上,每个人都有一个有效的公共IP地址,源和目的地IP地址始终是原始发送方和最终目的地的IP。当您在本地子网之外发送时,数据包将被转发到网络上的路由器,但这是在MAC层完成的。IP头保持不变

例如,如果我的源IP是1.2.3.4,路由器的IP地址是1.2.3.1,我需要向20.30.40.50发送UDP数据包。src和dest IP地址将保持在1.2.3.4和20.30.40.50。只是发送计算机的路由表将数据包发送到MAC地址1.2.3.1(路由器)。路由器以混杂模式侦听,将所有数据包转发到相应的出站网络


此规则的例外情况是用作NAT(网络地址转换器)的路由器,它们在专用IP地址范围(例如192.168.1.x)内复用设备的专用网络。就网络上的计算机而言,它们正在与一个普通的路由器交谈,而对NAT行为一无所知。路由器作为NAT,将实际更改出站数据包的源IP地址。对于入站数据包,它会将目标IP地址更改为专用网络上的一个节点。

这可能令人困惑的原因是,在您的本地网络中,您的数据包被切换到路由器,然后再在internet上路由

假设流量的目标IP地址为
18.6.8.9
,路由器的公共可路由internet IP为
17.5.7.8
,本地网络的IP空间为
192.168.0.0/27
,您的计算机在该本地网络上的地址是
192.168.0.10
,而您的路由器在该本地网络上的地址是
192.168.0.11
情况如下:

当您计算机上的应用程序尝试向18.6.8.9发送数据包时,操作系统将首先尝试在其路由表中查找该地址的条目。它找不到条目,因此将使用所谓的默认路由,它将指向您的路由器,
192.168.0.11

您的操作系统将意识到它与
192.168.0.11
有一个“直接”连接,这意味着它自己和目标在同一个网络上(
192.168.0.0/27
)。然后,您的操作系统将在
192.168.0.11
上执行ARP查找,获取路由器的MAC地址,并在数据包的以太网报头中将目标以太网地址设置为路由器的MAC地址

当数据包离开您的计算机时,IP报头的源地址将为您的计算机、
192.168.0.10
,以及目标地址 作为
18.6.8.9
。在以太网报头中,源地址将是计算机的MAC地址,目标地址将是路由器的MAC地址

一旦数据包到达路由器,路由器将用分配给它的“真实”互联网可路由公共IP地址替换源地址(替换
192.168.0.10
)。因此,在开放的互联网上,流量的源IP为
17.5.7.8
,目的地址为
18.6.8.9