我有这样的怀疑,我感到很惭愧,所以有一个问题:为什么我没有连接?
情况很简单,我已经configuration了拓扑结构,并且在每台PC和相应的网关之间build立了连接。
问题是当我尝试ping PC1到PC0等另一个networking中的设备时,发生下一个事件
所以我想知道为什么PC0不回复? 这是ARP的基本function?
显然,我configuration了2个静态路由(每个路由器上有一个路由器)将数据包路由到同一接口上的另一个networking。
on R1 : ip route 192.168.1.0 255.255.255.0 FastEthernet0/0 on R0 : ip route 172.16.200.0 255.255.255.0 FastEthernet0/0
非常感谢您的回答!
=========================(EDIT)UPDATE / ANSWER =================== =============
在阅读RFC之后,我明白为什么这是行不通的。 那很简单,ARP还没有被开发/devise来响应(回复)来自另一个networking的请求。 在这种情况下,我强制转发(通过静态路由)到路由器不属于的networking。 在一些文档中,他们说这个协议是在第2层和第3层(第2.5层的LOL)之间的,但实际上他从来没有在第3层上发送关于第3层的信息。 所以当一个设备收到来自另一个networking的ARP请求时,他处理该帧(这是她翻译的帧中的IP),并在另一个networking中看到ARP请求发送者IP自动丢弃该帧。 为了在另一个networking中做一个ARP请求,我们需要一个设备Layer3作为一个ARP代理,他只需要转发arp的请求和回复,显然在每个networking上都有连接。 这是一个奇怪的devise,有点愚蠢,但更多地了解ARP / LAN的。 我想对那些回应并尝试帮助的人表示感谢。
如果你有一个路由器在中间,你正在跨广播域工作。 ARP /第2层通信是在mac地址之间明确完成的。
在典型情况下会发生什么:
PC 1(IP XXXX,MAC XX:XX:XX:XX:XX:XX)想要连接到PC 2(IP YYYY,MAC YY:YY:YY:YY:YY:YY)PC 1注意到IP YYYY不是“本地路由”,将报文发送到路由器(ip ZZZZ,mac ZZ:ZZ:ZZ:ZZ:ZZ:ZZ)
此时,离开PC1的数据包看起来像这样src ip = XXXX src mac = XX:XX:XX:XX:XX:XX,dst ip = YYYY,dst mac = ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
交换机将数据包“切换”到路由器(因为它已经知道端口ZZ:ZZ:ZZ:ZZ:ZZ:ZZ插入),路由器知道IP YYYY在其它接口上,并将数据包路由到PC2相应地。
此时,离开路由器的数据包如下所示:src ip = XXXX src mac = ZZ:ZZ:ZZ:ZZ:ZZ:ZZ,dst ip = YYYY,dst mac = YY:YY:YY:YY:YY: YY
PC2在它的MAC地址上接受数据包…并且还注意到IP是注定要发给自己的…然后对数据包做任何事情。
PC1没有知道mac地址。 没有直接的方法来知道不在同一个广播域中的设备的MAC地址…因为“物理地址”(或MAC)只用于在本地与本地连接的设备进行通信。