一般网络理解

网络工程 IPv4 MAC地址 第 2 层 第 3 层
2022-02-09 05:04:12

我编写了一个与服务器进行数据包通信的程序,有时我的脑子里一直有一些东西:当我用 WS 分析数据包时,我可以在标题中首先看到两个 MAC 地址。一个是我的笔记本电脑 MAC,另一个似乎是我的路由器的 MAC(请您确认一下),而我会假设另一个 MAC 是服务器的 MAC。

我使用的会话的 ip 版本是 ipv4。源IP是我在网络下的IP(我没有问题)但是目标IP是服务器的IP,起初我很好,但现在我相信MAC是我的路由器我会假设目标IP成为我的路由器(但是我的路由器如何知道何时发送数据包......所以是的。)。

我四处浏览,但找不到我想要发现的数据包是什么时候动态编辑的,如果是的话。当我收到一个数据包时,目标是我的笔记本电脑的 MAC,而源是我的路由器的 MAC,这只有在我的路由器在收到数据包时修改了数据包时才有意义,假设服务器甚至不知道我的笔记本电脑的 MAC。然后我猜在服务器和我的路由器之间,数据包的 IP 是 1/server ip 和 2/router ip,但是一旦数据包到达路由器,路由器的 ip 就会被网络下我的笔记本电脑的 ip 替换,是吗?

如果您可以确认或否认这些假设,并可能将我指向一个包含这些信息的网站,我将非常感激。

1个回答

您需要了解包含 MAC 地址的第 2 层帧仅适用于创建它的 LAN。在那个 LAN 上,它不会被修改(除了中继可以添加 VLAN 标记,仅适用于中继)。

第 3 层设备(如路由器)剥离第 2 层帧以获取第 3 层数据包。当路由器将数据包发送到新接口时,它将为新链路创建一个新帧。根据新链路上的第 2 层协议,可能有也可能没有 MAC 地址。如果它是使用 MAC 地址的协议,则新帧将使用路由器的该接口的 MAC 地址作为源地址,并将该 LAN 上的下一跳 MAC 地址作为目标 MAC 地址。这发生在每一跳,因为 MAC 地址仅对连接 MAC 地址的 LAN 有效。

您的主机会将数据包封装在一个帧中,将其 MAC 地址作为源地址,并将服务器的 MAC 地址作为目标地址,前提是服务器位于同一二层 LAN 上。如果数据包发往不同的第 3 层网络,则帧中的目标 MAC 地址是您主机中配置的网关的 MAC 地址。

除非您在路径中的某处配置了 NAT,否则数据包中的 IP 地址不会更改。IP 的主要驱动因素之一是 NAT 中断的端到端连接。NAT 是一种保存 IPv4 地址的工具,直到我们可以转换为 IPv6。