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