bylijinnan 发表于 2011-10-20 23:19:22

路由器怎么处理ARP广播包

像这样的拓扑:PC0-SW-ROUTER-PC1
PC0要和PC1通信,刚开始PC0不知道PC1的MAC,因此SW发送ARP广播包,这个广播包也会发送到路由器--问题来了,路由器会怎样处理这个广播包,ARP广播包的格式是怎样的(目标MAC?目标IP?)


我大概知道最终pc0的arp表里面会有这样一个条目:pc1的IP<-->pc0的网关的MAC(路由器左边的接口)。

请大家详细说下这个过程,谢谢啦

紫川凌 发表于 2011-10-21 10:05:09

本帖最后由 紫川凌 于 2011-10-21 10:11 编辑

你可以自己抓包试试,PC0发出ARP请求后,通过SW广播,谁是PC1,到达路由器后,路由器根据路由表发现是自己能到达目标网段,所以将ARP请求发给PC1,PC1回应ARP请求。
我把抓包情况发一下



lgw5821228 发表于 2011-10-21 16:48:02

PC0发送广播给SW,这个时候SW记录PC0的MAC和接口,SW查看MAC表,没有找到对应的条目,继续转发广播包,到达路由器上,发现了与目的IP同网段的IP,这个时候广播转换成单播,丢给PC1~~应该是这样的吧

victor_huang 发表于 2011-10-21 20:23:01

本帖最后由 victor_huang 于 2011-10-22 08:54 编辑

PC0------SW---------ROUTER---------PC1

假设是第一次通信,有路由器存在,跨网段的通信哦。

1.PC0开始Ping PC1,因为是跨网段的通信,所以要先发ARP包请求网关的MAC地址,要拿到网关的MAC地址才能正确封装数据。这时ARP包(注意这里是ARP包,不是你的Ping包)里源ip地址为PC0的IP地址,源MAC地址为PC0的MAC地址,目标IP地址网关的地址,目标MAC地址为全F(也就是二层的广播地址)

2.当Sw收到PC0的ARP包,先学习,将PC1的MAC地址记录下来并和对应的接口绑定,形成CAM表,因为SW没有学习到关于PC0 的网关的任何表项,所以将此ARP包进行泛洪,包的内容并没有修改。

3.当ARP包到达了路由器,路由器先记录PC0的IP地址和对应的MAC地址,然后会响应这个ARP包,并作出回应,回应的这个ARP,源IP为路由器接口IP,源MAC为路由器接口MAC,目标IP为PC0的IP,目标MAC为PC0 的MAC。。这个ARP回应发回给SW,Sw学习这个MAC地址,并记录到CAM表,然后转发给PC0。

4.这时 PC0已经有了网关的MAC地址,Ping包就可以正常发送 ,Ping包格式源IP是PC0的IP,源MAC为PC0的MAC,目标IP为PC1的IP,目标MAC为PC0的网关的MAC。

5.当PC0的Ping包到达路由器,路由器这时就要查看自己的路由表,发现有连接有PC1的这个网段,但是路由器没有PC1的MAC地址,无法将此包进行封装转发,封装失败,就将这个包丢弃

6.路由器这时就从连接PC1网段的这个接口发送ARP包,源IP地址,连接PC1的接口IP地址,源MAC地址,连接PC1的接口MAC地址,目标IP地址,PC1的ip地址,目标MAC地址全F。

7.当PC1收到这个路由器发送的ARP包,进行相应,将自己的MAC地址返回给路由器。


8.路由器这个时候就获取了PC1的IP地址和对应的MAC地址。


当完成了以上的过程,交换机和路由器各个接口连接设备的MAC地址就全部知道了。
当第二个Ping包过来的时候就可以正常的转发了。
对于交换机的工作原理一定要弄清楚。
对于交换机来说,它只能看到2层的东西,它并不能查看到IP地址,只有路由器可以查看IP头部。
页: [1]
查看完整版本: 路由器怎么处理ARP广播包