很多初級網(wǎng)工兄弟在跳槽找工作面試的時候通常遇到過這種題,考官會說麻煩簡述下以下場景的過程,一臺交換機(jī)接兩個主機(jī)PC-A和PC-B,PC-A和PC-B在同一個VLAN下,并且兩個PC配置相同段的IP,簡述PC-A ping PC-B的整個網(wǎng)絡(luò)過程。
毫無疑問上述測試肯定是沒問題的,乍一看好簡單,基本上只要學(xué)過兩天交換機(jī)配置的兄弟都能兩分鐘內(nèi)配好這個環(huán)境,但是面試官讓你描述這個ping通的過程,這個時候很多兄弟就傻眼了,這這這還有過程?不是在PC-A上ping 下PC-B 就通了嗎?這不廢話嗎,我們作為一個網(wǎng)絡(luò)工程師,而不是一個拉網(wǎng)線的民工區(qū)別就在這里。下面就通過一個小實驗(大家也別嫌簡陋)來給大家解釋下,涉及到一丟丟的數(shù)學(xué)知識大家自行百度下就OK了。
實驗如下圖:
二層交換拓?fù)鋱D
不知道大家有沒有想過這樣一個問題,就是PC-A Ping PC-B的時候它怎么知道192.168.1.2/24是和它是所處在同一個網(wǎng)段?并且ping的時候是走二層還是走三層呢?并且如果走三層他是怎么查路由表的呢?這里其實涉及到一點數(shù)學(xué)知識,相信學(xué)過數(shù)學(xué)的小伙伴都知道與、或、非這三個概念吧(如果不太清楚可以自行搜搜搜下),我們主機(jī)在數(shù)據(jù)交換的過程中就用到了這個概念,PC-A 會先將192.168.1.2和自己網(wǎng)卡192.168.1.1進(jìn)行與運算,在PC-A掩碼范圍內(nèi),與運算結(jié)果為“1”則為同網(wǎng)段,結(jié)果為“0”則為不同段,同段進(jìn)行二層轉(zhuǎn)發(fā),不同段走三層轉(zhuǎn)發(fā)(下次更新介紹),二層轉(zhuǎn)發(fā)如下過程:
(1)主機(jī)PC-A向全網(wǎng)段的其他主機(jī)發(fā)送ARP廣播報文,其S-mac為主機(jī)A 的MAC地址,S-IP為主機(jī)A的IP地址192.168.1.1,D-MAC為全F的廣播地址,D-IP為主機(jī)B的IP地址192.168.1.2,交換機(jī)在收到這個廣播包之后會查本地ARP表,如果能查到IP對應(yīng)的ARP表項(IP+端口)則轉(zhuǎn)發(fā),如果找不到則會在同VLAN對應(yīng)的端口下進(jìn)行泛洪,即所有端口全部轉(zhuǎn)發(fā)出去,并對PC-A的IP和對應(yīng)的端口進(jìn)行ARP表項記錄。
(2)當(dāng)全網(wǎng)通VLAN下的主機(jī)都收到該ARP廣播時,只有主機(jī)PC-B發(fā)現(xiàn)ARP請求報文中的目的IP地址與自己的IP相同,則給予主機(jī)PC-A 發(fā)送ARP應(yīng)答報文,S-MAC為主機(jī)PC-B 的MAC地址,S-IP為主機(jī)PC-B的IP地址192.168.1.2,D-MAC為主機(jī)PC-A的MAC地址,D-IP為主機(jī)PC-A的IP地址192.168.1.1。在此過程中,主機(jī)PC-B將主機(jī)PC-A的MAC地址和主機(jī)PC-A的IP地址寫入自己的ARP表項中,以便之后的二層轉(zhuǎn)發(fā),交換機(jī)在收到此報文后查詢ARP表項轉(zhuǎn)發(fā)給PC-A
(3)主機(jī)PC-A收到主機(jī)PC-B的ARP應(yīng)答報文之后,將主機(jī)PC-B的MAC地址和對應(yīng)的IP地址寫入自己的ARP表項中,以便后續(xù)的二層轉(zhuǎn)發(fā),同時,將IP數(shù)據(jù)包封裝發(fā)送給主機(jī)B。
當(dāng)然有的人也會問泛洪和廣播的區(qū)別,交換機(jī)會發(fā)送廣播報文嗎,這些我們在后續(xù)的文章里在和大家一起討論。