遇到问题想搞明白,必须钻牛角尖,多问为什么?
首先推荐你一本书 用tcp/ip进行网际互连 ,刚发现这本书,比tcp/ip 卷1 还好看的书 ,刚发现的,看了一小半。
要搞懂 一台pc--1台交换机-1台pc 这三个设备的通讯,实在太难,实在是太复杂了。。。。
你这个问题涉及单播,广播,交换机工作原理,arp 等
交换基本工作原理,收到广播,肯定要广播,对除了本端口外的所有端口广播。收到单播,记录下源mac ,和本端口“绑定”,查看数据帧种的目的mac,如果某端口的“绑定"表中找到,就向某端口转发,否则,广播出去。
a--交换机---b
a ping b, 首先,a查看自己的arp 缓存表,如果存在b的 ip --mac “绑定”记录,a ping b的数据包中的二层目的mac 填写b的mac (这是个正常的包,含3.5层 icmp,3层ip,2层 )。如果不存在b的ip --mac “绑定”记录, ip v4 发送 arp 数据包(2.5层),arp 协议的目的就是为了获取b的mac 然后就可以按照上面的“正常”发送数据了。
看下arp 的帧, 首先 发送者mac a, 目的mac 全f, 然后看 帧结构,目的mac 字段 全 0 (等着b来填写呢),目的ip b ,源mac a, 源ip a 。 也就是说目的mac没有填写,并且里面有b 的ip
ok, 这个广播会在本冲突域内泛洪,所有pc可以收到,如果不是b收到, 因为上面的帧里面有目的 ip b ,所以收到后,arp 协议无动于衷。 只有b收到了,发现里面里面自己的ip, mac 又没有填写。好吧,那我就填写了。然后发送单播告诉a。 这是是个arp 应答报文, 发送者mac b 目的mac a (这就是单播,上面arp 请求是广播)。 然后看下帧内容, 源mac 目的mac 源ip 目的ip 都填写了“正常的” 了 。
交换机收到了报文,“绑定”b的mac 和交换端口, 以后不管谁给b发送数据,都可以直接发送了。
a b 都会维持arp 缓存表,过期删除。 交换机 也维持“绑定”表 ,过期删除。
上面的“绑定”不专业,交换机“绑定”表--mac 地址表。
--------
有看了下你的问题,有个地方还是没理解,2层交换机是傻瓜设备,只负责转发,所以没有mac,不存在那个pc会发送数据的mac会是交换机。有人会说,2层交换机有mac,那我觉得这不是纯粹的2层交换机。
本帖最后由 wuyuleccna 于 2017-5-26 02:37 编辑