所以我正在考虑 4 个领域。每个 MAC 地址和 IP 地址的源/目标。
如果数据报通过几个主机,这些值中的哪些会发生变化。据我了解,两个目标地址都没有改变,但其中一个源地址确实改变了。
当每个主机处理数据包时,我认为它们只更改这些值中的一个,我认为它是源 MAC 地址。真的吗?
所以我正在考虑 4 个领域。每个 MAC 地址和 IP 地址的源/目标。
如果数据报通过几个主机,这些值中的哪些会发生变化。据我了解,两个目标地址都没有改变,但其中一个源地址确实改变了。
当每个主机处理数据包时,我认为它们只更改这些值中的一个,我认为它是源 MAC 地址。真的吗?
理想情况下,源 IP 地址和目标 IP 地址不会更改。实际上,可以使用 NAT,并且根据所使用的 NAT,可以更改源、目标或两者的 IP 地址。
在局域网中,源和目的 MAC 地址不会改变;它们特定于产生帧的 LAN。您可能对第 3 层设备(例如路由器)会剥离包含源和目标 MAC 地址的帧这一事实感到困惑。如果第 3 层设备将数据包发送到不同的接口,它将基于新的 LAN 创建一个新帧,并将数据包发送到该帧。在这种情况下,新帧将具有不同的源 MAC 地址和目标 MAC 地址。
这取决于通信通过哪些设备。
让我们考虑一个网络。一个真实的网络会有更多的跳数,但这显示了所有重要的元素。我们正在考虑的网络中的所有连接都是以太网。
客户端<-->以太网交换机<-->NAT<-->IP路由器<-->服务器
现在让我们说客户端去建立一个到服务器的 TCP 连接。
客户端构建一个数据包。它的源 MAC 设置为它自己的 MAC 地址。它的目标 MAC 设置为 NAT 盒上相关端口的 MAC。它的源 IP 设置为客户端的私有 IP。它的目标 IP 设置为服务器的 IP。它的源端口设置为客户端绑定的端口(通常是随机选择的)。它的目标端口设置为服务器上所需服务的端口。
以太网交换机只是简单地传递帧。它不会更改任何地址。
NAT 剥离以太网报头。然后修改 IP 标头,将源 IP 地址更改为其公共 IP。它还可以更改源端口以消除来自不同客户端的连接的歧义。目标 IP 和端口保持不变。创建映射表条目以便可以执行反向转换。然后构建新的以太网报头,源 MAC 是 NAT 盒上相关端口的 MAC,目标 MAC 是 IP 路由器上相关端口的 MAC。
IP 路由器剥离以太网报头并再次构建新报头,以便将数据包发送到服务器。
数据包到达服务器,生成一个回复,然后类似的过程继续将数据包返回给客户端。
如果数据包通过交换机,则没有任何改变。如果数据包通过路由器,则源 MAC 地址逐跳更改(一跳是第 3 层设备)