这些天来,我正在“自学”有关数据包交换网络的知识,包括 TCP、UDP 和其他协议。我已经确认发送者的 MAC 地址不能直接发送到接收者,因为数据包往往通过几个路由器(其中一个 WAN)传播。
但是在局域网中,我假设了类似的场景,假设有一个路由器用于两个终端,它们正在联系一个简单的“TCP 聊天”——用 Java 设计。(我不会给出它的代码)。我在java中设计了一个简单的“数据包嗅探器”(通过使用jpcap),它从每个“数据包头”中提取MAC地址并将它们放在一个文本文件中,如下所示......
Destination MAC: ##:##:##:##:##:## /*My Terminal's MAC*/
Source MAC: ##:##:##:##:##:## /*Sender's Terminal's MAC*/
好的。?现在......我的疑问是......在上面的数据中,我发现路由器的MAC没有被包括......!当我的终端是接收者时,它有数据包嗅探器,因此我可以直接看到上面的发送者的 MAC 地址..!
但我的论点是......发送者和接收者之间有一个路由器(在局域网中)......?那为什么上面的代码没有显示路由器的 MAC 而不是显示发件人的 MAC..?
但是,当我通过浏览器连接到 Google 时执行我的“数据包嗅探器”时,我观察到上述数据如下所示......
Destination MAC: ##:##:##:##:##:## /* My LAN-Router's MAC */
Source MAC: ##:##:##:##:##:## /* My Terminal's MAC */
在这里我可以看到我的 LAN-Router 的 MAC ......!
任何人都可以解释为什么当我通过 TCP 聊天与 LAN 中的对等方联系时看不到 LAN-Router 的 MAC...?
提前致谢..!