0

这些天来,我正在“自学”有关数据包交换网络的知识,包括 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...?

提前致谢..!

4

1 回答 1

0

网络浏览和聊天连接的方式(通常)不同。当您连接到 Google 时,您并没有直接连接到 Google 的 IP 地址(尽管您也可以这样做),但可能是 www.google.com -- 这需要 DNS 来确定 HTTP 请求应该是的 IP 地址发给。当你使用 TCP 聊天时,你会直接进入别人机器上的 TCP 聊天。

于 2014-04-27T08:50:24.030 回答