三層交換機(jī)報(bào)文轉(zhuǎn)發(fā)過程
如圖所示,假如主機(jī)A想訪問主機(jī)B,首先主機(jī)A會將自己的IP地址和子網(wǎng)掩碼做與操作,得出網(wǎng)路地址(如:Host-A的IP地址100.1.1.2與自身掩碼255.255.255.0做與操作后,得到的網(wǎng)絡(luò)號是100.1.1.0).然后判斷目的IP地址(即Host-B的IP地址)與自己的網(wǎng)絡(luò)地址是不是在同一個(gè)子網(wǎng).因?yàn)閳D中主機(jī)A和主機(jī)B不在同一子網(wǎng)內(nèi),所以需要進(jìn)行三層轉(zhuǎn)發(fā).
1、主機(jī)A發(fā)送ARP廣播獲取網(wǎng)關(guān)MAC地址
主機(jī)A想訪問主機(jī)B首先要有主機(jī)B的MAC地址,由于主機(jī)A和主機(jī)B不在同一子網(wǎng),所以主機(jī)A首先會向缺省網(wǎng)關(guān)發(fā)送ARP廣播報(bào)文來獲取網(wǎng)關(guān)的MAC地址。ARP報(bào)文格式如下:
2、交換機(jī)形成主機(jī)A的MAC表項(xiàng),并用網(wǎng)關(guān)MAC地址回應(yīng)主機(jī)A的ARP請求
交換機(jī)收到ARP廣播報(bào)文后,首先學(xué)習(xí)ARP報(bào)文Ethernet頭部的源MAC地址,交換機(jī)芯片將自動記錄主機(jī)A的MAC地址(00e0-d26b-8121)、接收該ARP報(bào)文的交換機(jī)接口號(E1/0/0)及此接口所屬的VLAN(VLAN 10)等信息,并形成一條MAC表項(xiàng)放入交換機(jī)MAC表中.同時(shí),交換機(jī)也會通過軟件把主機(jī)A的IP、MAC、上連到交換機(jī)的接口等信息保存到交換機(jī)的硬件轉(zhuǎn)發(fā)表里(三層硬件表項(xiàng),MAC表是沒有IP的)。
由于主機(jī)A發(fā)送的ARP廣播報(bào)文中的目的IP地址(100.1.1.1)就是交換機(jī)上接收該ARP廣播報(bào)文的接口(E1/0/0)所屬VLAN(VLAN 10)的IP地址,所以交換機(jī)將使用vlan10的MAC地址回復(fù)主機(jī)A的ARP請求。ARP回復(fù)報(bào)文如下:
3、主機(jī)A把網(wǎng)關(guān)MAC當(dāng)作主機(jī)B的MAC訪問主機(jī)B
主機(jī)A收到網(wǎng)關(guān)的ARP回應(yīng)報(bào)文后,會把網(wǎng)關(guān)的MAC地址當(dāng)成是主機(jī)B的MAC地址,這樣主機(jī)A發(fā)送數(shù)據(jù)給主機(jī)B時(shí)就會使用網(wǎng)關(guān)MAC作為目的MAC來封裝數(shù)據(jù)偵,偵格式如下:
4、交換機(jī)查找硬件轉(zhuǎn)發(fā)表/路由表進(jìn)行三層轉(zhuǎn)發(fā)
交換機(jī)收到主機(jī)A發(fā)來的數(shù)據(jù)報(bào)文后,仍然會首先學(xué)習(xí)數(shù)據(jù)報(bào)文Ethernet頭部的源MAC地址,然后根據(jù)Ethernet頭部的目的MAC查找交換機(jī)的MAC表,此時(shí)發(fā)現(xiàn)目的MAC地址就是本地VLAN的MAC地址,這種情況下交換機(jī)會把該報(bào)文上送到交換芯片的三層引擎處理。三層引擎將首先查找硬件轉(zhuǎn)發(fā)表。
⑴ 如果硬件轉(zhuǎn)發(fā)表中有匹配項(xiàng),則根據(jù)報(bào)文目的IP地址作相應(yīng)處理:
①、目的IP地址就是本地的IP地址,則交相應(yīng)模塊處理。
②、目的IP是其他設(shè)備IP地址,本地只是轉(zhuǎn)發(fā),則根據(jù)硬件轉(zhuǎn)發(fā)表項(xiàng)使用出接口MAC替換報(bào)文的源MAC地址,用下一跳MAC替換報(bào)文的目的MAC地址,同時(shí)TTL值減1,繼續(xù)轉(zhuǎn)發(fā)。(此處與二層的區(qū)別在于需要對報(bào)文進(jìn)行源、目的MAC進(jìn)行替換)
⑵ 如果不匹配則查找路由表,有匹配項(xiàng)則按照上面(2)中的操作進(jìn)行,同時(shí)把相應(yīng)的目的IP、下一跳MAC、出接口等信息存儲到硬件轉(zhuǎn)發(fā)表項(xiàng)中,下次就不需要查路由表了,這就是所謂的一次路由多次交換。
⑶ 如果路由表也沒有匹配項(xiàng),則丟棄報(bào)文。
此處,由于主機(jī)A數(shù)據(jù)報(bào)文的目的IP是主機(jī)B的地址,并且主機(jī)B和交換機(jī)直連,交換機(jī)的硬件轉(zhuǎn)發(fā)表/路由表已經(jīng)有主機(jī)B的路由表項(xiàng),所以交換機(jī)將主機(jī)A發(fā)來的報(bào)文中的源、目的MAC地址作替換,同時(shí)TTL值減1,然后發(fā)給主機(jī)B。經(jīng)過MAC替換后的報(bào)文格式如下:
這樣主機(jī)A就把數(shù)據(jù)報(bào)文發(fā)到了不同網(wǎng)段的主機(jī)B。同時(shí)交換機(jī)上也保存了關(guān)于主機(jī)A和主機(jī)B的硬件轉(zhuǎn)發(fā)表項(xiàng),以后主機(jī)A和主機(jī)B互訪,以及其他網(wǎng)段主機(jī)訪問主機(jī)A或主機(jī)B交換機(jī)就可以根據(jù)硬件轉(zhuǎn)發(fā)表項(xiàng)直接轉(zhuǎn)發(fā),而不需要查找路由表。