"假设两个使用IP协议的站点A、B通过第三层交换机进行通信,发送站点A在开始发送时,把自己的IP地址与B站的IP地址比较,判断B站是否与自己在同一子网内。若目的站B与发送站A在同一子网内,则进行二层的转发。若两个站点不在同一子网内,如发送站A要与目的站B通信,发送站A要向“缺省网关”发出ARP(地址解析)封包,而“缺省网关”的IP地址其实是三层交换机的三层交换模块。当发送站A对“缺省网关”的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B站的MAC地址,则向发送站A回复B的MAC地址。否则三层交换模块根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向三层交换模块回复其MAC地址,三层交换模块保存此地址并回复给发送站A,同时将B站的MAC地址发送到二层交换引擎的MAC地址表中。从这以后,当A向B发送的数据包便全部交给二层交换处理,信息得以高速交换。由于仅仅在路由过程中才需要三层处理,绝大部分数据都通过二层交换转发,因此三层交换机的速度很快,接近二层交换机的速度,同时比相同路由器的价格低很多。"
--------------------------------------------这是我在网上看的一篇介绍3层交换机原理的文章,如果照它上面说的,我的"默认网关"应该就是在3层交换机的三层交换模块中(而“缺省网关”的IP地址其实是三层交换机的三层交换模块--上面的原话),那么我和局域网中其他的子网中的机器通信的时候应该是直接基于2层的通信(在第一次路由后),这样我抓到的包中的MAC地址应该是对方机器的MAC地址,可是我现在抓到的MAC地址却是"默认网关"的MAC地址.这样我就怀疑:要么是上面的文章有问题;要么是我的"默认网关"是单独的一个机器,我们的这个子网接到这个机器上,然后它接在3层交换机上(如果是这样,它又是怎样的机器呢?).这个问题都困扰了我一天了,请组过网的高手给小弟解释一下,拜谢~~~~~~

解决方案 »

  1.   

    Sorry,我搞错了,DNS和"默认网关"不是同一个IP~~~~~~~~~~~~~~~~(特此声明)
      

  2.   

    首先,路由器是工作在网络层上的。
    那么,如果你的数据经过了路由器的转发,那么路由器进行arp的时候,应该把自己的内网ip地址解析为它的mac地址之后发给你。
    我想,如果不经过路由器,就用hub连接成一个局域网的话,那么你截获的mac地址就会是
    B的mac地址了
      

  3.   

    to :nuaawenlin(飘人) 
    如果子网是通过路由器连接,就会想您说的那样,是网关的MAC地址.可是现在是3层交换机,
    您可以看看我摘录的那段文章,和我提的问题,谢谢
      

  4.   

    to mingming_lu(初来乍到)
    网络拓扑图,我也不是太清楚.校园网嘛(大型的那种),我估计也是由1~2台核心交换机,n台普通3层交换机,n*x台两层交换机组成的,不过我过两天会去请教一下组网的哪个工程师.
      

  5.   

    不在一个局域网的话,对于3层交换机是一次路由,然后多次转发
    在数据链路层,对于(比如以太网数据帧),这个数据帧是先转发给3层交换机的,所以MAC地址是交换机的,然后由交换机再转发给B啊
      

  6.   

    to :oyljerry(【勇敢的心】→ ㊣MS-My Dream√㊣
    请问网关(A的)和网关(B的)之间是2层通信的吗(A,B之间网关都在3层交换机内部),
    网关之间的数据包也是已太网包吗?如果是,他们之间的数据包的MAC源和目的地址分别
    是A和B的网关MAC地址吗? 
    PS:A,B在不同的VLAN
      

  7.   

    网关之间在链路层也是以太网包来转发的,分别为对方的MAC地址等来作为目的地址的
      

  8.   

    交换机的工作原理事实上和路由器是很相似的,只是路由器具有路由功能,而交换机不具备此功能,但数据包在网内的工作都是通过交换机进行转发的,你的默认网关设置在交换机上,自然是先走交换机再走别的机器了,所以你得到的交换机的MAC很正常啊。事实上,路由器和交换机都是有IP地址和MAC地址的,可以讲,他就像你的代理服务器一样。这样说,你应该可以明白了吧?
    PS:好像那个3层交换机也具有路由功能吧,之所以叫3层就是拥有路由功能吧,而且好像价格也不便宜的东东。