很多初级网工兄弟在跳槽找工作面试的时候通常遇到过这种题,考官会说麻烦简述下以下场景的过程,一台交换机接两个主机PC-A和PC-B,PC-A和PC-B在同一个VLAN下,并且两个PC配置相同段的IP,简述PC-A ping PC-B的整个网络过程。
毫无疑问上述测试肯定是没问题的,乍一看好简单,基本上只要学过两天交换机配置的兄弟都能两分钟内配好这个环境,但是面试官让你描述这个ping通的过程,这个时候很多兄弟就傻眼了,这这这还有过程?不是在PC-A上ping 下PC-B 就通了吗?这不废话吗,我们作为一个网络工程师,而不是一个拉网线的民工区别就在这里。下面就通过一个小实验(大家也别嫌简陋)来给大家解释下,涉及到一丢丢的数学知识大家自行百度下就OK了。
实验如下图:
二层交换拓扑图
不知道大家有没有想过这样一个问题,就是PC-A Ping PC-B的时候它怎么知道192.168.1.2/24是和它是所处在同一个网段?并且ping的时候是走二层还是走三层呢?并且如果走三层他是怎么查路由表的呢?这里其实涉及到一点数学知识,相信学过数学的小伙伴都知道与、或、非这三个概念吧(如果不太清楚可以自行搜搜搜下),我们主机在数据交换的过程中就用到了这个概念,PC-A 会先将192.168.1.2和自己网卡192.168.1.1进行与运算,在PC-A掩码范围内,与运算结果为“1”则为同网段,结果为“0”则为不同段,同段进行二层转发,不同段走三层转发(下次更新介绍),二层转发如下过程:
(1)主机PC-A向全网段的其他主机发送ARP广播报文,其S-mac为主机A 的MAC地址,S-IP为主机A的IP地址192.168.1.1,D-MAC为全F的广播地址,D-IP为主机B的IP地址192.168.1.2,交换机在收到这个广播包之后会查本地ARP表,如果能查到IP对应的ARP表项(IP+端口)则转发,如果找不到则会在同VLAN对应的端口下进行泛洪,即所有端口全部转发出去,并对PC-A的IP和对应的端口进行ARP表项记录。
(2)当全网通VLAN下的主机都收到该ARP广播时,只有主机PC-B发现ARP请求报文中的目的IP地址与自己的IP相同,则给予主机PC-A 发送ARP应答报文,S-MAC为主机PC-B 的MAC地址,S-IP为主机PC-B的IP地址192.168.1.2,D-MAC为主机PC-A的MAC地址,D-IP为主机PC-A的IP地址192.168.1.1。在此过程中,主机PC-B将主机PC-A的MAC地址和主机PC-A的IP地址写入自己的ARP表项中,以便之后的二层转发,交换机在收到此报文后查询ARP表项转发给PC-A
(3)主机PC-A收到主机PC-B的ARP应答报文之后,将主机PC-B的MAC地址和对应的IP地址写入自己的ARP表项中,以便后续的二层转发,同时,将IP数据包封装发送给主机B。
当然有的人也会问泛洪和广播的区别,交换机会发送广播报文吗,这些我们在后续的文章里在和大家一起讨论。