这些天我在自学和#34;关于分组交换网络包括TCP,UDP和&其他协议。我已确认发送方的MAC地址无法直接发送到接收方,因为数据包往往通过多个路由器(WAN)进行传输。
但是在局域网中,我假设了类似的情况,让我们假设有两个终端有一个路由器,那些正在联系一个简单的TCP聊天消息' - 用Java设计。 (我不打算给它代码)。我设计了一个简单的数据包嗅探器"在java中(通过使用jpcap)从每个"包头#34中提取MAC地址;并将它们放在文本文件中,如下所示......
Destination MAC: ##:##:##:##:##:## /*My Terminal's MAC*/
Source MAC: ##:##:##:##:##:## /*Sender's Terminal's MAC*/
O.K ..?现在......我怀疑......在上面的数据中,我发现路由器的MAC不包括在内......!当我的终端是具有该数据包嗅探器的接收器时,我可以直接看到上面的发送者的MAC地址..!
但我的论点是......在发送者和发送者之间有一个路由器(在局域网中)。接收器没有..?那么为什么上面的代码没有显示路由器的MAC而不是显示发送方的MAC ..?
但是,当我执行我的'数据包嗅探器'当我通过浏览器连接谷歌时,我观察到以上数据如下所示......
Destination MAC: ##:##:##:##:##:## /* My LAN-Router's MAC */
Source MAC: ##:##:##:##:##:## /* My Terminal's MAC */
在这里,我可以看到我的LAN-Router的MAC ......!
任何人都可以解释为什么当我通过与局域网中的对等方的TCP聊天联系时,我无法看到LAN-Router的MAC?
提前致谢..!
答案 0 :(得分:0)
网络浏览和聊天连接的方式(通常)不同。当您连接到Google时,您没有直接连接到Google的IP地址(尽管您也可以这样做),但可能是www.google.com - 这需要DNS来确定HTTP请求应该是的IP地址寄去。当您使用TCP聊天时,您将直接进入其他人机器上的TCP聊天。